mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-26 14:30:25 +00:00
fix for [] in filenames
This commit is contained in:
parent
325921ea83
commit
67e599c20b
2 changed files with 22 additions and 19 deletions
|
@ -748,7 +748,6 @@ class Plex:
|
||||||
|
|
||||||
def update_item_from_assets(self, item, overlay=None, create=False):
|
def update_item_from_assets(self, item, overlay=None, create=False):
|
||||||
name = os.path.basename(os.path.dirname(str(item.locations[0])) if self.is_movie else str(item.locations[0]))
|
name = os.path.basename(os.path.dirname(str(item.locations[0])) if self.is_movie else str(item.locations[0]))
|
||||||
glob_name = name.translate({ord("["): "[[]", ord("]"): "[]]"}) if "[" in name else name
|
|
||||||
logger.debug(name)
|
logger.debug(name)
|
||||||
found_folder = False
|
found_folder = False
|
||||||
poster = None
|
poster = None
|
||||||
|
@ -759,7 +758,7 @@ class Plex:
|
||||||
if os.path.isdir(os.path.join(ad, name)):
|
if os.path.isdir(os.path.join(ad, name)):
|
||||||
item_dir = os.path.join(ad, name)
|
item_dir = os.path.join(ad, name)
|
||||||
else:
|
else:
|
||||||
matches = glob.glob(os.path.join(ad, "*", glob_name))
|
matches = util.glob_filter(os.path.join(ad, "*", name))
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
item_dir = os.path.abspath(matches[0])
|
item_dir = os.path.abspath(matches[0])
|
||||||
if item_dir is None:
|
if item_dir is None:
|
||||||
|
@ -768,12 +767,12 @@ class Plex:
|
||||||
poster_filter = os.path.join(item_dir, "poster.*")
|
poster_filter = os.path.join(item_dir, "poster.*")
|
||||||
background_filter = os.path.join(item_dir, "background.*")
|
background_filter = os.path.join(item_dir, "background.*")
|
||||||
else:
|
else:
|
||||||
poster_filter = os.path.join(ad, f"{glob_name}.*")
|
poster_filter = os.path.join(ad, f"{name}.*")
|
||||||
background_filter = os.path.join(ad, f"{glob_name}_background.*")
|
background_filter = os.path.join(ad, f"{name}_background.*")
|
||||||
matches = glob.glob(poster_filter)
|
matches = util.glob_filter(poster_filter)
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_url=False)
|
poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_url=False)
|
||||||
matches = glob.glob(background_filter)
|
matches = util.glob_filter(background_filter)
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
background = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_poster=False, is_url=False)
|
background = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_poster=False, is_url=False)
|
||||||
if poster or background:
|
if poster or background:
|
||||||
|
@ -783,8 +782,8 @@ class Plex:
|
||||||
if item_dir:
|
if item_dir:
|
||||||
season_filter = os.path.join(item_dir, f"Season{'0' if season.seasonNumber < 10 else ''}{season.seasonNumber}.*")
|
season_filter = os.path.join(item_dir, f"Season{'0' if season.seasonNumber < 10 else ''}{season.seasonNumber}.*")
|
||||||
else:
|
else:
|
||||||
season_filter = os.path.join(ad, f"{glob_name}_Season{'0' if season.seasonNumber < 10 else ''}{season.seasonNumber}.*")
|
season_filter = os.path.join(ad, f"{name}_Season{'0' if season.seasonNumber < 10 else ''}{season.seasonNumber}.*")
|
||||||
matches = glob.glob(season_filter)
|
matches = util.glob_filter(season_filter)
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
season_poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title} Season {season.seasonNumber}'s ", is_url=False)
|
season_poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title} Season {season.seasonNumber}'s ", is_url=False)
|
||||||
self.upload_images(season, poster=season_poster)
|
self.upload_images(season, poster=season_poster)
|
||||||
|
@ -792,8 +791,8 @@ class Plex:
|
||||||
if item_dir:
|
if item_dir:
|
||||||
episode_filter = os.path.join(item_dir, f"{episode.seasonEpisode.upper()}.*")
|
episode_filter = os.path.join(item_dir, f"{episode.seasonEpisode.upper()}.*")
|
||||||
else:
|
else:
|
||||||
episode_filter = os.path.join(ad, f"{glob_name}_{episode.seasonEpisode.upper()}.*")
|
episode_filter = os.path.join(ad, f"{name}_{episode.seasonEpisode.upper()}.*")
|
||||||
matches = glob.glob(episode_filter)
|
matches = util.glob_filter(episode_filter)
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
episode_poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title} {episode.seasonEpisode.upper()}'s ", is_url=False)
|
episode_poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title} {episode.seasonEpisode.upper()}'s ", is_url=False)
|
||||||
self.upload_images(episode, poster=episode_poster)
|
self.upload_images(episode, poster=episode_poster)
|
||||||
|
@ -810,22 +809,21 @@ class Plex:
|
||||||
def find_collection_assets(self, item, name=None, create=False):
|
def find_collection_assets(self, item, name=None, create=False):
|
||||||
if name is None:
|
if name is None:
|
||||||
name = item.title
|
name = item.title
|
||||||
glob_name = name.translate({ord("["): "[[]", ord("]"): "[]]"}) if "[" in name else name
|
|
||||||
for ad in self.asset_directory:
|
for ad in self.asset_directory:
|
||||||
poster = None
|
poster = None
|
||||||
background = None
|
background = None
|
||||||
if self.asset_folders:
|
if self.asset_folders:
|
||||||
if not os.path.isdir(os.path.join(ad, name)):
|
if not os.path.isdir(os.path.join(ad, name)):
|
||||||
continue
|
continue
|
||||||
poster_filter = os.path.join(ad, glob_name, "poster.*")
|
poster_filter = os.path.join(ad, name, "poster.*")
|
||||||
background_filter = os.path.join(ad, glob_name, "background.*")
|
background_filter = os.path.join(ad, name, "background.*")
|
||||||
else:
|
else:
|
||||||
poster_filter = os.path.join(ad, f"{glob_name}.*")
|
poster_filter = os.path.join(ad, f"{name}.*")
|
||||||
background_filter = os.path.join(ad, f"{glob_name}_background.*")
|
background_filter = os.path.join(ad, f"{name}_background.*")
|
||||||
matches = glob.glob(poster_filter)
|
matches = util.glob_filter(poster_filter)
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_url=False)
|
poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_url=False)
|
||||||
matches = glob.glob(background_filter)
|
matches = util.glob_filter(background_filter)
|
||||||
if len(matches) > 0:
|
if len(matches) > 0:
|
||||||
background = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_poster=False, is_url=False)
|
background = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_poster=False, is_url=False)
|
||||||
if poster or background:
|
if poster or background:
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import logging, os, re, signal, sys, time, traceback
|
import glob, logging, os, re, signal, sys, time, traceback
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
from logging.handlers import RotatingFileHandler
|
||||||
from pathvalidate import is_valid_filename, sanitize_filename
|
from pathvalidate import is_valid_filename, sanitize_filename
|
||||||
from plexapi.exceptions import BadRequest, NotFound, Unauthorized
|
from plexapi.exceptions import BadRequest, NotFound, Unauthorized
|
||||||
|
|
||||||
|
@ -203,7 +204,7 @@ def separator(text=None, space=True, border=True, debug=False):
|
||||||
|
|
||||||
def apply_formatter(handler, border=True):
|
def apply_formatter(handler, border=True):
|
||||||
text = f"| %(message)-{screen_width - 2}s |" if border else f"%(message)-{screen_width - 2}s"
|
text = f"| %(message)-{screen_width - 2}s |" if border else f"%(message)-{screen_width - 2}s"
|
||||||
if isinstance(handler, logging.handlers.RotatingFileHandler):
|
if isinstance(handler, RotatingFileHandler):
|
||||||
text = f"[%(asctime)s] %(filename)-27s %(levelname)-10s {text}"
|
text = f"[%(asctime)s] %(filename)-27s %(levelname)-10s {text}"
|
||||||
handler.setFormatter(logging.Formatter(text))
|
handler.setFormatter(logging.Formatter(text))
|
||||||
|
|
||||||
|
@ -246,6 +247,10 @@ def is_locked(filepath):
|
||||||
file_object.close()
|
file_object.close()
|
||||||
return locked
|
return locked
|
||||||
|
|
||||||
|
def glob_filter(filter_in):
|
||||||
|
filter_in = filter_in.translate({ord("["): "[[]", ord("]"): "[]]"}) if "[" in filter_in else filter_in
|
||||||
|
return glob.glob(filter_in)
|
||||||
|
|
||||||
def is_date_filter(value, modifier, data, final, current_time):
|
def is_date_filter(value, modifier, data, final, current_time):
|
||||||
if value is None:
|
if value is None:
|
||||||
return True
|
return True
|
||||||
|
|
Loading…
Reference in a new issue