From 36aa2dd3a315355bf0adfdcd7c65bbddc3a38d2f Mon Sep 17 00:00:00 2001 From: blacktwin Date: Thu, 4 Jun 2020 21:20:54 -0400 Subject: [PATCH 1/5] address issue found when running with python3 --- killstream/kill_stream.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/killstream/kill_stream.py b/killstream/kill_stream.py index 0f6f56f..d23a874 100644 --- a/killstream/kill_stream.py +++ b/killstream/kill_stream.py @@ -102,7 +102,10 @@ def hex_to_int(value): def arg_decoding(arg): """Decode args, encode UTF-8""" - return arg.decode(TAUTULLI_ENCODING).encode('UTF-8') + if sys.version_info[0] < 3: + return arg.decode(TAUTULLI_ENCODING).encode('UTF-8') + else: + return arg def debug_dump_vars(): From 5bf7925585739193c6a6e11cb41de039889bcb1f Mon Sep 17 00:00:00 2001 From: blacktwin Date: Sun, 14 Jun 2020 15:48:20 -0400 Subject: [PATCH 2/5] #226 add check for user's existing shares. If no shares, print out "user has no shares" thanks @RXWatcher --- utility/plex_api_share.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utility/plex_api_share.py b/utility/plex_api_share.py index 143b533..f09a09e 100644 --- a/utility/plex_api_share.py +++ b/utility/plex_api_share.py @@ -457,8 +457,10 @@ if __name__ == "__main__": kill_session(user, kill) time.sleep(3) unshare(user, sections_lst) - elif opts.unshare: + elif opts.unshare and user_shares_lst: unshare(user, sections_lst) + elif opts.unshare and not user_shares_lst: + print('{} has no libraries shared...'.format(user)) elif kill: kill_session(user, kill) From 30dbccda774c7382608cc3a6be8eec2003b893f0 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sat, 4 Jul 2020 13:08:59 -0700 Subject: [PATCH 3/5] Run futurize --stage1 --- fun/plexapi_haiku.py | 1 + killstream/kill_else_if_buffering.py | 1 + killstream/kill_stream.py | 1 + killstream/limiterr.py | 1 + maps/ips_to_maps.py | 1 + notify/find_unwatched_notify.py | 1 + notify/notify_delay.py | 1 + notify/notify_fav_tv_all_movie.py | 1 + notify/notify_recently_aired.py | 1 + notify/notify_user_favorites.py | 1 + notify/notify_user_newip.py | 1 + reporting/added_to_plex.py | 5 +++-- reporting/check_plex_log.py | 1 + reporting/library_play_days.py | 1 + reporting/plays_by_library.py | 1 + reporting/plex_netflix_check.py | 1 + reporting/server_compare.py | 1 + reporting/watched_percentages.py | 5 +++-- reporting/weekly_stats_reporting.py | 1 + utility/add_label_recently_added.py | 1 + utility/bypass_auth_name.py | 1 + utility/delete_watched_TV.py | 1 + utility/enable_disable_all_guest_access.py | 1 + utility/find_plex_meta.py | 1 + utility/find_unwatched.py | 7 ++++--- utility/get_serial_transcoders.py | 1 + utility/grab_gdrive_media.py | 1 + utility/mark_multiepisode_watched.py | 1 + utility/media_manager.py | 3 ++- utility/off_deck.py | 1 + utility/plex_api_invite.py | 1 + utility/plex_api_parental_control.py | 1 + utility/plex_api_poster_pull.py | 1 + utility/plex_api_share.py | 1 + utility/plex_api_show_settings.py | 1 + utility/plex_dance.py | 1 + utility/plex_imgur_dl.py | 1 + utility/plex_popular_playlist.py | 1 + utility/purge_removed_plex_friends.py | 1 + utility/recently_added_collection.py | 1 + utility/refresh_next_episode.py | 1 + utility/remove_inactive_users.py | 1 + utility/remove_watched_movies.py | 1 + utility/rename_seasons.py | 1 + utility/stream_limiter_ban_email.py | 1 + utility/sync_watch_status.py | 1 + utility/tautulli_friendly_name_to_ombi_alias_sync.py | 1 + 47 files changed, 55 insertions(+), 8 deletions(-) diff --git a/fun/plexapi_haiku.py b/fun/plexapi_haiku.py index 4097b71..3b7c4d2 100644 --- a/fun/plexapi_haiku.py +++ b/fun/plexapi_haiku.py @@ -4,6 +4,7 @@ """ https://gist.github.com/blacktwin/4ccb79c7d01a95176b8e88bf4890cd2b """ +from __future__ import print_function from plexapi.server import PlexServer import random diff --git a/killstream/kill_else_if_buffering.py b/killstream/kill_else_if_buffering.py index b469c38..14e51db 100644 --- a/killstream/kill_else_if_buffering.py +++ b/killstream/kill_else_if_buffering.py @@ -15,6 +15,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: Buffer Warnings: kill_else_if_buffering.py """ +from __future__ import print_function import requests from operator import itemgetter diff --git a/killstream/kill_stream.py b/killstream/kill_stream.py index d23a874..59a0442 100644 --- a/killstream/kill_stream.py +++ b/killstream/kill_stream.py @@ -45,6 +45,7 @@ Tautulli > Settings > Notification Agents > New Script > Script Arguments: Save Close """ +from __future__ import print_function import os diff --git a/killstream/limiterr.py b/killstream/limiterr.py index c3fdc76..5e16754 100644 --- a/killstream/limiterr.py +++ b/killstream/limiterr.py @@ -45,6 +45,7 @@ Taultulli > Settings > Notification Agents > New Script > Script Arguments: Save Close """ +from __future__ import print_function import requests import argparse diff --git a/maps/ips_to_maps.py b/maps/ips_to_maps.py index a78d160..1109f55 100644 --- a/maps/ips_to_maps.py +++ b/maps/ips_to_maps.py @@ -26,6 +26,7 @@ optional arguments: """ +from __future__ import print_function import requests import sys diff --git a/notify/find_unwatched_notify.py b/notify/find_unwatched_notify.py index d21cb81..32ab1dd 100644 --- a/notify/find_unwatched_notify.py +++ b/notify/find_unwatched_notify.py @@ -6,6 +6,7 @@ Find what was added TFRAME ago and not watched and notify admin using Tautulli. TAUTULLI_URL + delete_media_info_cache?section_id={section_id} """ +from __future__ import print_function import requests import sys diff --git a/notify/notify_delay.py b/notify/notify_delay.py index b2bbecb..9475b01 100644 --- a/notify/notify_delay.py +++ b/notify/notify_delay.py @@ -16,6 +16,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: Tautulli Settings > Notification Agents > Scripts (Gear) > Script Timeout: 0 to disable or set to > 180 """ +from __future__ import print_function import requests import sys diff --git a/notify/notify_fav_tv_all_movie.py b/notify/notify_fav_tv_all_movie.py index 5e96732..5c4a247 100644 --- a/notify/notify_fav_tv_all_movie.py +++ b/notify/notify_fav_tv_all_movie.py @@ -17,6 +17,7 @@ Tautulli > Settings > Notification Agents > Scripts > Bell icon: Tautulli > Settings > Notification Agents > Scripts > Gear icon: Recently Added: notify_fav_tv_all_movie.py """ +from __future__ import print_function import requests from email.mime.text import MIMEText diff --git a/notify/notify_recently_aired.py b/notify/notify_recently_aired.py index 821eff6..5c7c810 100644 --- a/notify/notify_recently_aired.py +++ b/notify/notify_recently_aired.py @@ -43,6 +43,7 @@ Note: The notifier_id in the edit section will need to be this other notification agent you intend to use. It does not have to be an active notification agent, just setup. """ +from __future__ import print_function import os import sys import requests diff --git a/notify/notify_user_favorites.py b/notify/notify_user_favorites.py index 165fcc6..543c0c4 100644 --- a/notify/notify_user_favorites.py +++ b/notify/notify_user_favorites.py @@ -16,6 +16,7 @@ Tautulli > Settings > Notification Agents > Scripts > Bell icon: Tautulli > Settings > Notification Agents > Scripts > Gear icon: Recently Added: notify_user_favorite.py """ +from __future__ import print_function import requests from email.mime.text import MIMEText diff --git a/notify/notify_user_newip.py b/notify/notify_user_newip.py index c88a90d..74586ff 100644 --- a/notify/notify_user_newip.py +++ b/notify/notify_user_newip.py @@ -9,6 +9,7 @@ Set api_sql = 1 in the config file. Restart Tautulli. Place in Playback Start """ +from __future__ import print_function import argparse import requests import sys diff --git a/reporting/added_to_plex.py b/reporting/added_to_plex.py index 822067a..3e7c7e3 100644 --- a/reporting/added_to_plex.py +++ b/reporting/added_to_plex.py @@ -7,6 +7,7 @@ Find when media was added between STARTFRAME and ENDFRAME to Plex through Tautul Some Exceptions have been commented out to supress what is printed. Uncomment Exceptions if you run into problem and need to investigate. """ +from __future__ import print_function import requests import sys @@ -164,10 +165,10 @@ for i in glt: # Find movie rating_key. show_lst += [int(x.rating_key)] except Exception as e: - print("Rating_key failed: {e}").format(e=e) + print(("Rating_key failed: {e}").format(e=e)) except Exception as e: - print("Library media info failed: {e}").format(e=e) + print(("Library media info failed: {e}").format(e=e)) # All rating_keys for episodes and movies. # Reserving order will put newest rating_keys first diff --git a/reporting/check_plex_log.py b/reporting/check_plex_log.py index de8f168..4c8eb3e 100644 --- a/reporting/check_plex_log.py +++ b/reporting/check_plex_log.py @@ -6,6 +6,7 @@ Run script by itself. Will look for WARN code followed by /library/metadata/ str This is find files that are corrupt or having playback issues. I corrupted a file to test. """ +from __future__ import print_function import requests import sys diff --git a/reporting/library_play_days.py b/reporting/library_play_days.py index c3fc4f3..5b10bc0 100644 --- a/reporting/library_play_days.py +++ b/reporting/library_play_days.py @@ -24,6 +24,7 @@ Usage: Plays: 56 : 754 : 2899 """ +from __future__ import print_function import requests import sys diff --git a/reporting/plays_by_library.py b/reporting/plays_by_library.py index fba72d9..ce2a28b 100644 --- a/reporting/plays_by_library.py +++ b/reporting/plays_by_library.py @@ -17,6 +17,7 @@ Usage: Movies - Plays: 379 """ +from __future__ import print_function import requests import sys diff --git a/reporting/plex_netflix_check.py b/reporting/plex_netflix_check.py index d5bd0df..0c588ba 100644 --- a/reporting/plex_netflix_check.py +++ b/reporting/plex_netflix_check.py @@ -26,6 +26,7 @@ optional arguments: If title is matched in both, Amazon is first then Netflix. """ +from __future__ import print_function import requests import argparse diff --git a/reporting/server_compare.py b/reporting/server_compare.py index d31d3fd..d031f06 100644 --- a/reporting/server_compare.py +++ b/reporting/server_compare.py @@ -17,6 +17,7 @@ Requires: requests, plexapi python find_diff_other_servers.py --server "My Plex Server" --server PlexServer2 --server "Steven Plex" """ +from __future__ import print_function import argparse import requests diff --git a/reporting/watched_percentages.py b/reporting/watched_percentages.py index f9507eb..795d58d 100644 --- a/reporting/watched_percentages.py +++ b/reporting/watched_percentages.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +from __future__ import print_function import time import argparse from plexapi.myplex import MyPlexAccount @@ -292,7 +293,7 @@ if __name__ == '__main__': else: user_dict[user] = {library: section_watched_total} except Exception as e: - print(user, e) + print((user, e)) if user_dict.get(user): user_dict[user].update({library: 0}) else: @@ -341,7 +342,7 @@ if __name__ == '__main__': start += count except Exception as e: - print(user, e) + print((user, e)) section_watched_total = len(list(set(section_watched_lst))) percent_watched = 100 * (float(section_watched_total) / float(section_total)) diff --git a/reporting/weekly_stats_reporting.py b/reporting/weekly_stats_reporting.py index f007417..5ebd2b4 100644 --- a/reporting/weekly_stats_reporting.py +++ b/reporting/weekly_stats_reporting.py @@ -11,6 +11,7 @@ User stats display username and hour, minutes, and seconds of view time Tautulli Settings > Extra Settings > Check - Calculate Total File Sizes [experimental] ...... wait """ +from __future__ import print_function from plexapi.server import CONFIG from datetime import datetime, timedelta, date from requests import Session diff --git a/utility/add_label_recently_added.py b/utility/add_label_recently_added.py index e3bfad7..b070f16 100644 --- a/utility/add_label_recently_added.py +++ b/utility/add_label_recently_added.py @@ -17,6 +17,7 @@ # * Recently Added: # --title {title} --section_id {section_id} --media_type {media_type} --rating_key {rating_key} --parent_rating_key {parent_rating_key} --grandparent_rating_key {grandparent_rating_key} --label "Label" +from __future__ import print_function import argparse import os import requests diff --git a/utility/bypass_auth_name.py b/utility/bypass_auth_name.py index 5c0c4af..9e077e1 100644 --- a/utility/bypass_auth_name.py +++ b/utility/bypass_auth_name.py @@ -16,6 +16,7 @@ optional arguments: List of IP addresses is cleared before adding new IPs """ +from __future__ import print_function import requests import argparse diff --git a/utility/delete_watched_TV.py b/utility/delete_watched_TV.py index b5f5c09..72deb03 100644 --- a/utility/delete_watched_TV.py +++ b/utility/delete_watched_TV.py @@ -7,6 +7,7 @@ If all users in list have watched an episode of listed show, then delete episode Add deletion via Plex. """ +from __future__ import print_function import requests import sys diff --git a/utility/enable_disable_all_guest_access.py b/utility/enable_disable_all_guest_access.py index 42c4511..24b4ffc 100644 --- a/utility/enable_disable_all_guest_access.py +++ b/utility/enable_disable_all_guest_access.py @@ -6,6 +6,7 @@ Author: DirtyCajunRice Requires: requests, python3.6+ """ +from __future__ import print_function from requests import Session from json.decoder import JSONDecodeError diff --git a/utility/find_plex_meta.py b/utility/find_plex_meta.py index de7dba1..7e163c1 100644 --- a/utility/find_plex_meta.py +++ b/utility/find_plex_meta.py @@ -10,6 +10,7 @@ or find_plex_meta.py -s adventure -m movie pulls all movie titles with adventure in the title ''' +from __future__ import print_function from plexapi.server import PlexServer, CONFIG diff --git a/utility/find_unwatched.py b/utility/find_unwatched.py index 9cb9743..030ad05 100644 --- a/utility/find_unwatched.py +++ b/utility/find_unwatched.py @@ -4,6 +4,7 @@ """ Find what was added TFRAME ago and not watched using Tautulli. """ +from __future__ import print_function import requests import sys @@ -148,10 +149,10 @@ for i in glt: # Find movie rating_key. show_lst += [int(x.rating_key)] except Exception as e: - print("Rating_key failed: {e}").format(e=e) + print(("Rating_key failed: {e}").format(e=e)) except Exception as e: - print("Library media info failed: {e}").format(e=e) + print(("Library media info failed: {e}").format(e=e)) # Remove reverse sort if you want the oldest keys first. for i in sorted(show_lst, reverse=True): @@ -169,7 +170,7 @@ for i in sorted(show_lst, reverse=True): path_lst += [x.file] except Exception as e: - print("Metadata failed. Likely end of range: {e}").format(e=e) + print(("Metadata failed. Likely end of range: {e}").format(e=e)) delete_files(path_lst) diff --git a/utility/get_serial_transcoders.py b/utility/get_serial_transcoders.py index da4baba..81f7ec2 100644 --- a/utility/get_serial_transcoders.py +++ b/utility/get_serial_transcoders.py @@ -6,6 +6,7 @@ Author: DirtyCajunRice Requires: requests, plexapi, python3.6+ """ +from __future__ import print_function from requests import Session from plexapi.server import CONFIG from datetime import date, timedelta diff --git a/utility/grab_gdrive_media.py b/utility/grab_gdrive_media.py index 612c32c..5cc663f 100644 --- a/utility/grab_gdrive_media.py +++ b/utility/grab_gdrive_media.py @@ -4,6 +4,7 @@ """ https://gist.github.com/blacktwin/f435aa0ccd498b0840d2407d599bf31d """ +from __future__ import print_function import os import httplib2 diff --git a/utility/mark_multiepisode_watched.py b/utility/mark_multiepisode_watched.py index 8878a8d..ea6c6c2 100644 --- a/utility/mark_multiepisode_watched.py +++ b/utility/mark_multiepisode_watched.py @@ -15,6 +15,7 @@ # * Watched: # --rating_key {rating_key} --filename {filename} +from __future__ import print_function import argparse import os from plexapi.server import PlexServer diff --git a/utility/media_manager.py b/utility/media_manager.py index c6e030c..808f615 100644 --- a/utility/media_manager.py +++ b/utility/media_manager.py @@ -23,6 +23,7 @@ Enabling Scripts in Tautulli: python media_manager.py --libraries "TV Shows" --select watched --users User1 User2 """ +from __future__ import print_function import argparse import datetime import time @@ -591,7 +592,7 @@ if __name__ == '__main__': if opts.select == "watched": if libraries: for user in user_lst: - print("Finding watched items from user: {}",format(user.name)) + print(("Finding watched items from user: {}",format(user.name))) for _library in libraries: print("Checking library: '{}' watch statuses...".format(_library.title)) watched_work(user=user, sectionID=_library.key) diff --git a/utility/off_deck.py b/utility/off_deck.py index fa08715..240c984 100644 --- a/utility/off_deck.py +++ b/utility/off_deck.py @@ -44,6 +44,7 @@ original. * For episodes of show not watched the view count will be set to 1. """ +from __future__ import print_function import requests import argparse diff --git a/utility/plex_api_invite.py b/utility/plex_api_invite.py index c30d8db..b360e02 100644 --- a/utility/plex_api_invite.py +++ b/utility/plex_api_invite.py @@ -36,6 +36,7 @@ Usage: - Share Movie library with USER but restrict them to only G and PG-13 titles. """ +from __future__ import print_function from plexapi.server import PlexServer, CONFIG import argparse diff --git a/utility/plex_api_parental_control.py b/utility/plex_api_parental_control.py index b460510..21eab66 100644 --- a/utility/plex_api_parental_control.py +++ b/utility/plex_api_parental_control.py @@ -36,6 +36,7 @@ Usage: - USER is still exists as a Friend or Home User """ +from __future__ import print_function import argparse diff --git a/utility/plex_api_poster_pull.py b/utility/plex_api_poster_pull.py index 82bef61..47f3895 100644 --- a/utility/plex_api_poster_pull.py +++ b/utility/plex_api_poster_pull.py @@ -13,6 +13,7 @@ Requires: plexapi python plex_api_poster_pull.py """ +from __future__ import print_function from plexapi.server import PlexServer, CONFIG import requests diff --git a/utility/plex_api_share.py b/utility/plex_api_share.py index f09a09e..4f4759a 100644 --- a/utility/plex_api_share.py +++ b/utility/plex_api_share.py @@ -98,6 +98,7 @@ Usage: - Shared [all libraries but Movies] with USER. """ +from __future__ import print_function from plexapi.server import PlexServer, CONFIG import time diff --git a/utility/plex_api_show_settings.py b/utility/plex_api_show_settings.py index 513398e..2220500 100644 --- a/utility/plex_api_show_settings.py +++ b/utility/plex_api_show_settings.py @@ -24,6 +24,7 @@ python plex_api_show_settings.py --libraries "TV Shows" --watched 7 python plex_api_show_settings.py --libraries "TV Shows" --unwatched -7 - Keep Episodesfrom the past 7 days """ +from __future__ import print_function import argparse import requests from plexapi.server import PlexServer, CONFIG diff --git a/utility/plex_dance.py b/utility/plex_dance.py index 720afe8..2916421 100644 --- a/utility/plex_dance.py +++ b/utility/plex_dance.py @@ -45,6 +45,7 @@ Script Dance moves Please use this script to update your Tautulli database with the new rating key https://gist.github.com/JonnyWong16/f554f407832076919dc6864a78432db2 """ +from __future__ import print_function from plexapi.server import PlexServer from plexapi.server import CONFIG diff --git a/utility/plex_imgur_dl.py b/utility/plex_imgur_dl.py index 47f4a94..6b59318 100644 --- a/utility/plex_imgur_dl.py +++ b/utility/plex_imgur_dl.py @@ -8,6 +8,7 @@ Pull poster images from Imgur and places them inside Shows root folder. Skips download if showname.jpg exists or if show does not exist. """ +from __future__ import print_function import requests import urllib diff --git a/utility/plex_popular_playlist.py b/utility/plex_popular_playlist.py index a2132b5..2506847 100644 --- a/utility/plex_popular_playlist.py +++ b/utility/plex_popular_playlist.py @@ -16,6 +16,7 @@ optional arguments: * LIBRARY_EXCLUDE are excluded from libraries choice. """ +from __future__ import print_function import requests diff --git a/utility/purge_removed_plex_friends.py b/utility/purge_removed_plex_friends.py index 23ab4e5..e00e96d 100644 --- a/utility/purge_removed_plex_friends.py +++ b/utility/purge_removed_plex_friends.py @@ -6,6 +6,7 @@ Author: DirtyCajunRice Requires: requests, plexapi, python3.6+ """ +from __future__ import print_function from requests import Session from plexapi.server import CONFIG diff --git a/utility/recently_added_collection.py b/utility/recently_added_collection.py index 5b429e7..92fc1d3 100644 --- a/utility/recently_added_collection.py +++ b/utility/recently_added_collection.py @@ -14,6 +14,7 @@ # * Recently Added: # --rating_key {rating_key} --collection "New Releases" --days 180 +from __future__ import print_function import argparse import os from datetime import datetime, timedelta diff --git a/utility/refresh_next_episode.py b/utility/refresh_next_episode.py index db169e8..d090a71 100644 --- a/utility/refresh_next_episode.py +++ b/utility/refresh_next_episode.py @@ -15,6 +15,7 @@ Check Tautulli's Watched Percent in Tautulli > Settings > General {show_name} {episode_num00} {season_num00} """ +from __future__ import print_function import requests import sys diff --git a/utility/remove_inactive_users.py b/utility/remove_inactive_users.py index 7576acb..b623e8f 100644 --- a/utility/remove_inactive_users.py +++ b/utility/remove_inactive_users.py @@ -7,6 +7,7 @@ Just run. Comment out `remove_friend(username)` and `unshare(username)` to test. """ +from __future__ import print_function from sys import exit from requests import Session from datetime import datetime diff --git a/utility/remove_watched_movies.py b/utility/remove_watched_movies.py index fd99190..11e3f32 100644 --- a/utility/remove_watched_movies.py +++ b/utility/remove_watched_movies.py @@ -5,6 +5,7 @@ Deletion is prompted """ +from __future__ import print_function import requests import sys diff --git a/utility/rename_seasons.py b/utility/rename_seasons.py index 7747044..c8d9891 100644 --- a/utility/rename_seasons.py +++ b/utility/rename_seasons.py @@ -5,6 +5,7 @@ # Author: /u/SwiftPanda16 # Requires: plexapi +from __future__ import print_function from plexapi.server import PlexServer diff --git a/utility/stream_limiter_ban_email.py b/utility/stream_limiter_ban_email.py index 1eccc2d..b3c36e5 100644 --- a/utility/stream_limiter_ban_email.py +++ b/utility/stream_limiter_ban_email.py @@ -49,6 +49,7 @@ Clear user history for banned video to remove violation counts and run manually Concurrent stream count is the trigger. Trigger can be anything you want. """ +from __future__ import print_function import requests diff --git a/utility/sync_watch_status.py b/utility/sync_watch_status.py index bdeee41..052a7e9 100644 --- a/utility/sync_watch_status.py +++ b/utility/sync_watch_status.py @@ -55,6 +55,7 @@ Taultulli > Settings > Notification Agents > New Script > Script Arguments: on selected servers. **Rating key must be a movie or episode. Shows and Seasons not support.... yet. """ +from __future__ import print_function import argparse from plexapi.myplex import MyPlexAccount from plexapi.server import PlexServer diff --git a/utility/tautulli_friendly_name_to_ombi_alias_sync.py b/utility/tautulli_friendly_name_to_ombi_alias_sync.py index b5c3de7..e3a0b6c 100644 --- a/utility/tautulli_friendly_name_to_ombi_alias_sync.py +++ b/utility/tautulli_friendly_name_to_ombi_alias_sync.py @@ -6,6 +6,7 @@ Author: DirtyCajunRice Requires: requests, python3.6+ """ +from __future__ import print_function from requests import Session from plexapi.server import CONFIG from urllib3 import disable_warnings From dc6507ffed067c177a8a5bd7bae5d85d71a18121 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sat, 4 Jul 2020 13:23:47 -0700 Subject: [PATCH 4/5] Run futurize --stage2 --- fun/playlist_manager.py | 1 + killstream/kill_else_if_buffering.py | 9 ++++++--- killstream/kill_stream.py | 8 +++++--- killstream/limiterr.py | 1 + maps/ips_to_maps.py | 10 +++++++--- notify/find_unwatched_notify.py | 2 ++ notify/notify_delay.py | 4 +++- notify/notify_fav_tv_all_movie.py | 3 ++- notify/notify_newip.py | 1 + notify/notify_user_favorites.py | 1 + notify/notify_user_newip.py | 1 + reporting/added_to_plex.py | 2 ++ reporting/check_play.py | 1 + reporting/check_plex_log.py | 1 + reporting/library_play_days.py | 1 + reporting/plex_netflix_check.py | 1 + reporting/userplays_weekly_reporting.py | 1 + reporting/watched_percentages.py | 7 ++++--- reporting/weekly_stats_reporting.py | 6 ++++-- utility/delete_watched_TV.py | 1 + utility/find_unwatched.py | 5 ++++- utility/get_serial_transcoders.py | 4 +++- utility/grab_gdrive_media.py | 3 ++- utility/mark_multiepisode_watched.py | 1 + utility/media_manager.py | 5 +++-- utility/off_deck.py | 1 + utility/plex_api_poster_pull.py | 6 ++++-- utility/plex_imgur_dl.py | 7 +++++-- utility/plex_theme_songs.py | 6 ++++-- utility/remove_watched_movies.py | 4 +++- utility/stream_limiter_ban_email.py | 2 ++ utility/sync_watch_status.py | 7 ++++--- 32 files changed, 82 insertions(+), 31 deletions(-) diff --git a/fun/playlist_manager.py b/fun/playlist_manager.py index bc21980..8745746 100644 --- a/fun/playlist_manager.py +++ b/fun/playlist_manager.py @@ -99,6 +99,7 @@ optional arguments: """ +from builtins import str import sys import os import random diff --git a/killstream/kill_else_if_buffering.py b/killstream/kill_else_if_buffering.py index 14e51db..09bf083 100644 --- a/killstream/kill_else_if_buffering.py +++ b/killstream/kill_else_if_buffering.py @@ -16,7 +16,10 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: """ from __future__ import print_function +from __future__ import division +from builtins import str +from past.utils import old_div import requests from operator import itemgetter import unicodedata @@ -44,7 +47,7 @@ def kill_session(sess_key, message): # Check for users stream username = session.usernames[0] if session.sessionKey == sess_key: - title = unicode(session.grandparentTitle + ' - ' if session.type == 'episode' else '') + session.title + title = str(session.grandparentTitle + ' - ' if session.type == 'episode' else '') + session.title title = unicodedata.normalize('NFKD', title).encode('ascii', 'ignore').translate(None, "'") session.stop(reason=message) print('Terminated {user}\'s stream of {title} to prioritize admin stream.'.format(user=username, @@ -68,8 +71,8 @@ def main(): if trans_dec == 'transcode' and username not in ADMIN_USER: sess_key = session.sessionKey percent_comp = int((float(session.viewOffset) / float(session.duration)) * 100) - time_to_comp = int(int(session.duration) - int(session.viewOffset)) / 1000 / 60 - title = unicode(session.grandparentTitle + ' - ' if session.type == 'episode' else '') + session.title + time_to_comp = old_div(old_div(int(int(session.duration) - int(session.viewOffset)), 1000), 60) + title = str(session.grandparentTitle + ' - ' if session.type == 'episode' else '') + session.title title = unicodedata.normalize('NFKD', title).encode('ascii', 'ignore').translate(None, "'") add_to_dictlist(user_dict, username, [sess_key, percent_comp, title, username, time_to_comp]) diff --git a/killstream/kill_stream.py b/killstream/kill_stream.py index 59a0442..f99324d 100644 --- a/killstream/kill_stream.py +++ b/killstream/kill_stream.py @@ -48,6 +48,8 @@ Tautulli > Settings > Notification Agents > New Script > Script Arguments: from __future__ import print_function +from builtins import object +from builtins import str import os import sys import json @@ -236,7 +238,7 @@ def basic_notify(notifier_id, session_id, username=None, message=None, stream=No notification.send(SUBJECT_TEXT, body) -class Tautulli: +class Tautulli(object): def __init__(self, url, apikey, verify_ssl=False, debug=None): self.url = url self.apikey = apikey @@ -320,7 +322,7 @@ class Tautulli: return self._call_api('terminate_session', payload) -class Stream: +class Stream(object): def __init__(self, session_id=None, user_id=None, username=None, tautulli=None, session=None): self.state = None self.ip_address = None @@ -406,7 +408,7 @@ class Stream: return False -class Notification: +class Notification(object): def __init__(self, notifier_id, subject, body, tautulli, stream): self.notifier_id = notifier_id self.subject = subject diff --git a/killstream/limiterr.py b/killstream/limiterr.py index 5e16754..4eb4ba5 100644 --- a/killstream/limiterr.py +++ b/killstream/limiterr.py @@ -47,6 +47,7 @@ Taultulli > Settings > Notification Agents > New Script > Script Arguments: """ from __future__ import print_function +from builtins import range import requests import argparse from datetime import datetime, timedelta diff --git a/maps/ips_to_maps.py b/maps/ips_to_maps.py index 1109f55..9e11bb3 100644 --- a/maps/ips_to_maps.py +++ b/maps/ips_to_maps.py @@ -28,6 +28,10 @@ optional arguments: """ from __future__ import print_function +from builtins import zip +from builtins import str +from builtins import range +from builtins import object import requests import sys import json @@ -213,7 +217,7 @@ def get_geo_dict(length, users): def get_geojson_dict(user_locations): locs = [] - for username, locations in user_locations.iteritems(): + for username, locations in user_locations.items(): for location in locations: try: locs.append({ @@ -349,9 +353,9 @@ def draw_map(map_type, geo_dict, filename, headless, leg_choice): 0)) labels = labels[idx:] + labels[:idx] handles = handles[idx:] + handles[:idx] - by_label = OrderedDict(zip(labels, handles)) + by_label = OrderedDict(list(zip(labels, handles))) - leg = plt.legend(by_label.values(), by_label.keys(), fancybox=True, fontsize='x-small', + leg = plt.legend(list(by_label.values()), list(by_label.keys()), fancybox=True, fontsize='x-small', numpoints=1, title="Legend", labelspacing=1., borderpad=1.5, handletextpad=2.) if leg: lleng = len(leg.legendHandles) diff --git a/notify/find_unwatched_notify.py b/notify/find_unwatched_notify.py index 32ab1dd..0a9421d 100644 --- a/notify/find_unwatched_notify.py +++ b/notify/find_unwatched_notify.py @@ -8,6 +8,8 @@ TAUTULLI_URL + delete_media_info_cache?section_id={section_id} """ from __future__ import print_function +from builtins import object +from builtins import str import requests import sys import time diff --git a/notify/notify_delay.py b/notify/notify_delay.py index 9475b01..b6530a0 100644 --- a/notify/notify_delay.py +++ b/notify/notify_delay.py @@ -17,7 +17,9 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: Tautulli Settings > Notification Agents > Scripts (Gear) > Script Timeout: 0 to disable or set to > 180 """ from __future__ import print_function +from __future__ import division +from past.utils import old_div import requests import sys import argparse @@ -67,7 +69,7 @@ def send_notification(subject_text, body_text): """Format notification text.""" try: subject = subject_text.format(p=p, total=cc_total) - body = body_text.format(p=p, total=cc_total, time=TIMEOUT / 60) + body = body_text.format(p=p, total=cc_total, time=old_div(TIMEOUT, 60)) except LookupError as e: sys.stderr.write("Unable to substitute '{0}' in the notification subject or body".format(e)) diff --git a/notify/notify_fav_tv_all_movie.py b/notify/notify_fav_tv_all_movie.py index 5c4a247..492d48a 100644 --- a/notify/notify_fav_tv_all_movie.py +++ b/notify/notify_fav_tv_all_movie.py @@ -19,6 +19,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: """ from __future__ import print_function +from builtins import object import requests from email.mime.text import MIMEText import email.utils @@ -244,7 +245,7 @@ if __name__ == '__main__': if p.media_type == 'movie': email_subject = MOVIE_SUBJECT.format(p=p) - to = filter(None, [x['email'] for x in get_users() if x['user_id'] not in IGNORE_LST]) + to = [_f for _f in [x['email'] for x in get_users() if x['user_id'] not in IGNORE_LST] if _f] body_html = MOVIE_BODY.format(p=p) send_email(to, email_subject, body_html) diff --git a/notify/notify_newip.py b/notify/notify_newip.py index bea3121..7edba42 100644 --- a/notify/notify_newip.py +++ b/notify/notify_newip.py @@ -17,6 +17,7 @@ Arguments passed from Tautulli """ +from builtins import object import argparse import requests import sys diff --git a/notify/notify_user_favorites.py b/notify/notify_user_favorites.py index 543c0c4..98f82a4 100644 --- a/notify/notify_user_favorites.py +++ b/notify/notify_user_favorites.py @@ -18,6 +18,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: """ from __future__ import print_function +from builtins import object import requests from email.mime.text import MIMEText import email.utils diff --git a/notify/notify_user_newip.py b/notify/notify_user_newip.py index 74586ff..939acfd 100644 --- a/notify/notify_user_newip.py +++ b/notify/notify_user_newip.py @@ -10,6 +10,7 @@ Restart Tautulli. Place in Playback Start """ from __future__ import print_function +from builtins import object import argparse import requests import sys diff --git a/reporting/added_to_plex.py b/reporting/added_to_plex.py index 3e7c7e3..699b061 100644 --- a/reporting/added_to_plex.py +++ b/reporting/added_to_plex.py @@ -9,6 +9,8 @@ Uncomment Exceptions if you run into problem and need to investigate. """ from __future__ import print_function +from builtins import str +from builtins import object import requests import sys import time diff --git a/reporting/check_play.py b/reporting/check_play.py index 459e7d7..b15550f 100644 --- a/reporting/check_play.py +++ b/reporting/check_play.py @@ -7,6 +7,7 @@ # {user} {title} # Add to Playback Resume +from builtins import object import requests import sys diff --git a/reporting/check_plex_log.py b/reporting/check_plex_log.py index 4c8eb3e..8cba31c 100644 --- a/reporting/check_plex_log.py +++ b/reporting/check_plex_log.py @@ -8,6 +8,7 @@ I corrupted a file to test. """ from __future__ import print_function +from builtins import object import requests import sys diff --git a/reporting/library_play_days.py b/reporting/library_play_days.py index 5b10bc0..54f4bc5 100644 --- a/reporting/library_play_days.py +++ b/reporting/library_play_days.py @@ -26,6 +26,7 @@ Usage: """ from __future__ import print_function +from builtins import str import requests import sys import argparse diff --git a/reporting/plex_netflix_check.py b/reporting/plex_netflix_check.py index 0c588ba..ccbd7ce 100644 --- a/reporting/plex_netflix_check.py +++ b/reporting/plex_netflix_check.py @@ -28,6 +28,7 @@ If title is matched in both, Amazon is first then Netflix. """ from __future__ import print_function +from builtins import str import requests import argparse from xmljson import badgerfish as bf diff --git a/reporting/userplays_weekly_reporting.py b/reporting/userplays_weekly_reporting.py index 9ae7ac0..08f7cdc 100644 --- a/reporting/userplays_weekly_reporting.py +++ b/reporting/userplays_weekly_reporting.py @@ -6,6 +6,7 @@ Use Tautulli to count how many plays per user occurred this week. Notify via Tautulli Notification """ +from builtins import object import requests import sys import time diff --git a/reporting/watched_percentages.py b/reporting/watched_percentages.py index 795d58d..392dcd7 100644 --- a/reporting/watched_percentages.py +++ b/reporting/watched_percentages.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- from __future__ import print_function +from builtins import object import time import argparse from plexapi.myplex import MyPlexAccount @@ -40,7 +41,7 @@ VERIFY_SSL = False timestr = time.strftime("%Y%m%d-%H%M%S") -class Connection: +class Connection(object): def __init__(self, url=None, apikey=None, verify_ssl=False): self.url = url self.apikey = apikey @@ -75,7 +76,7 @@ class Library(object): pass -class Tautulli: +class Tautulli(object): def __init__(self, connection): self.connection = connection @@ -128,7 +129,7 @@ class Tautulli: return self._call_api('get_libraries', payload) -class Plex: +class Plex(object): def __init__(self, token, url=None): if token and not url: self.account = MyPlexAccount(token) diff --git a/reporting/weekly_stats_reporting.py b/reporting/weekly_stats_reporting.py index 5ebd2b4..f56d6bc 100644 --- a/reporting/weekly_stats_reporting.py +++ b/reporting/weekly_stats_reporting.py @@ -12,6 +12,8 @@ Tautulli Settings > Extra Settings > Check - Calculate Total File Sizes [experi """ from __future__ import print_function +from builtins import range +from builtins import object from plexapi.server import CONFIG from datetime import datetime, timedelta, date from requests import Session @@ -220,7 +222,7 @@ def get_library_stats(libraries, tautulli, rich, notify=None): return sections_stats_lst -class Tautulli: +class Tautulli(object): def __init__(self, url, apikey, verify_ssl=False, debug=None): self.url = url self.apikey = apikey @@ -317,7 +319,7 @@ class Tautulli: return -class Notification: +class Notification(object): def __init__(self, notifier_id, subject, body, tautulli, stats=None): self.notifier_id = notifier_id self.subject = subject diff --git a/utility/delete_watched_TV.py b/utility/delete_watched_TV.py index 72deb03..47f717b 100644 --- a/utility/delete_watched_TV.py +++ b/utility/delete_watched_TV.py @@ -9,6 +9,7 @@ Add deletion via Plex. """ from __future__ import print_function +from builtins import object import requests import sys import os diff --git a/utility/find_unwatched.py b/utility/find_unwatched.py index 030ad05..210dace 100644 --- a/utility/find_unwatched.py +++ b/utility/find_unwatched.py @@ -6,6 +6,9 @@ Find what was added TFRAME ago and not watched using Tautulli. """ from __future__ import print_function +from builtins import input +from builtins import str +from builtins import object import requests import sys import time @@ -123,7 +126,7 @@ def get_libraries_table(): def delete_files(tmp_lst): - del_file = raw_input('Delete all unwatched files? (yes/no)').lower() + del_file = input('Delete all unwatched files? (yes/no)').lower() if del_file.startswith('y'): for x in tmp_lst: print("Removing {}".format(x)) diff --git a/utility/get_serial_transcoders.py b/utility/get_serial_transcoders.py index 81f7ec2..27444c5 100644 --- a/utility/get_serial_transcoders.py +++ b/utility/get_serial_transcoders.py @@ -7,6 +7,8 @@ Author: DirtyCajunRice Requires: requests, plexapi, python3.6+ """ from __future__ import print_function +from __future__ import division +from past.utils import old_div from requests import Session from plexapi.server import CONFIG from datetime import date, timedelta @@ -57,7 +59,7 @@ for play in HISTORY: PARAMS = {'cmd': 'get_user', 'user_id': 0} for user, counts in USERS.items(): TOTAL_PLAYS = counts['transcode'] + counts['direct play'] + counts['copy'] - TRANSCODE_PERCENT = round(counts['transcode'] * 100 / TOTAL_PLAYS, 2) + TRANSCODE_PERCENT = round(old_div(counts['transcode'] * 100, TOTAL_PLAYS), 2) if TRANSCODE_PERCENT >= THRESHOLD_PERCENT: PARAMS['user_id'] = user NAUGHTY = SESSION.get(FORMATTED_URL, params=PARAMS).json()['response']['data'] diff --git a/utility/grab_gdrive_media.py b/utility/grab_gdrive_media.py index 5cc663f..184a858 100644 --- a/utility/grab_gdrive_media.py +++ b/utility/grab_gdrive_media.py @@ -6,6 +6,7 @@ https://gist.github.com/blacktwin/f435aa0ccd498b0840d2407d599bf31d """ from __future__ import print_function +from builtins import input import os import httplib2 @@ -35,7 +36,7 @@ if credentials is None: flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) authorize_url = flow.step1_get_authorize_url() print('Go to the following link in your browser: ' + authorize_url) - code = raw_input('Enter verification code: ').strip() + code = input('Enter verification code: ').strip() credentials = flow.step2_exchange(code) storage.put(credentials) diff --git a/utility/mark_multiepisode_watched.py b/utility/mark_multiepisode_watched.py index ea6c6c2..d2e1421 100644 --- a/utility/mark_multiepisode_watched.py +++ b/utility/mark_multiepisode_watched.py @@ -16,6 +16,7 @@ # --rating_key {rating_key} --filename {filename} from __future__ import print_function +from builtins import str import argparse import os from plexapi.server import PlexServer diff --git a/utility/media_manager.py b/utility/media_manager.py index 808f615..c6073f6 100644 --- a/utility/media_manager.py +++ b/utility/media_manager.py @@ -24,6 +24,7 @@ Enabling Scripts in Tautulli: """ from __future__ import print_function +from builtins import object import argparse import datetime import time @@ -71,7 +72,7 @@ OPTIMIZE_DEFAULT = {'targetTagID': 'Mobile', 'policyUnwatched': 0, 'videoQuality': None} -class Connection: +class Connection(object): def __init__(self, url=None, apikey=None, verify_ssl=False): self.url = url self.apikey = apikey @@ -160,7 +161,7 @@ class User(object): self.direct = {} -class Tautulli: +class Tautulli(object): def __init__(self, connection): self.connection = connection diff --git a/utility/off_deck.py b/utility/off_deck.py index 240c984..6652183 100644 --- a/utility/off_deck.py +++ b/utility/off_deck.py @@ -46,6 +46,7 @@ original. """ from __future__ import print_function +from builtins import range import requests import argparse import datetime diff --git a/utility/plex_api_poster_pull.py b/utility/plex_api_poster_pull.py index 47f3895..e766743 100644 --- a/utility/plex_api_poster_pull.py +++ b/utility/plex_api_poster_pull.py @@ -15,11 +15,13 @@ Requires: plexapi """ from __future__ import print_function +from future import standard_library +standard_library.install_aliases() from plexapi.server import PlexServer, CONFIG import requests import re import os -import urllib +import urllib.request, urllib.parse, urllib.error library_name = ['Movies', 'TV Shows'] # Your library names @@ -71,4 +73,4 @@ for library in library_name: print("ERROR, %s already exist" % image_path) else: # Save to directory - urllib.urlretrieve(thumb_url, image_path) + urllib.request.urlretrieve(thumb_url, image_path) diff --git a/utility/plex_imgur_dl.py b/utility/plex_imgur_dl.py index 6b59318..b76f4c2 100644 --- a/utility/plex_imgur_dl.py +++ b/utility/plex_imgur_dl.py @@ -10,8 +10,11 @@ Skips download if showname.jpg exists or if show does not exist. """ from __future__ import print_function +from future import standard_library +standard_library.install_aliases() +from builtins import object import requests -import urllib +import urllib.request, urllib.parse, urllib.error import os @@ -50,6 +53,6 @@ for x in get_imgur(): print("Poster for {} was already downloaded or filename already exists, skipping.".format(x.description)) else: print("Downloading poster for {}.".format(x.description)) - urllib.urlretrieve(x.link, '{}.jpg'.format((os.path.join(SHOW_PATH, x.description, x.description)))) + urllib.request.urlretrieve(x.link, '{}.jpg'.format((os.path.join(SHOW_PATH, x.description, x.description)))) else: print("{} - {} did not match your library.".format(x.description, x.link)) diff --git a/utility/plex_theme_songs.py b/utility/plex_theme_songs.py index 97f17ff..7aadbf6 100644 --- a/utility/plex_theme_songs.py +++ b/utility/plex_theme_songs.py @@ -9,11 +9,13 @@ Songs are saved in a 'Theme Songs' directory located in script's path. """ +from future import standard_library +standard_library.install_aliases() from plexapi.server import PlexServer, CONFIG # pip install plexapi import os import re -import urllib +import urllib.request, urllib.parse, urllib.error import requests # ## Edit ## @@ -56,4 +58,4 @@ for show in plex.library.section(TV_LIBRARY).all(): # Get tvdb_if from first episode, no need to go through all episodes tvdb_id = show.episodes()[0].guid.split('/')[2] # Download theme song to output path - urllib.urlretrieve(themes_url.format(tvdb_id), theme_path) + urllib.request.urlretrieve(themes_url.format(tvdb_id), theme_path) diff --git a/utility/remove_watched_movies.py b/utility/remove_watched_movies.py index 11e3f32..0c0d784 100644 --- a/utility/remove_watched_movies.py +++ b/utility/remove_watched_movies.py @@ -7,6 +7,8 @@ Deletion is prompted """ from __future__ import print_function +from builtins import input +from builtins import object import requests import sys import os @@ -76,7 +78,7 @@ def get_history(user, start, length): def delete_files(tmp_lst): - del_file = raw_input('Delete all watched files? (yes/no)').lower() + del_file = input('Delete all watched files? (yes/no)').lower() if del_file.startswith('y'): for x in tmp_lst: print("Removing {}".format(os.path.dirname(x))) diff --git a/utility/stream_limiter_ban_email.py b/utility/stream_limiter_ban_email.py index b3c36e5..b71964e 100644 --- a/utility/stream_limiter_ban_email.py +++ b/utility/stream_limiter_ban_email.py @@ -52,6 +52,8 @@ Concurrent stream count is the trigger. Trigger can be anything you want. from __future__ import print_function +from builtins import str +from builtins import object import requests import sys from xml.dom import minidom diff --git a/utility/sync_watch_status.py b/utility/sync_watch_status.py index 052a7e9..bbc502b 100644 --- a/utility/sync_watch_status.py +++ b/utility/sync_watch_status.py @@ -56,6 +56,7 @@ Taultulli > Settings > Notification Agents > New Script > Script Arguments: **Rating key must be a movie or episode. Shows and Seasons not support.... yet. """ from __future__ import print_function +from builtins import object import argparse from plexapi.myplex import MyPlexAccount from plexapi.server import PlexServer @@ -79,7 +80,7 @@ if not TAUTULLI_APIKEY: VERIFY_SSL = False -class Connection: +class Connection(object): def __init__(self, url=None, apikey=None, verify_ssl=False): self.url = url self.apikey = apikey @@ -133,7 +134,7 @@ class Metadata(object): pass -class Tautulli: +class Tautulli(object): def __init__(self, connection): self.connection = connection @@ -190,7 +191,7 @@ class Tautulli: return self._call_api('get_libraries', payload) -class Plex: +class Plex(object): def __init__(self, token, url=None): if token and not url: self.account = MyPlexAccount(token) From 0d1685afed469d6f144b79f37af2d7a07f12aff0 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sat, 4 Jul 2020 13:31:02 -0700 Subject: [PATCH 5/5] Run futurize --unicode-literals --- fun/playlist_manager.py | 1 + fun/plexapi_haiku.py | 1 + killstream/kill_else_if_buffering.py | 1 + killstream/kill_stream.py | 1 + killstream/limiterr.py | 1 + maps/ips_to_maps.py | 1 + notify/find_unwatched_notify.py | 1 + notify/notify_delay.py | 1 + notify/notify_fav_tv_all_movie.py | 1 + notify/notify_newip.py | 1 + notify/notify_recently_aired.py | 1 + notify/notify_user_favorites.py | 1 + notify/notify_user_newip.py | 1 + notify/top_concurrent_notify.py | 1 + notify/twitter_notify.py | 1 + reporting/added_to_plex.py | 1 + reporting/check_play.py | 1 + reporting/check_plex_log.py | 1 + reporting/drive_check.py | 1 + reporting/library_play_days.py | 1 + reporting/plays_by_library.py | 1 + reporting/plex_netflix_check.py | 1 + reporting/server_compare.py | 1 + reporting/userplays_weekly_reporting.py | 1 + reporting/watched_percentages.py | 1 + reporting/weekly_stats_reporting.py | 1 + utility/add_label_recently_added.py | 1 + utility/bypass_auth_name.py | 1 + utility/delete_watched_TV.py | 1 + utility/enable_disable_all_guest_access.py | 1 + utility/find_plex_meta.py | 1 + utility/find_unwatched.py | 1 + utility/get_serial_transcoders.py | 1 + utility/grab_gdrive_media.py | 1 + utility/hide_episode_spoilers.py | 1 + utility/mark_multiepisode_watched.py | 1 + utility/media_manager.py | 1 + utility/off_deck.py | 1 + utility/plex_api_invite.py | 1 + utility/plex_api_parental_control.py | 1 + utility/plex_api_poster_pull.py | 1 + utility/plex_api_share.py | 1 + utility/plex_api_show_settings.py | 1 + utility/plex_dance.py | 1 + utility/plex_imgur_dl.py | 1 + utility/plex_popular_playlist.py | 1 + utility/plex_theme_songs.py | 1 + utility/plexapi_delete_playlists.py | 1 + utility/purge_removed_plex_friends.py | 1 + utility/recently_added_collection.py | 1 + utility/refresh_next_episode.py | 1 + utility/remove_inactive_users.py | 1 + utility/remove_movie_collections.py | 1 + utility/remove_watched_movies.py | 1 + utility/rename_seasons.py | 1 + utility/stream_limiter_ban_email.py | 1 + utility/sync_watch_status.py | 1 + utility/tautulli_friendly_name_to_ombi_alias_sync.py | 1 + 58 files changed, 58 insertions(+) diff --git a/fun/playlist_manager.py b/fun/playlist_manager.py index 8745746..704bdc2 100644 --- a/fun/playlist_manager.py +++ b/fun/playlist_manager.py @@ -98,6 +98,7 @@ optional arguments: - Create Aired Today Playlist from every library by Movies for admin user """ +from __future__ import unicode_literals from builtins import str import sys diff --git a/fun/plexapi_haiku.py b/fun/plexapi_haiku.py index 3b7c4d2..106ef11 100644 --- a/fun/plexapi_haiku.py +++ b/fun/plexapi_haiku.py @@ -5,6 +5,7 @@ https://gist.github.com/blacktwin/4ccb79c7d01a95176b8e88bf4890cd2b """ from __future__ import print_function +from __future__ import unicode_literals from plexapi.server import PlexServer import random diff --git a/killstream/kill_else_if_buffering.py b/killstream/kill_else_if_buffering.py index 09bf083..bb2a206 100644 --- a/killstream/kill_else_if_buffering.py +++ b/killstream/kill_else_if_buffering.py @@ -17,6 +17,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: """ from __future__ import print_function from __future__ import division +from __future__ import unicode_literals from builtins import str from past.utils import old_div diff --git a/killstream/kill_stream.py b/killstream/kill_stream.py index f99324d..4d3875c 100644 --- a/killstream/kill_stream.py +++ b/killstream/kill_stream.py @@ -46,6 +46,7 @@ Tautulli > Settings > Notification Agents > New Script > Script Arguments: Close """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object diff --git a/killstream/limiterr.py b/killstream/limiterr.py index 4eb4ba5..7f431cd 100644 --- a/killstream/limiterr.py +++ b/killstream/limiterr.py @@ -46,6 +46,7 @@ Taultulli > Settings > Notification Agents > New Script > Script Arguments: Close """ from __future__ import print_function +from __future__ import unicode_literals from builtins import range import requests diff --git a/maps/ips_to_maps.py b/maps/ips_to_maps.py index 9e11bb3..3b9f898 100644 --- a/maps/ips_to_maps.py +++ b/maps/ips_to_maps.py @@ -27,6 +27,7 @@ optional arguments: """ from __future__ import print_function +from __future__ import unicode_literals from builtins import zip from builtins import str diff --git a/notify/find_unwatched_notify.py b/notify/find_unwatched_notify.py index 0a9421d..c2dd019 100644 --- a/notify/find_unwatched_notify.py +++ b/notify/find_unwatched_notify.py @@ -7,6 +7,7 @@ Find what was added TFRAME ago and not watched and notify admin using Tautulli. TAUTULLI_URL + delete_media_info_cache?section_id={section_id} """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object from builtins import str diff --git a/notify/notify_delay.py b/notify/notify_delay.py index b6530a0..787802d 100644 --- a/notify/notify_delay.py +++ b/notify/notify_delay.py @@ -18,6 +18,7 @@ Tautulli Settings > Notification Agents > Scripts (Gear) > Script Timeout: 0 to """ from __future__ import print_function from __future__ import division +from __future__ import unicode_literals from past.utils import old_div import requests diff --git a/notify/notify_fav_tv_all_movie.py b/notify/notify_fav_tv_all_movie.py index 492d48a..ae1338f 100644 --- a/notify/notify_fav_tv_all_movie.py +++ b/notify/notify_fav_tv_all_movie.py @@ -18,6 +18,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: Recently Added: notify_fav_tv_all_movie.py """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import requests diff --git a/notify/notify_newip.py b/notify/notify_newip.py index 7edba42..04d68de 100644 --- a/notify/notify_newip.py +++ b/notify/notify_newip.py @@ -17,6 +17,7 @@ Arguments passed from Tautulli """ +from __future__ import unicode_literals from builtins import object import argparse import requests diff --git a/notify/notify_recently_aired.py b/notify/notify_recently_aired.py index 5c7c810..2b5bcb5 100644 --- a/notify/notify_recently_aired.py +++ b/notify/notify_recently_aired.py @@ -44,6 +44,7 @@ Note: It does not have to be an active notification agent, just setup. """ from __future__ import print_function +from __future__ import unicode_literals import os import sys import requests diff --git a/notify/notify_user_favorites.py b/notify/notify_user_favorites.py index 98f82a4..59ffb69 100644 --- a/notify/notify_user_favorites.py +++ b/notify/notify_user_favorites.py @@ -17,6 +17,7 @@ Tautulli > Settings > Notification Agents > Scripts > Gear icon: Recently Added: notify_user_favorite.py """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import requests diff --git a/notify/notify_user_newip.py b/notify/notify_user_newip.py index 939acfd..182941d 100644 --- a/notify/notify_user_newip.py +++ b/notify/notify_user_newip.py @@ -10,6 +10,7 @@ Restart Tautulli. Place in Playback Start """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import argparse import requests diff --git a/notify/top_concurrent_notify.py b/notify/top_concurrent_notify.py index d994c90..e00dcdd 100644 --- a/notify/top_concurrent_notify.py +++ b/notify/top_concurrent_notify.py @@ -47,6 +47,7 @@ Tautulli > Settings > Notification Agents > New Script > Script Arguments: """ +from __future__ import unicode_literals import os import sys diff --git a/notify/twitter_notify.py b/notify/twitter_notify.py index d0004df..3feb729 100644 --- a/notify/twitter_notify.py +++ b/notify/twitter_notify.py @@ -16,6 +16,7 @@ Tautulli > Settings > Notifications > Script > Script Arguments: https://gist.github.com/blacktwin/261c416dbed08291e6d12f6987d9bafa """ +from __future__ import unicode_literals from twitter import Twitter, OAuth import argparse diff --git a/reporting/added_to_plex.py b/reporting/added_to_plex.py index 699b061..1aae1e8 100644 --- a/reporting/added_to_plex.py +++ b/reporting/added_to_plex.py @@ -8,6 +8,7 @@ Some Exceptions have been commented out to supress what is printed. Uncomment Exceptions if you run into problem and need to investigate. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import str from builtins import object diff --git a/reporting/check_play.py b/reporting/check_play.py index b15550f..6b8afaa 100644 --- a/reporting/check_play.py +++ b/reporting/check_play.py @@ -7,6 +7,7 @@ # {user} {title} # Add to Playback Resume +from __future__ import unicode_literals from builtins import object import requests import sys diff --git a/reporting/check_plex_log.py b/reporting/check_plex_log.py index 8cba31c..41b069d 100644 --- a/reporting/check_plex_log.py +++ b/reporting/check_plex_log.py @@ -7,6 +7,7 @@ This is find files that are corrupt or having playback issues. I corrupted a file to test. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import requests diff --git a/reporting/drive_check.py b/reporting/drive_check.py index f4ff713..b64bca1 100644 --- a/reporting/drive_check.py +++ b/reporting/drive_check.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +from __future__ import unicode_literals import psutil import requests diff --git a/reporting/library_play_days.py b/reporting/library_play_days.py index 54f4bc5..216ab12 100644 --- a/reporting/library_play_days.py +++ b/reporting/library_play_days.py @@ -25,6 +25,7 @@ Usage: """ from __future__ import print_function +from __future__ import unicode_literals from builtins import str import requests diff --git a/reporting/plays_by_library.py b/reporting/plays_by_library.py index ce2a28b..d9b5de8 100644 --- a/reporting/plays_by_library.py +++ b/reporting/plays_by_library.py @@ -18,6 +18,7 @@ Usage: """ from __future__ import print_function +from __future__ import unicode_literals import requests import sys diff --git a/reporting/plex_netflix_check.py b/reporting/plex_netflix_check.py index ccbd7ce..c55e5fb 100644 --- a/reporting/plex_netflix_check.py +++ b/reporting/plex_netflix_check.py @@ -27,6 +27,7 @@ optional arguments: If title is matched in both, Amazon is first then Netflix. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import str import requests diff --git a/reporting/server_compare.py b/reporting/server_compare.py index d031f06..b112567 100644 --- a/reporting/server_compare.py +++ b/reporting/server_compare.py @@ -18,6 +18,7 @@ Requires: requests, plexapi """ from __future__ import print_function +from __future__ import unicode_literals import argparse import requests diff --git a/reporting/userplays_weekly_reporting.py b/reporting/userplays_weekly_reporting.py index 08f7cdc..7eef340 100644 --- a/reporting/userplays_weekly_reporting.py +++ b/reporting/userplays_weekly_reporting.py @@ -5,6 +5,7 @@ Use Tautulli to count how many plays per user occurred this week. Notify via Tautulli Notification """ +from __future__ import unicode_literals from builtins import object import requests diff --git a/reporting/watched_percentages.py b/reporting/watched_percentages.py index 392dcd7..1a4d40d 100644 --- a/reporting/watched_percentages.py +++ b/reporting/watched_percentages.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- from __future__ import print_function +from __future__ import unicode_literals from builtins import object import time import argparse diff --git a/reporting/weekly_stats_reporting.py b/reporting/weekly_stats_reporting.py index f56d6bc..46278b4 100644 --- a/reporting/weekly_stats_reporting.py +++ b/reporting/weekly_stats_reporting.py @@ -12,6 +12,7 @@ Tautulli Settings > Extra Settings > Check - Calculate Total File Sizes [experi """ from __future__ import print_function +from __future__ import unicode_literals from builtins import range from builtins import object from plexapi.server import CONFIG diff --git a/utility/add_label_recently_added.py b/utility/add_label_recently_added.py index b070f16..a8dd36c 100644 --- a/utility/add_label_recently_added.py +++ b/utility/add_label_recently_added.py @@ -18,6 +18,7 @@ # --title {title} --section_id {section_id} --media_type {media_type} --rating_key {rating_key} --parent_rating_key {parent_rating_key} --grandparent_rating_key {grandparent_rating_key} --label "Label" from __future__ import print_function +from __future__ import unicode_literals import argparse import os import requests diff --git a/utility/bypass_auth_name.py b/utility/bypass_auth_name.py index 9e077e1..b9d95db 100644 --- a/utility/bypass_auth_name.py +++ b/utility/bypass_auth_name.py @@ -17,6 +17,7 @@ optional arguments: List of IP addresses is cleared before adding new IPs """ from __future__ import print_function +from __future__ import unicode_literals import requests import argparse diff --git a/utility/delete_watched_TV.py b/utility/delete_watched_TV.py index 47f717b..9bb8208 100644 --- a/utility/delete_watched_TV.py +++ b/utility/delete_watched_TV.py @@ -8,6 +8,7 @@ If all users in list have watched an episode of listed show, then delete episode Add deletion via Plex. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import requests diff --git a/utility/enable_disable_all_guest_access.py b/utility/enable_disable_all_guest_access.py index 24b4ffc..b6f4268 100644 --- a/utility/enable_disable_all_guest_access.py +++ b/utility/enable_disable_all_guest_access.py @@ -7,6 +7,7 @@ Author: DirtyCajunRice Requires: requests, python3.6+ """ from __future__ import print_function +from __future__ import unicode_literals from requests import Session from json.decoder import JSONDecodeError diff --git a/utility/find_plex_meta.py b/utility/find_plex_meta.py index 7e163c1..418c7ff 100644 --- a/utility/find_plex_meta.py +++ b/utility/find_plex_meta.py @@ -11,6 +11,7 @@ find_plex_meta.py -s adventure -m movie pulls all movie titles with adventure in the title ''' from __future__ import print_function +from __future__ import unicode_literals from plexapi.server import PlexServer, CONFIG diff --git a/utility/find_unwatched.py b/utility/find_unwatched.py index 210dace..39dc510 100644 --- a/utility/find_unwatched.py +++ b/utility/find_unwatched.py @@ -5,6 +5,7 @@ Find what was added TFRAME ago and not watched using Tautulli. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import input from builtins import str diff --git a/utility/get_serial_transcoders.py b/utility/get_serial_transcoders.py index 27444c5..4c5f331 100644 --- a/utility/get_serial_transcoders.py +++ b/utility/get_serial_transcoders.py @@ -8,6 +8,7 @@ Requires: requests, plexapi, python3.6+ """ from __future__ import print_function from __future__ import division +from __future__ import unicode_literals from past.utils import old_div from requests import Session from plexapi.server import CONFIG diff --git a/utility/grab_gdrive_media.py b/utility/grab_gdrive_media.py index 184a858..2a0623e 100644 --- a/utility/grab_gdrive_media.py +++ b/utility/grab_gdrive_media.py @@ -5,6 +5,7 @@ https://gist.github.com/blacktwin/f435aa0ccd498b0840d2407d599bf31d """ from __future__ import print_function +from __future__ import unicode_literals from builtins import input import os diff --git a/utility/hide_episode_spoilers.py b/utility/hide_episode_spoilers.py index a477704..4dbf383 100644 --- a/utility/hide_episode_spoilers.py +++ b/utility/hide_episode_spoilers.py @@ -22,6 +22,7 @@ # * Watched (optional): # --rating_key {rating_key} --file {file} --remove +from __future__ import unicode_literals import argparse import os import requests diff --git a/utility/mark_multiepisode_watched.py b/utility/mark_multiepisode_watched.py index d2e1421..3b10eb8 100644 --- a/utility/mark_multiepisode_watched.py +++ b/utility/mark_multiepisode_watched.py @@ -16,6 +16,7 @@ # --rating_key {rating_key} --filename {filename} from __future__ import print_function +from __future__ import unicode_literals from builtins import str import argparse import os diff --git a/utility/media_manager.py b/utility/media_manager.py index c6073f6..6d1283c 100644 --- a/utility/media_manager.py +++ b/utility/media_manager.py @@ -24,6 +24,7 @@ Enabling Scripts in Tautulli: """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import argparse import datetime diff --git a/utility/off_deck.py b/utility/off_deck.py index 6652183..c525558 100644 --- a/utility/off_deck.py +++ b/utility/off_deck.py @@ -45,6 +45,7 @@ original. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import range import requests diff --git a/utility/plex_api_invite.py b/utility/plex_api_invite.py index b360e02..46b2977 100644 --- a/utility/plex_api_invite.py +++ b/utility/plex_api_invite.py @@ -37,6 +37,7 @@ Usage: """ from __future__ import print_function +from __future__ import unicode_literals from plexapi.server import PlexServer, CONFIG import argparse diff --git a/utility/plex_api_parental_control.py b/utility/plex_api_parental_control.py index 21eab66..32fbb51 100644 --- a/utility/plex_api_parental_control.py +++ b/utility/plex_api_parental_control.py @@ -37,6 +37,7 @@ Usage: """ from __future__ import print_function +from __future__ import unicode_literals import argparse diff --git a/utility/plex_api_poster_pull.py b/utility/plex_api_poster_pull.py index e766743..22ced6e 100644 --- a/utility/plex_api_poster_pull.py +++ b/utility/plex_api_poster_pull.py @@ -14,6 +14,7 @@ Requires: plexapi """ from __future__ import print_function +from __future__ import unicode_literals from future import standard_library standard_library.install_aliases() diff --git a/utility/plex_api_share.py b/utility/plex_api_share.py index 4f4759a..2107c2f 100644 --- a/utility/plex_api_share.py +++ b/utility/plex_api_share.py @@ -99,6 +99,7 @@ Usage: """ from __future__ import print_function +from __future__ import unicode_literals from plexapi.server import PlexServer, CONFIG import time diff --git a/utility/plex_api_show_settings.py b/utility/plex_api_show_settings.py index 2220500..b4d8706 100644 --- a/utility/plex_api_show_settings.py +++ b/utility/plex_api_show_settings.py @@ -25,6 +25,7 @@ python plex_api_show_settings.py --libraries "TV Shows" --unwatched -7 - Keep Episodesfrom the past 7 days """ from __future__ import print_function +from __future__ import unicode_literals import argparse import requests from plexapi.server import PlexServer, CONFIG diff --git a/utility/plex_dance.py b/utility/plex_dance.py index 2916421..4925cea 100644 --- a/utility/plex_dance.py +++ b/utility/plex_dance.py @@ -46,6 +46,7 @@ Script Dance moves https://gist.github.com/JonnyWong16/f554f407832076919dc6864a78432db2 """ from __future__ import print_function +from __future__ import unicode_literals from plexapi.server import PlexServer from plexapi.server import CONFIG diff --git a/utility/plex_imgur_dl.py b/utility/plex_imgur_dl.py index b76f4c2..98166cc 100644 --- a/utility/plex_imgur_dl.py +++ b/utility/plex_imgur_dl.py @@ -9,6 +9,7 @@ Skips download if showname.jpg exists or if show does not exist. """ from __future__ import print_function +from __future__ import unicode_literals from future import standard_library standard_library.install_aliases() diff --git a/utility/plex_popular_playlist.py b/utility/plex_popular_playlist.py index 2506847..0f225bd 100644 --- a/utility/plex_popular_playlist.py +++ b/utility/plex_popular_playlist.py @@ -17,6 +17,7 @@ optional arguments: """ from __future__ import print_function +from __future__ import unicode_literals import requests diff --git a/utility/plex_theme_songs.py b/utility/plex_theme_songs.py index 7aadbf6..f0f831a 100644 --- a/utility/plex_theme_songs.py +++ b/utility/plex_theme_songs.py @@ -7,6 +7,7 @@ Theme songs are mp3 and named by shows as displayed by Plex. Songs are saved in a 'Theme Songs' directory located in script's path. """ +from __future__ import unicode_literals from future import standard_library diff --git a/utility/plexapi_delete_playlists.py b/utility/plexapi_delete_playlists.py index 89611ae..853af6e 100644 --- a/utility/plexapi_delete_playlists.py +++ b/utility/plexapi_delete_playlists.py @@ -5,6 +5,7 @@ """ +from __future__ import unicode_literals from plexapi.server import PlexServer diff --git a/utility/purge_removed_plex_friends.py b/utility/purge_removed_plex_friends.py index e00e96d..19c202f 100644 --- a/utility/purge_removed_plex_friends.py +++ b/utility/purge_removed_plex_friends.py @@ -7,6 +7,7 @@ Author: DirtyCajunRice Requires: requests, plexapi, python3.6+ """ from __future__ import print_function +from __future__ import unicode_literals from requests import Session from plexapi.server import CONFIG diff --git a/utility/recently_added_collection.py b/utility/recently_added_collection.py index 92fc1d3..9aba202 100644 --- a/utility/recently_added_collection.py +++ b/utility/recently_added_collection.py @@ -15,6 +15,7 @@ # --rating_key {rating_key} --collection "New Releases" --days 180 from __future__ import print_function +from __future__ import unicode_literals import argparse import os from datetime import datetime, timedelta diff --git a/utility/refresh_next_episode.py b/utility/refresh_next_episode.py index d090a71..fe03868 100644 --- a/utility/refresh_next_episode.py +++ b/utility/refresh_next_episode.py @@ -16,6 +16,7 @@ Check Tautulli's Watched Percent in Tautulli > Settings > General """ from __future__ import print_function +from __future__ import unicode_literals import requests import sys diff --git a/utility/remove_inactive_users.py b/utility/remove_inactive_users.py index b623e8f..7538385 100644 --- a/utility/remove_inactive_users.py +++ b/utility/remove_inactive_users.py @@ -8,6 +8,7 @@ Just run. Comment out `remove_friend(username)` and `unshare(username)` to test. """ from __future__ import print_function +from __future__ import unicode_literals from sys import exit from requests import Session from datetime import datetime diff --git a/utility/remove_movie_collections.py b/utility/remove_movie_collections.py index 891de13..ca4d2d8 100644 --- a/utility/remove_movie_collections.py +++ b/utility/remove_movie_collections.py @@ -5,6 +5,7 @@ # Author: /u/SwiftPanda16 # Requires: plexapi +from __future__ import unicode_literals from plexapi.server import PlexServer ### EDIT SETTINGS ### diff --git a/utility/remove_watched_movies.py b/utility/remove_watched_movies.py index 0c0d784..8cf63fe 100644 --- a/utility/remove_watched_movies.py +++ b/utility/remove_watched_movies.py @@ -6,6 +6,7 @@ Deletion is prompted """ from __future__ import print_function +from __future__ import unicode_literals from builtins import input from builtins import object diff --git a/utility/rename_seasons.py b/utility/rename_seasons.py index c8d9891..00cd3a2 100644 --- a/utility/rename_seasons.py +++ b/utility/rename_seasons.py @@ -6,6 +6,7 @@ # Requires: plexapi from __future__ import print_function +from __future__ import unicode_literals from plexapi.server import PlexServer diff --git a/utility/stream_limiter_ban_email.py b/utility/stream_limiter_ban_email.py index b71964e..34561e4 100644 --- a/utility/stream_limiter_ban_email.py +++ b/utility/stream_limiter_ban_email.py @@ -50,6 +50,7 @@ Concurrent stream count is the trigger. Trigger can be anything you want. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import str diff --git a/utility/sync_watch_status.py b/utility/sync_watch_status.py index bbc502b..fea029a 100644 --- a/utility/sync_watch_status.py +++ b/utility/sync_watch_status.py @@ -56,6 +56,7 @@ Taultulli > Settings > Notification Agents > New Script > Script Arguments: **Rating key must be a movie or episode. Shows and Seasons not support.... yet. """ from __future__ import print_function +from __future__ import unicode_literals from builtins import object import argparse from plexapi.myplex import MyPlexAccount diff --git a/utility/tautulli_friendly_name_to_ombi_alias_sync.py b/utility/tautulli_friendly_name_to_ombi_alias_sync.py index e3a0b6c..77db756 100644 --- a/utility/tautulli_friendly_name_to_ombi_alias_sync.py +++ b/utility/tautulli_friendly_name_to_ombi_alias_sync.py @@ -7,6 +7,7 @@ Author: DirtyCajunRice Requires: requests, python3.6+ """ from __future__ import print_function +from __future__ import unicode_literals from requests import Session from plexapi.server import CONFIG from urllib3 import disable_warnings