diff --git a/app/api/endpoints/mediaserver.py b/app/api/endpoints/mediaserver.py index fbfa7909..1f1e90b8 100644 --- a/app/api/endpoints/mediaserver.py +++ b/app/api/endpoints/mediaserver.py @@ -1,4 +1,3 @@ -import asyncio from typing import Any, List, Dict from fastapi import APIRouter, Depends @@ -43,12 +42,8 @@ def play_item(itemid: str, _: schemas.TokenPayload = Depends(verify_token)) -> s return schemas.Response(success=False, message="未找到播放地址") -# 控制最大并发数 -semaphore = asyncio.Semaphore(10) - - @router.get("/exists", summary="查询本地是否存在(数据库)", response_model=schemas.Response) -async def exists_local(title: str = None, +def exists_local(title: str = None, year: int = None, mtype: str = None, tmdbid: int = None, @@ -58,23 +53,22 @@ async def exists_local(title: str = None, """ 判断本地是否存在 """ - async with semaphore: - meta = MetaInfo(title) - if not season: - season = meta.begin_season - # 返回对象 - ret_info = {} - # 本地数据库是否存在 - exist: MediaServerItem = MediaServerOper(db).exists( - title=meta.name, year=year, mtype=mtype, tmdbid=tmdbid, season=season - ) - if exist: - ret_info = { - "id": exist.item_id - } - return schemas.Response(success=True if exist else False, data={ - "item": ret_info - }) + meta = MetaInfo(title) + if not season: + season = meta.begin_season + # 返回对象 + ret_info = {} + # 本地数据库是否存在 + exist: MediaServerItem = MediaServerOper(db).exists( + title=meta.name, year=year, mtype=mtype, tmdbid=tmdbid, season=season + ) + if exist: + ret_info = { + "id": exist.item_id + } + return schemas.Response(success=True if exist else False, data={ + "item": ret_info + }) @router.post("/exists_remote", summary="查询已存在的剧集信息(媒体服务器)", response_model=Dict[int, list]) diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index 69df8b90..b19c36bf 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -1,4 +1,3 @@ -import asyncio from typing import List, Any import cn2an @@ -147,12 +146,8 @@ def update_subscribe_status( return schemas.Response(success=True) -# 控制最大并发数 -semaphore = asyncio.Semaphore(10) - - @router.get("/media/{mediaid}", summary="查询订阅", response_model=schemas.Subscribe) -async def subscribe_mediaid( +def subscribe_mediaid( mediaid: str, season: int = None, title: str = None, @@ -161,36 +156,35 @@ async def subscribe_mediaid( """ 根据 TMDBID/豆瓣ID/BangumiId 查询订阅 tmdb:/douban: """ - async with semaphore: - result = None - title_check = False - if mediaid.startswith("tmdb:"): - tmdbid = mediaid[5:] - if not tmdbid or not str(tmdbid).isdigit(): - return Subscribe() - result = Subscribe.exists(db, tmdbid=int(tmdbid), season=season) - elif mediaid.startswith("douban:"): - doubanid = mediaid[7:] - if not doubanid: - return Subscribe() - result = Subscribe.get_by_doubanid(db, doubanid) - if not result and title: - title_check = True - elif mediaid.startswith("bangumi:"): - bangumiid = mediaid[8:] - if not bangumiid or not str(bangumiid).isdigit(): - return Subscribe() - result = Subscribe.get_by_bangumiid(db, int(bangumiid)) - if not result and title: - title_check = True - # 使用名称检查订阅 - if title_check and title: - meta = MetaInfo(title) - if season: - meta.begin_season = season - result = Subscribe.get_by_title(db, title=meta.name, season=meta.begin_season) + result = None + title_check = False + if mediaid.startswith("tmdb:"): + tmdbid = mediaid[5:] + if not tmdbid or not str(tmdbid).isdigit(): + return Subscribe() + result = Subscribe.exists(db, tmdbid=int(tmdbid), season=season) + elif mediaid.startswith("douban:"): + doubanid = mediaid[7:] + if not doubanid: + return Subscribe() + result = Subscribe.get_by_doubanid(db, doubanid) + if not result and title: + title_check = True + elif mediaid.startswith("bangumi:"): + bangumiid = mediaid[8:] + if not bangumiid or not str(bangumiid).isdigit(): + return Subscribe() + result = Subscribe.get_by_bangumiid(db, int(bangumiid)) + if not result and title: + title_check = True + # 使用名称检查订阅 + if title_check and title: + meta = MetaInfo(title) + if season: + meta.begin_season = season + result = Subscribe.get_by_title(db, title=meta.name, season=meta.begin_season) - return result if result else Subscribe() + return result if result else Subscribe() @router.get("/refresh", summary="刷新订阅", response_model=schemas.Response)