From 8c9d31d235d17dcc3a1d49d1d707b351cee2b9b8 Mon Sep 17 00:00:00 2001 From: Carol Date: Fri, 8 Sep 2023 15:23:42 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=96=B0=E5=A2=9E=E5=85=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=96=87=E4=BB=B6=E8=BD=AC=E7=A7=BB=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collect_metadata.py | 35 +++++++++++++++++++++++++++++++++++ main.py | 26 ++++++++++++++++++++------ 2 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 collect_metadata.py diff --git a/collect_metadata.py b/collect_metadata.py new file mode 100644 index 0000000..fab538a --- /dev/null +++ b/collect_metadata.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import os + + +def __move(log, dir_file_path, output): + with open(dir_file_path, "r") as read_f: + file_name = os.path.basename(dir_file_path) + if "tvshow" in file_name: + file_name = os.path.basename(os.path.dirname(dir_file_path)) + ".nfo" + output_file_path = os.path.join(output, file_name) + with open(output_file_path, "w") as write_f: + write_f.write(read_f.read()) + log.logger.info("当前完成文件转移:{0}".format(dir_file_path)) + + +def __collect_nfo(log, dir_path, output): + if not os.path.exists(output): + os.makedirs(output) + log.logger.info("------------------- 开始转移演员元数据NFO文件 -------------------") + __file_paths = [] + log.logger.info("当前转移元数据刮削识别的根文件夹:{0}".format(dir_path)) + for folder in os.listdir(dir_path): + __folder2 = os.path.join(dir_path, folder) + # 判断是否文件夹 + if os.path.isdir(__folder2): + for nfo_file in os.listdir(__folder2): + __child_file_path = os.path.join(__folder2, nfo_file) + if ".nfo" in os.path.basename(__child_file_path): + __move(log, __child_file_path, output) + elif os.path.isfile(__folder2): + __file_name = os.path.basename(__folder2) + if ".nfo" in __file_name: + __move(log, __folder2, output) + log.logger.info("------------------- 结束转移演员元数据NFO文件 -------------------") diff --git a/main.py b/main.py index e23bd8e..9a68142 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,7 @@ import os import sys from utils.LoggerUtil import Logger from scrape import __execute +from collect_metadata import __collect_nfo def __init_logger(log_file="tmdb.log", level="info", back_count=3): @@ -23,7 +24,7 @@ def __init_logger(log_file="tmdb.log", level="info", back_count=3): return Logger(log_file_abspath, level=level, backCount=back_count) -def __check_version(): +def __check_version(log): version_info = sys.version_info if 3 > version_info.major: log.logger.error("当前Python版本不能小于3!") @@ -69,19 +70,29 @@ def __get_sys_args(log): raise SystemExit(1) else: arg_json["__tmdb_token"] = sys.argv[arg_key["--tmdb_token"] + 1] + if "--mode" not in arg_key.keys(): + log.logger.warn("未输入脚本执行模式,默认使用元数据刮削模式:{0}".format("--mode")) + arg_json["__mode"] = "scrape" + else: + mode_value = sys.argv[arg_key["--mode"] + 1] + if "collect" != mode_value and "scrape" != mode_value: + log.logger.error("请输入正确的脚本执行模式:{0}".format("collect(元数据文件转移)/scrape(元数据刮削)")) + raise SystemExit(1) + arg_json["__mode"] = mode_value return arg_json if __name__ == '__main__': # 初始化日志 - log = __init_logger() - sys_args = __get_sys_args(log=log) + __log = __init_logger() + sys_args = __get_sys_args(log=__log) # 扫描目录 __dir_path = ["example/movies", "example/tvs"] # 输出演员元数据目录 __output = "data/metadata/person" # TMDB API TOKEN __tmdb_token = "token.eyJhdWQiOiIxYTU4ODAxMGY5OTUwYWEyNThhYjFhYjJlMjI4NGVmYSIsInN1YiI6IjYxYmRmOGNjMzgzZGYyMDA0MjIzNDhjOSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.RPG8F8AELlK7MgrXDR2U0YRv61VteZZ9ponilnkQqkE" + __mode = "scrape" if len(sys_args.keys()) > 0: # 扫描目录 __dir_path = sys_args["__dir_path"] @@ -89,10 +100,13 @@ if __name__ == '__main__': __output = sys_args["__output"] # TMDB API TOKEN __tmdb_token = sys_args["__tmdb_token"] + __mode = sys_args["__mode"] # 检查python版本 - __check_version() + __check_version(log=__log) # 开始执行主程序 # 默认 language="zh-CN" (简体中文),可以通过修改 "language" 的值变更获取元数据的语言类别 for __real_dir_path in __dir_path: - __execute(log=log, dir_path=__real_dir_path, output=__output, tmdb_token=__tmdb_token) - pass + if "collect" == __mode: + __collect_nfo(__log, __real_dir_path, __output) + if "scrape" == __mode: + __execute(log=__log, dir_path=__real_dir_path, output=__output, tmdb_token=__tmdb_token)