From 1a0164c5cf1c1c5e8455cee3852a099e4de823a3 Mon Sep 17 00:00:00 2001 From: Marks Date: Sat, 24 Dec 2022 12:41:39 -0800 Subject: [PATCH 1/3] add jellyfin setting --- ImageProcessing/__init__.py | 4 ++-- config.ini | 4 +++- config.py | 6 +++--- core.py | 31 +++++++++++++++++++------------ 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/ImageProcessing/__init__.py b/ImageProcessing/__init__.py index 4df1797..768b1b4 100644 --- a/ImageProcessing/__init__.py +++ b/ImageProcessing/__init__.py @@ -60,9 +60,9 @@ def face_crop_height(filename, width, height): return (0, 0, width, cropHeight) -def cutImage(imagecut, path, fanart_path, poster_path, skip_facerec=False): +def cutImage(imagecut, path, thumb_path, poster_path, skip_facerec=False): conf = config.getInstance() - fullpath_fanart = os.path.join(path, fanart_path) + fullpath_fanart = os.path.join(path, thumb_path) fullpath_poster = os.path.join(path, poster_path) aspect_ratio = conf.face_aspect_ratio() if conf.face_aways_imagecut(): diff --git a/config.ini b/config.ini index bd6c522..3f69ec5 100755 --- a/config.ini +++ b/config.ini @@ -21,8 +21,10 @@ nfo_skip_days = 30 ignore_failed_list = 0 download_only_missing_images = 1 mapping_table_validity = 7 +; 一些jellyfin中特有的设置 (0:不开启, 1:开启) 比如 ; 在jellyfin中tags和genres重复,因此可以只保存genres到nfo中 -donot_save_tags = 0 +; jellyfin中只需要保存fanart,不需要保存thumb +jellyfin = 0 ; 开启后tag和genere只显示演员 actor_only_tag = 0 sleep = 3 diff --git a/config.py b/config.py index 5232713..f04e327 100644 --- a/config.py +++ b/config.py @@ -213,8 +213,8 @@ class Config: def mapping_table_validity(self) -> int: return self.conf.getint("common", "mapping_table_validity") - def donot_save_tags(self) -> int: - return self.conf.getint("common", "donot_save_tags") + def jellyfin(self) -> int: + return self.conf.getint("common", "jellyfin") def actor_only_tag(self) -> bool: return self.conf.getboolean("common", "actor_only_tag") @@ -443,7 +443,7 @@ class Config: conf.set(sec1, "ignore_failed_list", 0) conf.set(sec1, "download_only_missing_images", 1) conf.set(sec1, "mapping_table_validity", 7) - conf.set(sec1, "donot_save_tags", 0) + conf.set(sec1, "jellyfin", 0) sec2 = "advenced_sleep" conf.add_section(sec2) diff --git a/core.py b/core.py index 9f581d3..07eeb4a 100644 --- a/core.py +++ b/core.py @@ -279,15 +279,15 @@ def image_ext(url): # 封面是否下载成功,否则移动到failed def image_download(cover, fanart_path, thumb_path, path, filepath, json_headers=None): - full_filepath = os.path.join(path, fanart_path) + full_filepath = os.path.join(path, thumb_path) if config.getInstance().download_only_missing_images() and not file_not_exist_or_empty(full_filepath): return if json_headers != None: - if download_file_with_filename(cover, fanart_path, path, filepath, json_headers['headers']) == 'failed': + if download_file_with_filename(cover, thumb_path, path, filepath, json_headers['headers']) == 'failed': moveFailedFolder(filepath) return else: - if download_file_with_filename(cover, fanart_path, path, filepath) == 'failed': + if download_file_with_filename(cover, thumb_path, path, filepath) == 'failed': moveFailedFolder(filepath) return @@ -296,16 +296,17 @@ def image_download(cover, fanart_path, thumb_path, path, filepath, json_headers= if file_not_exist_or_empty(full_filepath): print('[!]Image Download Failed! Trying again. [{}/3]', i + 1) if json_headers != None: - download_file_with_filename(cover, fanart_path, path, filepath, json_headers['headers']) + download_file_with_filename(cover, thumb_path, path, filepath, json_headers['headers']) else: - download_file_with_filename(cover, fanart_path, path, filepath) + download_file_with_filename(cover, thumb_path, path, filepath) continue else: break if file_not_exist_or_empty(full_filepath): return print('[+]Image Downloaded!', Path(full_filepath).name) - shutil.copyfile(full_filepath, os.path.join(path, thumb_path)) + if not config.getInstance().jellyfin(): + shutil.copyfile(full_filepath, os.path.join(path, fanart_path)) def print_files(path, leak_word, c_word, naming_rule, part, cn_sub, json_data, filepath, tag, actor_list, liuchu, @@ -332,7 +333,12 @@ def print_files(path, leak_word, c_word, naming_rule, part, cn_sub, json_data, f pass # KODI内查看影片信息时找不到number,配置naming_rule=number+'#'+title虽可解决 # 但使得标题太长,放入时常为空的outline内会更适合,软件给outline留出的显示版面也较大 - outline = f"{number}#{outline}" + if not outline: + pass + elif json_data['source'] == 'pissplay': + outline = f"{outline}" + else: + outline = f"{number}#{outline}" with open(nfo_path, "wt", encoding='UTF-8') as code: print('', file=code) print("", file=code) @@ -352,7 +358,8 @@ def print_files(path, leak_word, c_word, naming_rule, part, cn_sub, json_data, f print(" " + str(runtime).replace(" ", "") + "", file=code) print(" " + director + "", file=code) print(" " + poster_path + "", file=code) - print(" " + thumb_path + "", file=code) + if not config.getInstance().jellyfin(): # jellyfin 不需要保存thunb + print(" " + thumb_path + "", file=code) print(" " + fanart_path + "", file=code) try: for key in actor_list: @@ -368,8 +375,8 @@ def print_files(path, leak_word, c_word, naming_rule, part, cn_sub, json_data, f print(" " + studio + "", file=code) print(" ", file=code) - skip_tags = config.getInstance().donot_save_tags() - if not skip_tags: + jellyfin = config.getInstance().jellyfin() + if not jellyfin: if config.getInstance().actor_only_tag(): for key in actor_list: try: @@ -920,7 +927,7 @@ def core_main(movie_path, number_th, oCC, specified_source=None, specified_url=N pass # 裁剪图 - cutImage(imagecut, path, fanart_path, poster_path, bool(conf.face_uncensored_only() and not uncensored)) + cutImage(imagecut, path, thumb_path, poster_path, bool(conf.face_uncensored_only() and not uncensored)) # 兼容Jellyfin封面图文件名规则 if multi_part and conf.jellyfin_multi_part_fanart(): @@ -998,7 +1005,7 @@ def core_main(movie_path, number_th, oCC, specified_source=None, specified_url=N # 添加水印 if conf.is_watermark(): - add_mark(os.path.join(path, poster_path), os.path.join(path, thumb_path), cn_sub, leak, uncensored, hack, + add_mark(os.path.join(path, poster_path), os.path.join(path, fanart_path), cn_sub, leak, uncensored, hack, _4k) # 兼容Jellyfin封面图文件名规则 From 02c84f5d411866b4adcb3eed41f90d345b5fc157 Mon Sep 17 00:00:00 2001 From: Marks Date: Sat, 24 Dec 2022 12:47:07 -0800 Subject: [PATCH 2/3] modify doc --- config.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.ini b/config.ini index 3f69ec5..5b05210 100755 --- a/config.ini +++ b/config.ini @@ -22,8 +22,8 @@ ignore_failed_list = 0 download_only_missing_images = 1 mapping_table_validity = 7 ; 一些jellyfin中特有的设置 (0:不开启, 1:开启) 比如 -; 在jellyfin中tags和genres重复,因此可以只保存genres到nfo中 -; jellyfin中只需要保存fanart,不需要保存thumb +; 在jellyfin中tags和genres重复,因此可以只需保存genres到nfo中 +; jellyfin中只需要保存thumb,不需要保存fanart jellyfin = 0 ; 开启后tag和genere只显示演员 actor_only_tag = 0 From eaed709aa2e17b47e60ff2e52c063ee06443a806 Mon Sep 17 00:00:00 2001 From: Marks Date: Sat, 24 Dec 2022 19:17:31 -0800 Subject: [PATCH 3/3] change format --- core.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/core.py b/core.py index 07eeb4a..28cca5b 100644 --- a/core.py +++ b/core.py @@ -342,9 +342,14 @@ def print_files(path, leak_word, c_word, naming_rule, part, cn_sub, json_data, f with open(nfo_path, "wt", encoding='UTF-8') as code: print('', file=code) print("", file=code) - print(" <![CDATA[" + naming_rule + "]]>", file=code) - print(" ", file=code) - print(" ", file=code) + if not config.getInstance().jellyfin(): + print(" <![CDATA[" + naming_rule + "]]>", file=code) + print(" ", file=code) + print(" ", file=code) + else: + print(" " + naming_rule + "", file=code) + print(" " + naming_rule + "", file=code) + print(" " + naming_rule + "", file=code) print(" JP-18+", file=code) print(" JP-18+", file=code) try: @@ -353,14 +358,18 @@ def print_files(path, leak_word, c_word, naming_rule, part, cn_sub, json_data, f print(" ", file=code) print(" " + studio + "", file=code) print(" " + year + "", file=code) - print(" ", file=code) - print(" ", file=code) + if not config.getInstance().jellyfin(): + print(" ", file=code) + print(" ", file=code) + else: + print(" " + outline + "", file=code) + print(" " + outline + "", file=code) print(" " + str(runtime).replace(" ", "") + "", file=code) print(" " + director + "", file=code) print(" " + poster_path + "", file=code) - if not config.getInstance().jellyfin(): # jellyfin 不需要保存thunb - print(" " + thumb_path + "", file=code) - print(" " + fanart_path + "", file=code) + print(" " + thumb_path + "", file=code) + if not config.getInstance().jellyfin(): # jellyfin 不需要保存fanart + print(" " + fanart_path + "", file=code) try: for key in actor_list: print(" ", file=code) @@ -1015,4 +1024,4 @@ def core_main(movie_path, number_th, oCC, specified_source=None, specified_url=N # 最后输出.nfo元数据文件,以完成.nfo文件创建作为任务成功标志 print_files(path, leak_word, c_word, json_data.get('naming_rule'), part, cn_sub, json_data, movie_path, tag, json_data.get('actor_list'), liuchu, uncensored, hack_word, fanart_path, poster_path, - thumb_path) + _4k, thumb_path)