feat: 根据原标题查询媒体服务器(plex)

This commit is contained in:
WithdewHua 2023-09-15 00:08:15 +08:00
parent 1ea80e6870
commit 4ab60423c1
2 changed files with 17 additions and 2 deletions

View File

@ -54,7 +54,10 @@ class PlexModule(_ModuleBase):
if movie: if movie:
logger.info(f"媒体库中已存在:{movie}") logger.info(f"媒体库中已存在:{movie}")
return ExistMediaInfo(type=MediaType.MOVIE) return ExistMediaInfo(type=MediaType.MOVIE)
movies = self.plex.get_movies(title=mediainfo.title, year=mediainfo.year, tmdb_id=mediainfo.tmdb_id) movies = self.plex.get_movies(title=mediainfo.title,
original_title=mediainfo.original_title,
year=mediainfo.year,
tmdb_id=mediainfo.tmdb_id)
if not movies: if not movies:
logger.info(f"{mediainfo.title_year} 在媒体库中不存在") logger.info(f"{mediainfo.title_year} 在媒体库中不存在")
return None return None
@ -63,6 +66,7 @@ class PlexModule(_ModuleBase):
return ExistMediaInfo(type=MediaType.MOVIE) return ExistMediaInfo(type=MediaType.MOVIE)
else: else:
tvs = self.plex.get_tv_episodes(title=mediainfo.title, tvs = self.plex.get_tv_episodes(title=mediainfo.title,
original_title=mediainfo.original_title,
year=mediainfo.year, year=mediainfo.year,
tmdb_id=mediainfo.tmdb_id, tmdb_id=mediainfo.tmdb_id,
item_id=itemid) item_id=itemid)

View File

@ -130,11 +130,13 @@ class Plex(metaclass=Singleton):
def get_movies(self, def get_movies(self,
title: str, title: str,
original_title: str = None,
year: str = None, year: str = None,
tmdb_id: int = None) -> Optional[List[dict]]: tmdb_id: int = None) -> Optional[List[dict]]:
""" """
根据标题和年份检查电影是否在Plex中存在存在则返回列表 根据标题和年份检查电影是否在Plex中存在存在则返回列表
:param title: 标题 :param title: 标题
:param original_title: 原产地标题
:param year: 年份为空则不过滤 :param year: 年份为空则不过滤
:param tmdb_id: TMDB ID :param tmdb_id: TMDB ID
:return: 含titleyear属性的字典列表 :return: 含titleyear属性的字典列表
@ -144,9 +146,14 @@ class Plex(metaclass=Singleton):
ret_movies = [] ret_movies = []
if year: if year:
movies = self._plex.library.search(title=title, year=year, libtype="movie") movies = self._plex.library.search(title=title, year=year, libtype="movie")
# 根据原标题再查一遍
if original_title and str(original_title) != str(title):
movies.extend(self._plex.library.search(title=original_title, year=year, libtype="movie"))
else: else:
movies = self._plex.library.search(title=title, libtype="movie") movies = self._plex.library.search(title=title, libtype="movie")
for movie in movies: if original_title and str(original_title) != str(title):
movies.extend(self._plex.library.search(title=original_title, year=year, libtype="movie"))
for movie in set(movies):
movie_tmdbid = self.__get_ids(movie.guids).get("tmdb_id") movie_tmdbid = self.__get_ids(movie.guids).get("tmdb_id")
if tmdb_id and movie_tmdbid: if tmdb_id and movie_tmdbid:
if str(movie_tmdbid) != str(tmdb_id): if str(movie_tmdbid) != str(tmdb_id):
@ -157,6 +164,7 @@ class Plex(metaclass=Singleton):
def get_tv_episodes(self, def get_tv_episodes(self,
item_id: str = None, item_id: str = None,
title: str = None, title: str = None,
original_title: str = None,
year: str = None, year: str = None,
tmdb_id: int = None, tmdb_id: int = None,
season: int = None) -> Optional[Dict[int, list]]: season: int = None) -> Optional[Dict[int, list]]:
@ -164,6 +172,7 @@ class Plex(metaclass=Singleton):
根据标题年份季查询电视剧所有集信息 根据标题年份季查询电视剧所有集信息
:param item_id: 媒体ID :param item_id: 媒体ID
:param title: 标题 :param title: 标题
:param original_title: 原产地标题
:param year: 年份可以为空为空时不按年份过滤 :param year: 年份可以为空为空时不按年份过滤
:param tmdb_id: TMDB ID :param tmdb_id: TMDB ID
:param season: 季号数字 :param season: 季号数字
@ -176,6 +185,8 @@ class Plex(metaclass=Singleton):
else: else:
# 根据标题和年份模糊搜索,该结果不够准确 # 根据标题和年份模糊搜索,该结果不够准确
videos = self._plex.library.search(title=title, year=year, libtype="show") videos = self._plex.library.search(title=title, year=year, libtype="show")
if not videos and original_title and str(original_title) != str(title):
videos = self._plex.library.search(title=original_title, year=year, libtype="show")
if not videos: if not videos:
return {} return {}
if isinstance(videos, list): if isinstance(videos, list):