mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-05-02 06:23:47 +08:00
- Add config-search-provider.vue component for managing search sources - Support CRUD operations for custom search providers - Default providers (mikan, nyaa, dmhy) cannot be deleted - URL template validation ensures %s placeholder is present - Add backend API endpoints GET/PUT /search/provider/config - Add i18n translations for zh-CN and en Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from fastapi import APIRouter, Depends, Query
|
|
from sse_starlette.sse import EventSourceResponse
|
|
|
|
from module.conf.search_provider import get_provider, save_provider
|
|
from module.models import Bangumi
|
|
from module.searcher import SEARCH_CONFIG, SearchTorrent
|
|
from module.security.api import UNAUTHORIZED, get_current_user
|
|
|
|
router = APIRouter(prefix="/search", tags=["search"])
|
|
|
|
|
|
@router.get(
|
|
"/bangumi", response_model=list[Bangumi], dependencies=[Depends(get_current_user)]
|
|
)
|
|
async def search_torrents(site: str = "mikan", keywords: str = Query(None)):
|
|
"""
|
|
Server Send Event for per Bangumi item
|
|
"""
|
|
if not keywords:
|
|
return []
|
|
keywords = keywords.split(" ")
|
|
|
|
async def event_generator():
|
|
async with SearchTorrent() as st:
|
|
async for item in st.analyse_keyword(keywords=keywords, site=site):
|
|
yield item
|
|
|
|
return EventSourceResponse(content=event_generator())
|
|
|
|
|
|
@router.get(
|
|
"/provider", response_model=list[str], dependencies=[Depends(get_current_user)]
|
|
)
|
|
async def search_provider():
|
|
return list(SEARCH_CONFIG.keys())
|
|
|
|
|
|
@router.get(
|
|
"/provider/config",
|
|
response_model=dict[str, str],
|
|
dependencies=[Depends(get_current_user)],
|
|
)
|
|
async def get_search_provider_config():
|
|
"""Get all search providers with their URL templates."""
|
|
return get_provider()
|
|
|
|
|
|
@router.put(
|
|
"/provider/config",
|
|
response_model=dict[str, str],
|
|
dependencies=[Depends(get_current_user)],
|
|
)
|
|
async def update_search_provider_config(providers: dict[str, str]):
|
|
"""Update search providers configuration."""
|
|
save_provider(providers)
|
|
return get_provider()
|