mirror of
https://github.com/wahyd4/you-music.git
synced 2026-08-08 20:59:47 +10:00
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from fastapi import APIRouter, Query
|
|
from typing import List
|
|
|
|
from app.services.search import music_searcher
|
|
from app.schemas.schemas import SearchResult
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/", response_model=dict)
|
|
async def search_music(
|
|
q: str = Query(..., min_length=1),
|
|
source: str = Query("all", regex="^(all|youtube|bilibili)$"),
|
|
limit: int = Query(10, ge=1, le=50)
|
|
):
|
|
"""
|
|
Search for music across different sources
|
|
|
|
- **q**: Search query (song name, artist, etc.)
|
|
- **source**: Source to search (all, youtube, bilibili)
|
|
- **limit**: Maximum number of results per source
|
|
"""
|
|
if source == "all":
|
|
results = await music_searcher.search_all(q, limit)
|
|
elif source == "youtube":
|
|
youtube_results = await music_searcher.search_youtube(q, limit)
|
|
results = {"youtube": youtube_results, "bilibili": []}
|
|
elif source == "bilibili":
|
|
bilibili_results = await music_searcher.search_bilibili(q, limit)
|
|
results = {"youtube": [], "bilibili": bilibili_results}
|
|
else:
|
|
results = {"youtube": [], "bilibili": []}
|
|
|
|
return results
|
|
|
|
|
|
@router.get("/youtube", response_model=List[SearchResult])
|
|
async def search_youtube(
|
|
q: str = Query(..., min_length=1),
|
|
limit: int = Query(10, ge=1, le=50)
|
|
):
|
|
"""Search YouTube for music"""
|
|
return await music_searcher.search_youtube(q, limit)
|
|
|
|
|
|
@router.get("/bilibili", response_model=List[SearchResult])
|
|
async def search_bilibili(
|
|
q: str = Query(..., min_length=1),
|
|
limit: int = Query(10, ge=1, le=50)
|
|
):
|
|
"""Search Bilibili for music"""
|
|
return await music_searcher.search_bilibili(q, limit)
|