120 lines
4.7 KiB
Python
120 lines
4.7 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
import os
|
|
import sys
|
|
|
|
from collect_metadata import __collect_nfo
|
|
from redo import __redo
|
|
from scrape import __execute
|
|
from utils.LoggerUtil import Logger
|
|
|
|
|
|
def __init_logger(log_file="tmdb.log", level="info", back_count=3):
|
|
"""
|
|
服务日志记录对象
|
|
:param log_file: 日志文件名
|
|
:param level: 日志记录级别。debug info warning error crit
|
|
:param back_count: 日志文件备份天数
|
|
:return: 日志对象
|
|
"""
|
|
# 获取当前文件路径
|
|
current_path = os.path.abspath(__file__)
|
|
# 获取当前文件的父目录
|
|
father_path = os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".")
|
|
# (必填)日志文件名 log_file="/data/ws_env/logtest/process.log"
|
|
log_file_abspath = os.path.join(father_path, "logs", log_file)
|
|
return Logger(log_file_abspath, level=level, backCount=back_count)
|
|
|
|
|
|
def __check_version(log):
|
|
version_info = sys.version_info
|
|
if 3 > version_info.major:
|
|
log.logger.error("当前Python版本不能小于3!")
|
|
raise SystemExit(1)
|
|
else:
|
|
if 8 > version_info.minor:
|
|
log.logger.error("当前Python版本不能小于3.8!")
|
|
raise SystemExit(1)
|
|
elif 8 == version_info.minor:
|
|
log.logger.warn("推荐使用Python 3.9 及以上版本!")
|
|
|
|
|
|
def __get_sys_args(log):
|
|
arg_json = {}
|
|
size = len(sys.argv)
|
|
if size == 1:
|
|
return arg_json
|
|
elif size > 1 and (size - 1) % 2 != 0:
|
|
print(size)
|
|
log.logger.error("请输入正确的配置参数!")
|
|
raise SystemExit(1)
|
|
i = 0
|
|
arg_key = {}
|
|
for arg in sys.argv:
|
|
arg_key[arg] = i
|
|
i = i + 1
|
|
if "--dir_path" not in arg_key.keys():
|
|
log.logger.error("请输入正确的扫描目录参数:{0}".format("--dir_path"))
|
|
raise SystemExit(1)
|
|
else:
|
|
__dir_arg = sys.argv[arg_key["--dir_path"] + 1]
|
|
dir_args = []
|
|
for d_arg in __dir_arg.split(","):
|
|
dir_args.append(d_arg.strip())
|
|
arg_json["__dir_path"] = dir_args
|
|
if "--output" not in arg_key.keys():
|
|
log.logger.error("请输入正确的输出演员元数据目录参数:{0}".format("--output"))
|
|
raise SystemExit(1)
|
|
else:
|
|
arg_json["__output"] = sys.argv[arg_key["--output"] + 1]
|
|
if "--tmdb_token" not in arg_key.keys():
|
|
log.logger.error("请输入正确的TMDB API TOKEN参数:{0}".format("--tmdb_token"))
|
|
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"] = "collect"
|
|
else:
|
|
mode_value = sys.argv[arg_key["--mode"] + 1]
|
|
if "collect" != mode_value and "scrape" != mode_value:
|
|
log.logger.error("请输入正确的脚本执行模式:{0}".format("collect(元数据文件转移)/scrape(元数据刮削)/redo(重新刮削异常元数据)"))
|
|
raise SystemExit(1)
|
|
arg_json["__mode"] = mode_value
|
|
return arg_json
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# 初始化日志
|
|
__log = __init_logger()
|
|
sys_args = __get_sys_args(log=__log)
|
|
# 扫描目录
|
|
# __dir_path = ["/volume2/video/animation", "/volume2/video/children", "/volume2/video/documentary", "/volume2/video/movies", "/volume2/video/tvs", "/volume2/video/variety"]
|
|
__dir_path = ["data/data/metadata/nfo"]
|
|
# 输出演员元数据目录
|
|
__output = "data/data/metadata/person"
|
|
# TMDB API TOKEN
|
|
__tmdb_token = "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIxYTU4ODAxMGY5OTUwYWEyNThhYjFhYjJlMjI4NGVmYSIsInN1YiI6IjYxYmRmOGNjMzgzZGYyMDA0MjIzNDhjOSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.RPG8F8AELlK7MgrXDR2U0YRv61VteZZ9ponilnkQqkE"
|
|
__mode = "redo"
|
|
if len(sys_args.keys()) > 0:
|
|
# 扫描目录
|
|
__dir_path = sys_args["__dir_path"]
|
|
# 输出演员元数据目录
|
|
__output = sys_args["__output"]
|
|
# TMDB API TOKEN
|
|
__tmdb_token = sys_args["__tmdb_token"]
|
|
__mode = sys_args["__mode"]
|
|
# 检查python版本
|
|
__check_version(log=__log)
|
|
# 开始执行主程序
|
|
# 默认 language="zh-CN" (简体中文),可以通过修改 "language" 的值变更获取元数据的语言类别
|
|
for __real_dir_path in __dir_path:
|
|
if "collect" == __mode:
|
|
__collect_nfo(__log, __real_dir_path, __output)
|
|
if "scrape" == __mode:
|
|
# 删除异常信息存储文件
|
|
os.remove("./error_tmdb_ids.txt")
|
|
__execute(log=__log, dir_path=__real_dir_path, output=__output, tmdb_token=__tmdb_token)
|
|
if "redo" == __mode:
|
|
__redo(log=__log, output=__output, tmdb_token=__tmdb_token)
|