add: 新增命令行方式启动脚本
This commit is contained in:
parent
361bdda7f8
commit
0b331e9ae4
13
README.md
13
README.md
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
## 使用
|
## 使用
|
||||||
* 环境:Python3.9
|
* 环境:Python3.9
|
||||||
> 实际上最新要求`Python3.8`,如果需要xml中生成`standalone`参数则必须使用`Python3.9`
|
> 最低要求`Python3.8`,如果需要xml中生成`standalone`参数则必须使用`Python3.9` 及以上版本
|
||||||
|
|
||||||
### 安装相关pip依赖包
|
### 安装相关pip依赖包
|
||||||
|
|
||||||
|
@ -68,10 +68,21 @@ pip3 install json
|
||||||
|
|
||||||
### 运行
|
### 运行
|
||||||
|
|
||||||
|
#### 直接修改脚本文件方式
|
||||||
1. 修改 `main.py` 文件中 `if __name__ == '__main__':` 方法中 `__dir_path` 、 `__output` 、 `__tmdb_token` 参数值
|
1. 修改 `main.py` 文件中 `if __name__ == '__main__':` 方法中 `__dir_path` 、 `__output` 、 `__tmdb_token` 参数值
|
||||||
2. 执行脚本
|
2. 执行脚本
|
||||||
```python
|
```python
|
||||||
python3 main.py
|
python3 main.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 命令行执行
|
||||||
|
> 注意参数 `--dir_path` 的值如果需要配置多个,请使用英文半角逗号拼接,不要有空格
|
||||||
|
|
||||||
|
```python
|
||||||
|
python3 main.py --dir_path "example/movies","example/tvs" --output data/metadata/person --tmdb_token
|
||||||
|
```
|
||||||
|
|
||||||
|
### 补充
|
||||||
|
1. 运行提示 `no module name requests` 但是实际python环境中又安装了的:
|
||||||
|
* 查看当前执行的python版本:```python --version```
|
||||||
|
* 例如 ```python3 --version``` 显示的是3.8,但是实际又3.9版本的环境,可以使用 ```python3.9 -m pip install requests``` 进行指定python版本的依赖包安装
|
||||||
|
|
95
main.py
95
main.py
|
@ -2,10 +2,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from analyze import Analyze
|
|
||||||
from tmdb import Tmdb
|
|
||||||
from utils.LoggerUtil import Logger
|
from utils.LoggerUtil import Logger
|
||||||
|
from scrape import __execute
|
||||||
|
|
||||||
|
|
||||||
def __init_logger(log_file="tmdb.log", level="info", back_count=3):
|
def __init_logger(log_file="tmdb.log", level="info", back_count=3):
|
||||||
|
@ -25,9 +23,6 @@ def __init_logger(log_file="tmdb.log", level="info", back_count=3):
|
||||||
return Logger(log_file_abspath, level=level, backCount=back_count)
|
return Logger(log_file_abspath, level=level, backCount=back_count)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __check_version():
|
def __check_version():
|
||||||
version_info = sys.version_info
|
version_info = sys.version_info
|
||||||
if 3 > version_info.major:
|
if 3 > version_info.major:
|
||||||
|
@ -41,55 +36,63 @@ def __check_version():
|
||||||
log.logger.warn("推荐使用Python 3.9 及以上版本!")
|
log.logger.warn("推荐使用Python 3.9 及以上版本!")
|
||||||
|
|
||||||
|
|
||||||
def __execute(dir_path, output, tmdb_token):
|
def __get_sys_args(log):
|
||||||
log.logger.info("------------------- 开始获取演员元数据及海报 -------------------")
|
arg_json = {}
|
||||||
__file_paths = []
|
size = len(sys.argv)
|
||||||
log.logger.info("当前执行元数据刮削识别的根文件夹:{0}".format(dir_path))
|
if size == 1:
|
||||||
for folder in os.listdir(dir_path):
|
return arg_json
|
||||||
__folder2 = os.path.join(dir_path, folder)
|
elif size > 1 and (size - 1) % 2 != 0:
|
||||||
# 判断是否文件夹
|
print(size)
|
||||||
if os.path.isdir(__folder2):
|
log.logger.error("请输入正确的配置参数!")
|
||||||
for nfo_file in os.listdir(__folder2):
|
raise SystemExit(1)
|
||||||
__child_file_path = os.path.join(__folder2, nfo_file)
|
i = 0
|
||||||
if ".nfo" in os.path.basename(__child_file_path):
|
arg_key = {}
|
||||||
__file_paths.append(__child_file_path)
|
for arg in sys.argv:
|
||||||
elif os.path.isfile(__folder2):
|
arg_key[arg] = i
|
||||||
__file_name = os.path.basename(__folder2)
|
i = i + 1
|
||||||
if ".nfo" in __file_name:
|
if "--dir_path" not in arg_key.keys():
|
||||||
__file_paths.append(__folder2)
|
log.logger.error("请输入正确的扫描目录参数:{0}".format("--dir_path"))
|
||||||
for __file_path in __file_paths:
|
raise SystemExit(1)
|
||||||
log.logger.info("开始处理元数据刮削识别:{0}".format(__file_path))
|
else:
|
||||||
# __file_path = "example/神出鬼没 (2023) - 2160p.nfo"
|
__dir_arg = sys.argv[arg_key["--dir_path"] + 1]
|
||||||
__nfo_data = Analyze(file_path=__file_path).analyze()
|
dir_args = []
|
||||||
for __actor in __nfo_data["actors"]:
|
for d_arg in __dir_arg.split(","):
|
||||||
__tmdbid = __actor["tmdbid"]
|
dir_args.append(d_arg.strip())
|
||||||
__actor_name = __actor["name"]
|
arg_json["__dir_path"] = dir_args
|
||||||
__name = __actor_name[1].lower()
|
if "--output" not in arg_key.keys():
|
||||||
__full_actor_name = __actor_name + "-tmdb-" + __tmdbid
|
log.logger.error("请输入正确的输出演员元数据目录参数:{0}".format("--output"))
|
||||||
__path_dir = os.path.join(output, __name, __full_actor_name)
|
raise SystemExit(1)
|
||||||
if not os.path.exists(__path_dir):
|
else:
|
||||||
os.makedirs(__path_dir)
|
arg_json["__output"] = sys.argv[arg_key["--output"] + 1]
|
||||||
# 如果存在元数据则不再进行刮削
|
if "--tmdb_token" not in arg_key.keys():
|
||||||
if "person.nfo" not in os.listdir(__path_dir):
|
log.logger.error("请输入正确的TMDB API TOKEN参数:{0}".format("--tmdb_token"))
|
||||||
Tmdb(log=log, tmdb_id=__tmdbid, actor_path=__path_dir, tmdb_token=tmdb_token).create_actor_nfo()
|
raise SystemExit(1)
|
||||||
# 如果存在海报则不再进行刮削
|
else:
|
||||||
if "folder.jpg" not in os.listdir(__path_dir):
|
arg_json["__tmdb_token"] = sys.argv[arg_key["--tmdb_token"] + 1]
|
||||||
Tmdb(log=log, tmdb_id=__tmdbid, actor_path=__path_dir, tmdb_token=tmdb_token).get_actor_image()
|
return arg_json
|
||||||
log.logger.info("------------------- 结束获取演员元数据及海报 -------------------")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
# 初始化日志
|
||||||
|
log = __init_logger()
|
||||||
|
sys_args = __get_sys_args(log=log)
|
||||||
# 扫描目录
|
# 扫描目录
|
||||||
__dir_path = ["example/tvs"]
|
__dir_path = ["example/movies", "example/tvs"]
|
||||||
# 输出演员元数据目录
|
# 输出演员元数据目录
|
||||||
__output = "data/metadata/person"
|
__output = "data/metadata/person"
|
||||||
# TMDB API TOKEN
|
# TMDB API TOKEN
|
||||||
__tmdb_token = "tmdb_token"
|
__tmdb_token = "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIxYTU4ODAxMGY5OTUwYWEyNThhYjFhYjJlMjI4NGVmYSIsInN1YiI6IjYxYmRmOGNjMzgzZGYyMDA0MjIzNDhjOSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.RPG8F8AELlK7MgrXDR2U0YRv61VteZZ9ponilnkQqkE"
|
||||||
# 初始化日志
|
if len(sys_args.keys()) > 0:
|
||||||
log = __init_logger()
|
# 扫描目录
|
||||||
|
__dir_path = sys_args["__dir_path"]
|
||||||
|
# 输出演员元数据目录
|
||||||
|
__output = sys_args["__output"]
|
||||||
|
# TMDB API TOKEN
|
||||||
|
__tmdb_token = sys_args["__tmdb_token"]
|
||||||
# 检查python版本
|
# 检查python版本
|
||||||
__check_version()
|
__check_version()
|
||||||
# 开始执行主程序
|
# 开始执行主程序
|
||||||
# 默认 language="zh-CN" (简体中文),可以通过修改 "language" 的值变更获取元数据的语言类别
|
# 默认 language="zh-CN" (简体中文),可以通过修改 "language" 的值变更获取元数据的语言类别
|
||||||
for __real_dir_path in __dir_path:
|
for __real_dir_path in __dir_path:
|
||||||
__execute(dir_path=__real_dir_path, output=__output, tmdb_token=__tmdb_token)
|
# __execute(log=log, dir_path=__real_dir_path, output=__output, tmdb_token=__tmdb_token)
|
||||||
|
pass
|
||||||
|
|
45
scrape.py
Normal file
45
scrape.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from analyze import Analyze
|
||||||
|
from tmdb import Tmdb
|
||||||
|
|
||||||
|
|
||||||
|
def __execute(log, dir_path, output, tmdb_token):
|
||||||
|
log.logger.info("------------------- 开始获取演员元数据及海报 -------------------")
|
||||||
|
__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):
|
||||||
|
__file_paths.append(__child_file_path)
|
||||||
|
elif os.path.isfile(__folder2):
|
||||||
|
__file_name = os.path.basename(__folder2)
|
||||||
|
if ".nfo" in __file_name:
|
||||||
|
__file_paths.append(__folder2)
|
||||||
|
for __file_path in __file_paths:
|
||||||
|
log.logger.info("开始处理元数据刮削识别:{0}".format(__file_path))
|
||||||
|
# __file_path = "example/神出鬼没 (2023) - 2160p.nfo"
|
||||||
|
__nfo_data = Analyze(file_path=__file_path).analyze()
|
||||||
|
for __actor in __nfo_data["actors"]:
|
||||||
|
__tmdbid = __actor["tmdbid"]
|
||||||
|
__actor_name = __actor["name"]
|
||||||
|
__name = __actor_name[1].lower()
|
||||||
|
__full_actor_name = __actor_name + "-tmdb-" + __tmdbid
|
||||||
|
__path_dir = os.path.join(output, __name, __full_actor_name)
|
||||||
|
if not os.path.exists(__path_dir):
|
||||||
|
os.makedirs(__path_dir)
|
||||||
|
# 如果存在元数据则不再进行刮削
|
||||||
|
if "person.nfo" not in os.listdir(__path_dir):
|
||||||
|
Tmdb(log=log, tmdb_id=__tmdbid, actor_path=__path_dir, tmdb_token=tmdb_token).create_actor_nfo()
|
||||||
|
# 如果存在海报则不再进行刮削
|
||||||
|
if "folder.jpg" not in os.listdir(__path_dir):
|
||||||
|
Tmdb(log=log, tmdb_id=__tmdbid, actor_path=__path_dir, tmdb_token=tmdb_token).get_actor_image()
|
||||||
|
log.logger.info("------------------- 结束获取演员元数据及海报 -------------------")
|
||||||
|
|
2
tmdb.py
2
tmdb.py
|
@ -10,7 +10,7 @@ import utils.DateUtil as DateUtil
|
||||||
# https://tmdb.nastool.org
|
# https://tmdb.nastool.org
|
||||||
# https://t.nastool.workers.dev
|
# https://t.nastool.workers.dev
|
||||||
# https://api.themoviedb.org
|
# https://api.themoviedb.org
|
||||||
api_url = "https://api.themoviedb.org"
|
api_url = "https://api.tmdb.org"
|
||||||
image_url = "https://www.themoviedb.org"
|
image_url = "https://www.themoviedb.org"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user