From 71c6a3718b6d6c654c364fae5b9db808b22591a7 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 28 Apr 2024 08:55:07 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AA=92=E4=BD=93=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E8=81=9A=E5=90=88=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 2 ++ app/modules/bangumi/__init__.py | 17 +++++++++++++++++ app/modules/bangumi/bangumi.py | 10 ++++++++++ app/modules/douban/__init__.py | 2 ++ app/modules/themoviedb/__init__.py | 2 ++ 5 files changed, 33 insertions(+) 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: