diff --git a/app/core/config.py b/app/core/config.py index abf51661..172adc64 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -43,6 +43,8 @@ class Settings(BaseSettings): WALLPAPER: str = "tmdb" # 网络代理 IP:PORT PROXY_HOST: Optional[str] = None + # 媒体搜索来源 themoviedb/douban/bangumi,多个用,分隔 + SEARCH_SOURCE: str = "themoviedb,douban,bangumi" # 媒体识别来源 themoviedb/douban RECOGNIZE_SOURCE: str = "themoviedb" # 刮削来源 themoviedb/douban diff --git a/app/modules/bangumi/__init__.py b/app/modules/bangumi/__init__.py index dde082ee..798020e3 100644 --- a/app/modules/bangumi/__init__.py +++ b/app/modules/bangumi/__init__.py @@ -1,7 +1,9 @@ from typing import List, Optional, Tuple, Union from app import schemas +from app.core.config import settings from app.core.context import MediaInfo +from app.core.meta import MetaBase from app.log import logger from app.modules import _ModuleBase from app.modules.bangumi.bangumi import BangumiApi @@ -54,6 +56,21 @@ class BangumiModule(_ModuleBase): return None + def search_medias(self, meta: MetaBase) -> Optional[List[MediaInfo]]: + """ + 搜索媒体信息 + :param meta: 识别的元数据 + :reutrn: 媒体信息 + """ + if settings.SEARCH_SOURCE and "bangumi" not in settings.SEARCH_SOURCE: + return None + if not meta.name: + return [] + infos = self.bangumiapi.search(meta.name) + if infos: + return [MediaInfo(bangumi_info=info) for info in infos] + return [] + def bangumi_info(self, bangumiid: int) -> Optional[dict]: """ 获取Bangumi信息 diff --git a/app/modules/bangumi/bangumi.py b/app/modules/bangumi/bangumi.py index 991b0a2c..440017ab 100644 --- a/app/modules/bangumi/bangumi.py +++ b/app/modules/bangumi/bangumi.py @@ -12,6 +12,7 @@ class BangumiApi(object): """ _urls = { + "search": "search/subjects/%s?type=2", "calendar": "calendar", "detail": "v0/subjects/%s", "credits": "v0/subjects/%s/persons", @@ -40,6 +41,15 @@ class BangumiApi(object): print(e) return None + def search(self, name): + """ + 搜索媒体信息 + """ + result = self.__invoke("search/subject/%s" % name) + if result: + return result.get("list") + return [] + def calendar(self): """ 获取每日放送,返回items diff --git a/app/modules/douban/__init__.py b/app/modules/douban/__init__.py index 5ba0faf5..ac807705 100644 --- a/app/modules/douban/__init__.py +++ b/app/modules/douban/__init__.py @@ -544,6 +544,8 @@ class DoubanModule(_ModuleBase): :param meta: 识别的元数据 :reutrn: 媒体信息 """ + if settings.SEARCH_SOURCE and "douban" not in settings.SEARCH_SOURCE: + return None if not meta.name: return [] result = self.doubanapi.search(meta.name) diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index f0aad653..2853cf5d 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -227,6 +227,8 @@ class TheMovieDbModule(_ModuleBase): :param meta: 识别的元数据 :reutrn: 媒体信息列表 """ + if settings.SEARCH_SOURCE and "themoviedb" not in settings.SEARCH_SOURCE: + return None if not meta.name: return [] if meta.type == MediaType.UNKNOWN and not meta.year: