Merge pull request #302 from JonnyWong16/feature/hide_episode_spoilers

Add option for summary prefix in hide_episode_spoilers.py
This commit is contained in:
blacktwin 2021-08-26 23:12:48 -04:00 committed by GitHub
commit 57afb59f0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -19,6 +19,8 @@
# --rating_key {rating_key} --image spoilers.png # --rating_key {rating_key} --image spoilers.png
# To blur the episode artwork (optional blur in pixels): # To blur the episode artwork (optional blur in pixels):
# --rating_key {rating_key} --blur 25 # --rating_key {rating_key} --blur 25
# To add a prefix to the summary (optional string prefix):
# --rating_key {rating_key} --summary_prefix "** SPOILERS **"
# * Watched (optional): # * Watched (optional):
# --rating_key {rating_key} --remove # --rating_key {rating_key} --remove
@ -54,7 +56,7 @@ def get_blurred_image(rating_key, blur=25):
'img_format': 'png', 'img_format': 'png',
'fallback': 'art' 'fallback': 'art'
} }
r = requests.get(TAUTULLI_URL.rstrip('/') + '/api/v2', params=params, stream=True) r = requests.get(TAUTULLI_URL.rstrip('/') + '/api/v2', params=params, stream=True)
if r.status_code == 200: if r.status_code == 200:
r.raw.decode_content = True r.raw.decode_content = True
@ -66,12 +68,13 @@ if __name__ == "__main__":
parser.add_argument('--rating_key', required=True, type=int) parser.add_argument('--rating_key', required=True, type=int)
parser.add_argument('--image') parser.add_argument('--image')
parser.add_argument('--blur', type=int, default=25) parser.add_argument('--blur', type=int, default=25)
parser.add_argument('--summary_prefix', nargs='?', const='** SPOILERS **')
parser.add_argument('--remove', action='store_true') parser.add_argument('--remove', action='store_true')
opts = parser.parse_args() opts = parser.parse_args()
plex = PlexServer(PLEX_URL, PLEX_TOKEN) plex = PlexServer(PLEX_URL, PLEX_TOKEN)
item = plex.fetchItem(opts.rating_key) item = plex.fetchItem(opts.rating_key)
if item.type == 'show': if item.type == 'show':
episodes = item.episodes() episodes = item.episodes()
show = item show = item
@ -91,7 +94,7 @@ if __name__ == "__main__":
episode_filepath = part.file episode_filepath = part.file
episode_folder = os.path.dirname(episode_filepath) episode_folder = os.path.dirname(episode_filepath)
episode_filename = os.path.splitext(os.path.basename(episode_filepath))[0] episode_filename = os.path.splitext(os.path.basename(episode_filepath))[0]
if opts.remove: if opts.remove:
# Find image files with the same name as the episode # Find image files with the same name as the episode
for filename in os.listdir(episode_folder): for filename in os.listdir(episode_folder):
@ -99,12 +102,16 @@ if __name__ == "__main__":
# Delete the episode artwork image file # Delete the episode artwork image file
os.remove(os.path.join(episode_folder, filename)) os.remove(os.path.join(episode_folder, filename))
elif opts.image: # Unlock the summary so it will get updated on refresh
episode.edit(**{'summary.locked': 0})
continue
if opts.image:
# File path to episode artwork using the same episode file name # File path to episode artwork using the same episode file name
episode_artwork = os.path.splitext(episode_filepath)[0] + os.path.splitext(opts.image)[1] episode_artwork = os.path.splitext(episode_filepath)[0] + os.path.splitext(opts.image)[1]
# Copy the image to the episode artwork # Copy the image to the episode artwork
shutil.copy2(opts.image, episode_artwork) shutil.copy2(opts.image, episode_artwork)
elif opts.blur: elif opts.blur:
# File path to episode artwork using the same episode file name # File path to episode artwork using the same episode file name
episode_artwork = os.path.splitext(episode_filepath)[0] + '.png' episode_artwork = os.path.splitext(episode_filepath)[0] + '.png'
@ -115,5 +122,12 @@ if __name__ == "__main__":
with open(episode_artwork, 'wb') as f: with open(episode_artwork, 'wb') as f:
shutil.copyfileobj(blurred_artwork, f) shutil.copyfileobj(blurred_artwork, f)
if opts.summary_prefix and not episode.summary.startswith(opts.summary_prefix):
# Use a zero-width space (\u200b) for blank lines
episode.edit(**{
'summary.value': opts.summary_prefix + '\n\u200b\n' + episode.summary,
'summary.locked': 1
})
# Refresh metadata for the episode # Refresh metadata for the episode
episode.refresh() episode.refresh()