diff --git a/.github/workflows/publish-installers.yml b/.github/workflows/publish-installers.yml index b4a66960..e3f7fe85 100644 --- a/.github/workflows/publish-installers.yml +++ b/.github/workflows/publish-installers.yml @@ -100,24 +100,6 @@ jobs: name: Tautulli-${{ matrix.os }}-installer path: Tautulli-${{ matrix.os }}-${{ steps.get_version.outputs.RELEASE_VERSION }}-${{ matrix.arch }}.${{ matrix.ext }} - virus-total: - name: VirusTotal Scan - needs: build-installer - if: needs.build-installer.result == 'success' && !contains(github.event.head_commit.message, '[skip ci]') - runs-on: ubuntu-latest - steps: - - name: Download Installers - if: needs.build-installer.result == 'success' - uses: actions/download-artifact@v4 - - - name: Upload to VirusTotal - uses: crazy-max/ghaction-virustotal@v4 - with: - vt_api_key: ${{ secrets.VT_API_KEY }} - files: | - Tautulli-windows-installer/Tautulli-windows-*-x64.exe - Tautulli-macos-installer/Tautulli-macos-*-universal.pkg - release: name: Release Installers needs: build-installer diff --git a/.github/workflows/submit-winget.yml b/.github/workflows/submit-winget.yml index 5385c1c3..aa1c4dec 100644 --- a/.github/workflows/submit-winget.yml +++ b/.github/workflows/submit-winget.yml @@ -23,17 +23,3 @@ jobs: # getting latest wingetcreate file iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe .\wingetcreate.exe update $wingetPackage -s -v $version -u $installerUrl -t $gitToken - - virus-total: - name: VirusTotal Scan - runs-on: ubuntu-latest - steps: - - name: Upload to VirusTotal - uses: crazy-max/ghaction-virustotal@v4 - with: - vt_api_key: ${{ secrets.VT_API_KEY }} - github_token: ${{ secrets.GHACTIONS_TOKEN }} - update_release_body: true - files: | - .exe$ - .pkg$ diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cfe9f2c..26dda362 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,64 +1,5 @@ # Changelog -## v2.15.2 (2025-04-12) - -* Activity: - * New: Added link to library by clicking media type icon. - * New: Added stream count to tab title on homepage. (#2517) -* History: - * Fix: Check stream watched status before stream stopped status. (#2506) -* Notifications: - * Fix: ntfy notifications failing to send if provider link is blank. - * Fix: Check Pushover notification attachment is under 5MB limit. (#2396) - * Fix: Track URLs redirecting to the correct media page. (#2513) - * New: Added audio profile notification parameters. - * New: Added PATCH method for Webhook notifications. -* Graphs: - * New: Added Total line to daily streams graph. (Thanks @zdimension) (#2497) -* UI: - * Fix: Do not redirect API requests to the login page. (#2490) - * Change: Swap source and stream columns in stream info modal. -* Other: - * Fix: Various typos. (Thanks @luzpaz) (#2520) - * Fix: CherryPy CORS response header not being set correctly. (#2279) - - -## v2.15.1 (2025-01-11) - -* Activity: - * Fix: Detection of HDR transcodes. (Thanks @cdecker08) (#2412, #2466) -* Newsletters: - * Fix: Disable basic authentication for /newsletter and /image endpoints. (#2472) -* Exporter: - * New: Added logos to season and episode exports. -* Other: - * Fix: Docker container https health check. - - -## v2.15.0 (2024-11-24) - -* Notes: - * Support for Python 3.8 has been dropped. The minimum Python version is now 3.9. -* Notifications: - * New: Allow Telegram blockquote and tg-emoji HTML tags. (Thanks @MythodeaLoL) (#2427) - * New: Added Plex slug and Plex Watch URL notification parameters. (#2420) - * Change: Update OneSignal API calls to use the new API endpoint for Tautulli Remote App notifications. -* Newsletters: - * Fix: Dumping custom dates in raw newsletter json. -* History: - * Fix: Unable to fix match for artists. (#2429) -* Exporter: - * New: Added movie and episode hasVoiceActivity attribute to exporter fields. - * New: Added subtitle canAutoSync attribute to exporter fields. - * New: Added logos to the exporter fields. -* UI: - * New: Add friendly name to the top bar of config modals. (Thanks @peagravel) (#2432) -* API: - * New: Added plex slugs to metadata in the get_metadata API command. -* Other: - * Fix: Tautulli failing to start with Python 3.13. (#2426) - - ## v2.14.6 (2024-10-12) * Newsletters: diff --git a/Dockerfile b/Dockerfile index 8d8c324b..7a52841f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,4 +25,4 @@ CMD [ "python", "Tautulli.py", "--datadir", "/config" ] ENTRYPOINT [ "./start.sh" ] EXPOSE 8181 -HEALTHCHECK --start-period=90s CMD curl -ILfks https://localhost:8181/status > /dev/null || curl -ILfs http://localhost:8181/status > /dev/null || exit 1 +HEALTHCHECK --start-period=90s CMD curl -ILfSs http://localhost:8181/status > /dev/null || curl -ILfkSs https://localhost:8181/status > /dev/null || exit 1 diff --git a/README.md b/README.md index 37829290..a6a3e4e4 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ and [PlexWatchWeb](https://github.com/ecleese/plexWatchWeb). [![Docker Stars][badge-docker-stars]][DockerHub] [![Downloads][badge-downloads]][Releases Latest] -[badge-python]: https://img.shields.io/badge/python->=3.9-blue?style=flat-square +[badge-python]: https://img.shields.io/badge/python->=3.8-blue?style=flat-square [badge-docker-pulls]: https://img.shields.io/docker/pulls/tautulli/tautulli?style=flat-square [badge-docker-stars]: https://img.shields.io/docker/stars/tautulli/tautulli?style=flat-square [badge-downloads]: https://img.shields.io/github/downloads/Tautulli/Tautulli/total?style=flat-square @@ -129,7 +129,7 @@ This is free software under the GPL v3 open source license. Feel free to do with but any modification must be open sourced. A copy of the license is included. This software includes Highsoft software libraries which you may freely distribute for -non-commercial use. Commercial users must licence this software, for more information visit +non-commercial use. Commerical users must licence this software, for more information visit https://shop.highsoft.com/faq/non-commercial#non-commercial-redistribution. diff --git a/Tautulli.py b/Tautulli.py index b3cf4736..200cd39d 100755 --- a/Tautulli.py +++ b/Tautulli.py @@ -129,7 +129,7 @@ def main(): if args.quiet: plexpy.QUIET = True - # Do an initial setup of the logger. + # Do an intial setup of the logger. # Require verbose for pre-initilization to see critical errors logger.initLogger(console=not plexpy.QUIET, log_dir=False, verbose=True) diff --git a/data/interfaces/default/css/tautulli.css b/data/interfaces/default/css/tautulli.css index 5cb5d6bf..2835488d 100644 --- a/data/interfaces/default/css/tautulli.css +++ b/data/interfaces/default/css/tautulli.css @@ -4325,10 +4325,6 @@ a:hover .overlay-refresh-image:hover { .stream-info tr:nth-child(even) td { background-color: rgba(255,255,255,0.010); } -.stream-info td:nth-child(3), -.stream-info th:nth-child(3) { - width: 25px; -} .number-input { margin: 0 !important; width: 55px !important; diff --git a/data/interfaces/default/current_activity_instance.html b/data/interfaces/default/current_activity_instance.html index 64d6f25e..fcc1b592 100644 --- a/data/interfaces/default/current_activity_instance.html +++ b/data/interfaces/default/current_activity_instance.html @@ -74,7 +74,6 @@ DOCUMENTATION :: END parent_href = page('info', data['parent_rating_key']) grandparent_href = page('info', data['grandparent_rating_key']) user_href = page('user', data['user_id']) if data['user_id'] else '#' - library_href = page('library', data['section_id']) if data['section_id'] else '#' season = short_season(data['parent_title']) %>
% if data['live']:
- - -   +  
% elif data['channel_stream'] == 0:
- - % if data['media_type'] == 'movie': - - % elif data['media_type'] == 'episode': - - % elif data['media_type'] == 'track': - - % elif data['media_type'] == 'photo': - - % elif data['media_type'] == 'clip': - - % else: - - % endif -   + % if data['media_type'] == 'movie': +   + % elif data['media_type'] == 'episode': +   + % elif data['media_type'] == 'track': +   + % elif data['media_type'] == 'photo': +   + % elif data['media_type'] == 'clip': +   + % endif
% else:
diff --git a/data/interfaces/default/export_modal.html b/data/interfaces/default/export_modal.html index 390ee268..b91d31f1 100644 --- a/data/interfaces/default/export_modal.html +++ b/data/interfaces/default/export_modal.html @@ -20,7 +20,6 @@ DOCUMENTATION :: END export = exporter.Export() thumb_media_types = ', '.join([export.PLURAL_MEDIA_TYPES[k] for k, v in export.MEDIA_TYPES.items() if v[0]]) art_media_types = ', '.join([export.PLURAL_MEDIA_TYPES[k] for k, v in export.MEDIA_TYPES.items() if v[1]]) - logo_media_types = ', '.join([export.PLURAL_MEDIA_TYPES[k] for k, v in export.MEDIA_TYPES.items() if v[2]]) %>