From a95e3b456a5a01a5552d30970ffb4f99318b826d Mon Sep 17 00:00:00 2001 From: Carol Date: Tue, 12 Sep 2023 10:29:19 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E5=A2=9E=E5=8A=A0redo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 2 +- redo.py | 22 ++++++++++++---------- tmdb.py | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index 68bff31..3374871 100644 --- a/main.py +++ b/main.py @@ -95,7 +95,7 @@ if __name__ == '__main__': __output = "data/data/metadata/person" # TMDB API TOKEN __tmdb_token = "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIxYTU4ODAxMGY5OTUwYWEyNThhYjFhYjJlMjI4NGVmYSIsInN1YiI6IjYxYmRmOGNjMzgzZGYyMDA0MjIzNDhjOSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.RPG8F8AELlK7MgrXDR2U0YRv61VteZZ9ponilnkQqkE" - __mode = "scrape" + __mode = "redo" if len(sys_args.keys()) > 0: # 扫描目录 __dir_path = sys_args["__dir_path"] diff --git a/redo.py b/redo.py index 0592324..aafcc99 100644 --- a/redo.py +++ b/redo.py @@ -15,29 +15,31 @@ from tmdb import Tmdb def __redo(log, output, tmdb_token, language="zh-CN"): + log.logger.info("------------------- 开始重新刮削: {0} -------------------".format("./error_tmdb_ids.txt")) + with open("./error_tmdb_ids.txt", "r") as error_f: error_info = error_f.read() for info in error_info.split(","): info = info.strip() - __tmdbid = info.split("-")[2] - __actor_name = info.split("-")[0] + if "" == info: + break + __tmdb_id = info.split("-tmdb-")[1] + __actor_name = info.split("-tmdb-")[0] __name = __actor_name[0].lower() - __full_actor_name = __actor_name + "-tmdb-" + __tmdbid + __full_actor_name = __actor_name + "-tmdb-" + __tmdb_id __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, - language=language).create_actor_nfo() - else: - log.logger.info("当前路径已存在person.nfo文件, 跳过刮削:{0}".format(__path_dir)) + # 如果存在元数据则覆盖刮削 + Tmdb(log=log, tmdb_id=__tmdb_id, actor_path=__path_dir, tmdb_token=tmdb_token, + language=language).create_actor_nfo(redo=True) # 如果存在海报则不再进行刮削 if "folder.jpg" not in os.listdir(__path_dir): - Tmdb(log=log, tmdb_id=__tmdbid, actor_path=__path_dir, tmdb_token=tmdb_token, + Tmdb(log=log, tmdb_id=__tmdb_id, actor_path=__path_dir, tmdb_token=tmdb_token, language=language).get_actor_image() else: log.logger.info("当前路径已存在folder.jpg文件, 跳过刮削:{0}".format(__path_dir)) + log.logger.info("------------------- 结束重新刮削: {0} -------------------".format("./error_tmdb_ids.txt")) if __name__ == '__main__': diff --git a/tmdb.py b/tmdb.py index a8155f6..8a08eed 100644 --- a/tmdb.py +++ b/tmdb.py @@ -77,7 +77,7 @@ class Tmdb: plot = plot.replace("\n", "").replace("\r\n", "") return plot - def create_actor_nfo(self): + def create_actor_nfo(self, redo=False): actor_json = {} plot = self.get_actor_plot() actor_json["plot"] = plot @@ -120,10 +120,19 @@ class Tmdb: person_nfo = os.path.join(self.actor_path, "person.nfo") try: Make(xml_path=person_nfo, data=actor_data).create() + # 重做模式下删除重新成功刮削的信息 + if redo: + error_file_read = open("./error_tmdb_ids.txt", "r+") + new_read = error_file_read.read().replace(os.path.basename(self.actor_path) + ",", "") + error_file_w = open("./error_tmdb_ids.txt", "w") + error_file_w.write(new_read) + error_file_w.close() except Exception as e: os.remove(person_nfo) - error_file = open("./error_tmdb_ids.txt", "w+") - error_file.write(os.path.basename(self.actor_path) + ",") - error_file.close() + # 非重做模式下记录刮削异常信息,重做模式下不再重复记录 + if not redo: + error_file = open("./error_tmdb_ids.txt", "w+") + error_file.write(os.path.basename(self.actor_path) + ",") + error_file.close() self.log.logger.error(actor_data) self.log.logger.error("当前写入元数据出现异常,路径:{0}, 异常:{1}".format(self.actor_path, e))