tmdb-person/main.py

146 lines
5.4 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
from utils.collect_metadata import __collect_nfo
from utils.redo import __redo, __check
from utils.scrape import Scrape
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
if "--language" not in arg_key.keys():
log.logger.warn("未输入脚本执行语言,默认使用中文简体语言格式:{0}".format("--language"))
arg_json["__language"] = "zh-CN"
else:
mode_value = sys.argv[arg_key["--language"] + 1]
arg_json["__language"] = mode_value
return arg_json
def __create_default_dirs():
if not os.path.exists("./complete"):
os.makedirs("./complete")
if not os.path.exists("./redo"):
os.makedirs("./redo")
def __master_execute(log, dir_path, output, tmdb_token, mode, language="zh-CN"):
# 检查python版本
__check_version(log=log)
# 开始执行主程序
__create_default_dirs()
# 默认 language="zh-CN" (简体中文),可以通过修改 "language" 的值变更获取元数据的语言类别
for __real_dir_path in dir_path:
if "collect" == mode:
__collect_nfo(log, __real_dir_path, output)
if "scrape" == mode:
# 删除异常信息存储文件
error_file_path = "./error_tmdb_ids.txt"
if os.path.exists(error_file_path):
os.remove(error_file_path)
scrape = Scrape(log=log, dir_path=__real_dir_path, output=output, tmdb_token=tmdb_token, language=language)
scrape.start()
if "redo" == mode:
__redo(log=log, output=output, tmdb_token=tmdb_token, language=language)
if "check" == mode:
__check(scan_path=output)
if __name__ == '__main__':
# 初始化日志
__log = __init_logger()
sys_args = __get_sys_args(log=__log)
# 扫描目录
__dir_path = ["/data/tmdb-person/data/metadata/nfo"]
# 输出演员元数据目录
__output = "/data/tmdb-person/data/metadata/person"
# TMDB API TOKEN
__tmdb_token = "TMDB_TOKEN"
__mode = "scrape"
__language = "zh-CN"
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"]
__language = sys_args["__language"]
__master_execute(log=__log, dir_path=__dir_path, output=__output, tmdb_token=__tmdb_token, mode=__mode,
language=__language)