-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
145 lines (132 loc) · 5.4 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/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)