From 7acbd0904ba1cd328a72689139bb1d1fb5dfbb25 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 21 Aug 2023 16:44:42 +0800 Subject: [PATCH] fix tmdbapi --- app/modules/themoviedb/__init__.py | 2 +- app/modules/themoviedb/tmdbapi.py | 89 ++++++++++++------------------ 2 files changed, 36 insertions(+), 55 deletions(-) diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 46584e22..42a64eec 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -89,7 +89,7 @@ class TheMovieDbModule(_ModuleBase): year=meta.year, mtype=MediaType.TV) if not info: - # 非严格模式下去掉年份和类型再查一次 + # 去掉年份和类型再查一次 info = self.tmdb.match_multi(name=meta.name) if not info: diff --git a/app/modules/themoviedb/tmdbapi.py b/app/modules/themoviedb/tmdbapi.py index 4307555f..19066667 100644 --- a/app/modules/themoviedb/tmdbapi.py +++ b/app/modules/themoviedb/tmdbapi.py @@ -191,8 +191,7 @@ class TmdbHelper: if not info: logger.debug( f"正在识别{mtype.value}:{name}, 年份={year} ...") - info = self.__search_tv_by_name(name, - year) + info = self.__search_tv_by_name(name, year) if info: info['media_type'] = MediaType.TV # 返回 @@ -222,31 +221,22 @@ class TmdbHelper: logger.debug(f"{name} 未找到相关电影信息!") return {} else: - # 匹配标题、原标题 - if year: - for movie in movies: - if movie.get('release_date'): - if self.__compare_names(name, movie.get('title')) \ - and movie.get('release_date')[0:4] == str(year): - return movie - if self.__compare_names(name, movie.get('original_title')) \ - and movie.get('release_date')[0:4] == str(year): - return movie - # 匹配别名、译名 - if not movie.get("names"): - movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id")) - if movie and self.__compare_names(name, movie.get("names")): - return movie - else: - for movie in movies: - if self.__compare_names(name, movie.get('title')) \ - or self.__compare_names(name, movie.get('original_title')): - return movie - # 匹配别名、译名 - if not movie.get("names"): - movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id")) - if movie and self.__compare_names(name, movie.get("names")): - return movie + for movie in movies: + # 年份 + movie_year = movie.get('release_date')[0:4] if movie.get('release_date') else None + if year and movie_year != year: + # 年份不匹配 + continue + # 匹配标题、原标题 + if self.__compare_names(name, movie.get('title')): + return movie + if self.__compare_names(name, movie.get('original_title')): + return movie + # 匹配别名、译名 + if not movie.get("names"): + movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id")) + if movie and self.__compare_names(name, movie.get("names")): + return movie return {} def __search_tv_by_name(self, name: str, year: str) -> Optional[dict]: @@ -273,32 +263,21 @@ class TmdbHelper: logger.debug(f"{name} 未找到相关剧集信息!") return {} else: - # 匹配标题、原标题 - if year: - for tv in tvs: - if tv.get('first_air_date'): - if self.__compare_names(name, tv.get('name')) \ - and tv.get('first_air_date')[0:4] == str(year): - return tv - if self.__compare_names(name, tv.get('original_name')) \ - and tv.get('first_air_date')[0:4] == str(year): - return tv - # 匹配别名、译名 - if not tv.get("names"): - tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id")) - if tv and self.__compare_names(name, tv.get("names")): - return tv - else: - for tv in tvs: - if self.__compare_names(name, tv.get('name')) \ - or self.__compare_names(name, tv.get('original_name')): - return tv - # 匹配别名、译名 - if not tv.get("names"): - tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id")) - if tv and self.__compare_names(name, tv.get("names")): - return tv - + for tv in tvs: + tv_year = tv.get('first_air_date')[0:4] if tv.get('first_air_date') else None + if year and tv_year != year: + # 年份不匹配 + continue + # 匹配标题、原标题 + if self.__compare_names(name, tv.get('name')): + return tv + if self.__compare_names(name, tv.get('original_name')): + return tv + # 匹配别名、译名 + if not tv.get("names"): + tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id")) + if tv and self.__compare_names(name, tv.get("names")): + return tv return {} def __search_tv_by_season(self, name: str, season_year: str, season_number: int) -> Optional[dict]: @@ -342,9 +321,11 @@ class TmdbHelper: else: # 匹配标题、原标题 for tv in tvs: + # 年份 + tv_year = tv.get('first_air_date')[0:4] if tv.get('first_air_date') else None if (self.__compare_names(name, tv.get('name')) or self.__compare_names(name, tv.get('original_name'))) \ - and (tv.get('first_air_date') and tv.get('first_air_date')[0:4] == str(season_year)): + and (tv_year == str(season_year)): return tv # 匹配别名、译名 if not tv.get("names"):