From f91763ef7cf6e21ce4b0dbfe633bc7454c6efdc0 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 10 Feb 2024 19:30:41 +0800 Subject: [PATCH] add scrape api --- app/api/endpoints/media.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 44ce26a7..7d9d5443 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -1,3 +1,4 @@ +from pathlib import Path from typing import List, Any from fastapi import APIRouter, Depends @@ -6,7 +7,7 @@ from app import schemas from app.chain.media import MediaChain from app.core.config import settings from app.core.context import Context -from app.core.metainfo import MetaInfo +from app.core.metainfo import MetaInfo, MetaInfoPath from app.core.security import verify_token, verify_uri_token from app.schemas import MediaType @@ -76,6 +77,28 @@ def search_by_title(title: str, return [] +@router.get("/scrape", summary="刮削媒体信息", response_model=schemas.Response) +def scrape(path: str, + _: schemas.TokenPayload = Depends(verify_token)) -> Any: + """ + 刮削媒体信息 + """ + if not path: + return schemas.Response(success=False, message="刮削路径无效") + scrape_path = Path(path) + if not scrape_path.exists(): + return schemas.Response(success=False, message="刮削路径不存在") + # 识别 + chain = MediaChain() + meta = MetaInfoPath(scrape_path) + mediainfo = chain.recognize_media(meta) + if not media_info: + return schemas.Response(success=False, message="刮削失败,无法识别媒体信息") + # 刮削 + chain.scrape_metadata(path=scrape_path, mediainfo=mediainfo, transfer_type=settings.TRANSFER_TYPE) + return schemas.Response(success=True, message="刮削完成") + + @router.get("/{mediaid}", summary="查询媒体详情", response_model=schemas.MediaInfo) def media_info(mediaid: str, type_name: str, _: schemas.TokenPayload = Depends(verify_token)) -> Any: