fix: 修复 bangumi search API 中的流式接口,webui 对应接口定义方法改造

- StreamingResponse 换成 EventSourceResponse,即 Server Send Event Source 方式发送数据
- webui 中 search 接口改成 rxjs Observable 方式,
  这次来不及改到 vue 里,但是写了接口 usage example;
- 顺手补了一些 vscode 通用的开发配置,
  补了之前配置文件解析漏了一个可用环境变量的 host 字段
This commit is contained in:
zthxxx
2023-08-31 23:48:07 +08:00
parent 16bbf6f866
commit 7d50e360ed
12 changed files with 177 additions and 23 deletions

View File

@@ -1,29 +1,31 @@
from fastapi import APIRouter, Query, Depends
from fastapi.responses import StreamingResponse
from sse_starlette.sse import EventSourceResponse
from module.searcher import SearchTorrent, SEARCH_CONFIG
from module.security.api import get_current_user, UNAUTHORIZED
from module.models import Torrent
from module.models import Bangumi
router = APIRouter(prefix="/search", tags=["search"])
@router.get("/", response_model=list[Torrent])
@router.get("/", response_model=EventSourceResponse[Bangumi])
async def search_torrents(
site: str = "mikan",
keywords: str = Query(None),
current_user=Depends(get_current_user),
):
"""
Server Send Event for per Bangumi item
"""
if not current_user:
raise UNAUTHORIZED
if not keywords:
return []
keywords = keywords.split(" ")
with SearchTorrent() as st:
return StreamingResponse(
return EventSourceResponse(
content=st.analyse_keyword(keywords=keywords, site=site),
media_type="application/json",
)