tmdb-person/multi_thread.py
2023-09-14 15:27:42 +08:00

62 lines
2.5 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 多线程模式执行脚本
import os
import shutil
from main import __init_logger, __get_sys_args, __check_version, __create_default_dirs
from utils.scrape import Scrape
def __cut_dirs(log, dir_path, output):
log.logger.info("开始执行元数据文件分组:{0}".format(dir_path))
# 默认 language="zh-CN" (简体中文),可以通过修改 "language" 的值变更获取元数据的语言类别
# 将nfo文件根据首字母小些切分成不同的文件夹
nfo_list = os.path.join(os.path.dirname(output), "nfo_list")
if not os.path.exists(nfo_list):
os.makedirs(nfo_list)
for nfo_file_dir in dir_path:
for nfo_file in os.listdir(nfo_file_dir):
__name = nfo_file[0].lower()
__path_dir = os.path.join(nfo_list, __name)
if not os.path.exists(__path_dir):
os.makedirs(__path_dir)
shutil.copyfile(os.path.join(nfo_file_dir, nfo_file), os.path.join(__path_dir, nfo_file))
log.logger.info("结束执行元数据文件分组:{0}".format(nfo_list))
return nfo_list
if __name__ == '__main__':
# 初始化日志
__log = __init_logger()
sys_args = __get_sys_args(log=__log)
# 扫描目录
__dir_path = ["data/metadata/nfo"]
# 输出演员元数据目录
__output = "data/metadata/person"
# TMDB API TOKEN
__tmdb_token = "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIxYTU4ODAxMGY5OTUwYWEyNThhYjFhYjJlMjI4NGVmYSIsInN1YiI6IjYxYmRmOGNjMzgzZGYyMDA0MjIzNDhjOSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.RPG8F8AELlK7MgrXDR2U0YRv61VteZZ9ponilnkQqkE"
__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"]
__language = sys_args["__language"]
# 检查python版本
__check_version(log=__log)
# 开始执行主程序
__create_default_dirs()
__nfo_list = __cut_dirs(log=__log, dir_path=__dir_path, output=__output)
# 删除异常信息存储文件
error_file_path = "./error_tmdb_ids.txt"
if os.path.exists(error_file_path):
os.remove(error_file_path)
for dir_name in os.listdir(__nfo_list):
scrape = Scrape(log=__log, dir_path=os.path.join(__nfo_list, dir_name), output=__output,
tmdb_token=__tmdb_token, language=__language)
scrape.start()