diff --git a/app/api/endpoints/douban.py b/app/api/endpoints/douban.py index 0567b241..d0b0eb17 100644 --- a/app/api/endpoints/douban.py +++ b/app/api/endpoints/douban.py @@ -38,7 +38,10 @@ async def recognize_doubanid(doubanid: str, """ # 识别媒体信息 context = DoubanChain().recognize_by_doubanid(doubanid=doubanid) - return context.to_dict() + if context: + return context.to_dict() + else: + return schemas.Context() @router.get("/movies", summary="豆瓣电影", response_model=List[schemas.MediaInfo]) diff --git a/app/api/endpoints/download.py b/app/api/endpoints/download.py index 7717caeb..93595b97 100644 --- a/app/api/endpoints/download.py +++ b/app/api/endpoints/download.py @@ -1,9 +1,11 @@ from typing import Any, List -from fastapi import APIRouter, Depends +from fastapi import APIRouter, Depends, HTTPException from app import schemas +from app.chain.douban import DoubanChain from app.chain.download import DownloadChain +from app.chain.media import MediaChain from app.core.context import MediaInfo from app.core.metainfo import MetaInfo from app.core.security import verify_token @@ -21,18 +23,30 @@ async def read_downloading( return DownloadChain().downloading() -@router.post("/notexists", summary="查询电视剧缺失的剧集", response_model=List[NotExistMediaInfo]) +@router.post("/notexists", summary="查询缺失媒体信息", response_model=List[NotExistMediaInfo]) async def exists(media_in: schemas.MediaInfo, _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ - 查询已存在的媒体信息 + 查询缺失媒体信息 """ # 媒体信息 mediainfo = MediaInfo() - mediainfo.from_dict(media_in.dict()) - # 元数据 - meta = MetaInfo(title=mediainfo.title) + if media_in.tmdb_id: + mediainfo.from_dict(media_in.dict()) + meta = MetaInfo(title=mediainfo.title) + elif media_in.douban_id: + context = DoubanChain().recognize_by_doubanid(doubanid=media_in.douban_id) + if context: + mediainfo = context.media_info + meta = context.meta_info + else: + context = MediaChain().recognize_by_title(title=f"{media_in.title} {media_in.year}") + if context: + mediainfo = context.media_info + meta = context.meta_info # 查询缺失信息 + if not mediainfo.tmdb_id: + raise HTTPException(status_code=404, detail="媒体信息不存在") exist_flag, no_exists = DownloadChain().get_no_exists_info(meta=meta, mediainfo=mediainfo) if mediainfo.type == MediaType.MOVIE: # 电影已存在时返回空列表,存在时返回空对像列表 diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 0c1d6918..f18fa734 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -18,7 +18,9 @@ async def recognize(title: str, """ # 识别媒体信息 context = MediaChain().recognize_by_title(title=title, subtitle=subtitle) - return context.to_dict() + if context: + return context.to_dict() + return schemas.Context() @router.get("/search", summary="搜索媒体信息", response_model=List[schemas.MediaInfo])