1
0
mirror of https://github.com/hanxi/xiaomusic.git synced 2026-03-15 08:13:16 +08:00

重构:api 接口验证统一化

This commit is contained in:
涵曦
2026-01-16 18:03:57 +08:00
parent 558eee2b10
commit 44c2216bb4
4 changed files with 47 additions and 63 deletions

View File

@@ -24,11 +24,11 @@ from xiaomusic.api.models import (
MusicItem,
)
router = APIRouter()
router = APIRouter(dependencies=[Depends(verification)])
@router.get("/searchmusic")
def searchmusic(name: str = "", Verifcation=Depends(verification)):
def searchmusic(name: str = ""):
"""搜索音乐"""
return xiaomusic.searchmusic(name)
@@ -42,7 +42,6 @@ async def search_online_music(
plugin: str = Query("all", description="指定插件名称all表示搜索所有插件"),
page: int = Query(1, description="页码"),
limit: int = Query(20, description="每页数量"),
Verifcation=Depends(verification),
):
"""在线音乐搜索API"""
try:
@@ -57,9 +56,7 @@ async def search_online_music(
@router.get("/api/proxy/real-url")
async def get_real_music_url(
url: str = Query(..., description="原始url"), Verifcation=Depends(verification)
):
async def get_real_music_url(url: str = Query(..., description="原始url")):
"""通过服务端代理获取真实的URL不止是音频url,可能还有图片url"""
try:
# 获取真实的URL
@@ -76,7 +73,6 @@ async def get_real_music_url(
@router.get("/api/proxy/plugin-url")
async def get_plugin_source_url(
data: str = Query(..., description="json对象压缩的base64"),
Verifcation=Depends(verification),
):
try:
# 获取请求数据
@@ -103,7 +99,7 @@ async def get_plugin_source_url(
@router.post("/api/play/getMediaSource")
async def get_media_source(request: Request, Verifcation=Depends(verification)):
async def get_media_source(request: Request):
"""获取音乐真实播放URL"""
try:
# 获取请求数据
@@ -115,7 +111,7 @@ async def get_media_source(request: Request, Verifcation=Depends(verification)):
@router.post("/api/play/getLyric")
async def get_media_lyric(request: Request, Verifcation=Depends(verification)):
async def get_media_lyric(request: Request):
"""获取音乐歌词"""
try:
# 获取请求数据
@@ -127,7 +123,7 @@ async def get_media_lyric(request: Request, Verifcation=Depends(verification)):
@router.post("/api/device/pushUrl")
async def device_push_url(request: Request, Verifcation=Depends(verification)):
async def device_push_url(request: Request):
"""推送url给设备端播放"""
try:
# 获取请求数据
@@ -146,7 +142,7 @@ async def device_push_url(request: Request, Verifcation=Depends(verification)):
@router.post("/api/device/pushList")
async def device_push_list(request: Request, Verifcation=Depends(verification)):
async def device_push_list(request: Request):
"""WEB前端推送歌单给设备端播放"""
try:
# 获取请求数据
@@ -166,7 +162,7 @@ async def device_push_list(request: Request, Verifcation=Depends(verification)):
@router.get("/playingmusic")
def playingmusic(did: str = "", Verifcation=Depends(verification)):
def playingmusic(did: str = ""):
"""当前播放音乐"""
if not xiaomusic.did_exist(did):
return {"ret": "Did not exist"}
@@ -187,15 +183,13 @@ def playingmusic(did: str = "", Verifcation=Depends(verification)):
@router.get("/musiclist")
async def musiclist(Verifcation=Depends(verification)):
async def musiclist():
"""音乐列表"""
return xiaomusic.get_music_list()
@router.get("/musicinfo")
async def musicinfo(
name: str, musictag: bool = False, Verifcation=Depends(verification)
):
async def musicinfo(name: str, musictag: bool = False):
"""音乐信息"""
url, _ = await xiaomusic._music_library.get_music_url(name)
info = {
@@ -212,7 +206,6 @@ async def musicinfo(
async def musicinfos(
name: list[str] = Query(None),
musictag: bool = False,
Verifcation=Depends(verification),
):
"""批量音乐信息"""
ret = []
@@ -229,14 +222,14 @@ async def musicinfos(
@router.post("/setmusictag")
async def setmusictag(info: MusicInfoObj, Verifcation=Depends(verification)):
async def setmusictag(info: MusicInfoObj):
"""设置音乐标签"""
ret = xiaomusic._music_library.set_music_tag(info.musicname, info)
return {"ret": ret}
@router.post("/delmusic")
async def delmusic(data: MusicItem, Verifcation=Depends(verification)):
async def delmusic(data: MusicItem):
"""删除音乐"""
log.info(data)
await xiaomusic.del_music(data.name)
@@ -244,7 +237,7 @@ async def delmusic(data: MusicItem, Verifcation=Depends(verification)):
@router.post("/playmusic")
async def playmusic(data: DidPlayMusic, Verifcation=Depends(verification)):
async def playmusic(data: DidPlayMusic):
"""播放音乐"""
did = data.did
musicname = data.musicname

View File

@@ -17,11 +17,11 @@ from xiaomusic.api.models import (
PlayListUpdateObj,
)
router = APIRouter()
router = APIRouter(dependencies=[Depends(verification)])
@router.get("/curplaylist")
async def curplaylist(did: str = "", Verifcation=Depends(verification)):
async def curplaylist(did: str = ""):
"""当前播放列表"""
if not xiaomusic.did_exist(did):
return ""
@@ -29,7 +29,7 @@ async def curplaylist(did: str = "", Verifcation=Depends(verification)):
@router.post("/playmusiclist")
async def playmusiclist(data: DidPlayMusicList, Verifcation=Depends(verification)):
async def playmusiclist(data: DidPlayMusicList):
"""播放音乐列表"""
did = data.did
listname = data.listname
@@ -43,7 +43,7 @@ async def playmusiclist(data: DidPlayMusicList, Verifcation=Depends(verification
@router.post("/playlistadd")
async def playlistadd(data: PlayListObj, Verifcation=Depends(verification)):
async def playlistadd(data: PlayListObj):
"""新增歌单"""
ret = xiaomusic.play_list_add(data.name)
if ret:
@@ -52,7 +52,7 @@ async def playlistadd(data: PlayListObj, Verifcation=Depends(verification)):
@router.post("/playlistdel")
async def playlistdel(data: PlayListObj, Verifcation=Depends(verification)):
async def playlistdel(data: PlayListObj):
"""移除歌单"""
ret = xiaomusic.play_list_del(data.name)
if ret:
@@ -61,9 +61,7 @@ async def playlistdel(data: PlayListObj, Verifcation=Depends(verification)):
@router.post("/playlistupdatename")
async def playlistupdatename(
data: PlayListUpdateObj, Verifcation=Depends(verification)
):
async def playlistupdatename(data: PlayListUpdateObj):
"""修改歌单名字"""
ret = xiaomusic.play_list_update_name(data.oldname, data.newname)
if ret:
@@ -72,7 +70,7 @@ async def playlistupdatename(
@router.get("/playlistnames")
async def getplaylistnames(Verifcation=Depends(verification)):
async def getplaylistnames():
"""获取所有自定义歌单"""
names = xiaomusic.get_play_list_names()
log.info(f"names {names}")
@@ -83,7 +81,7 @@ async def getplaylistnames(Verifcation=Depends(verification)):
@router.post("/playlistaddmusic")
async def playlistaddmusic(data: PlayListMusicObj, Verifcation=Depends(verification)):
async def playlistaddmusic(data: PlayListMusicObj):
"""歌单新增歌曲"""
ret = xiaomusic.play_list_add_music(data.name, data.music_list)
if ret:
@@ -92,7 +90,7 @@ async def playlistaddmusic(data: PlayListMusicObj, Verifcation=Depends(verificat
@router.post("/playlistdelmusic")
async def playlistdelmusic(data: PlayListMusicObj, Verifcation=Depends(verification)):
async def playlistdelmusic(data: PlayListMusicObj):
"""歌单移除歌曲"""
ret = xiaomusic.play_list_del_music(data.name, data.music_list)
if ret:
@@ -101,9 +99,7 @@ async def playlistdelmusic(data: PlayListMusicObj, Verifcation=Depends(verificat
@router.post("/playlistupdatemusic")
async def playlistupdatemusic(
data: PlayListMusicObj, Verifcation=Depends(verification)
):
async def playlistupdatemusic(data: PlayListMusicObj):
"""歌单更新歌曲"""
ret = xiaomusic.play_list_update_music(data.name, data.music_list)
if ret:
@@ -112,7 +108,7 @@ async def playlistupdatemusic(
@router.get("/playlistmusics")
async def getplaylist(name: str, Verifcation=Depends(verification)):
async def getplaylist(name: str):
"""获取歌单中所有歌曲"""
ret, musics = xiaomusic.play_list_musics(name)
return {

View File

@@ -18,13 +18,12 @@ from xiaomusic.api.dependencies import (
xiaomusic,
)
router = APIRouter()
router = APIRouter(dependencies=[Depends(verification)])
@router.get("/api/js-plugins")
def get_js_plugins(
enabled_only: bool = Query(False, description="是否只返回启用的插件"),
Verifcation=Depends(verification),
):
"""获取插件列表"""
try:
@@ -45,7 +44,7 @@ def get_js_plugins(
@router.put("/api/js-plugins/{plugin_name}/enable")
def enable_js_plugin(plugin_name: str, Verifcation=Depends(verification)):
def enable_js_plugin(plugin_name: str):
"""启用插件"""
try:
if (
@@ -62,7 +61,7 @@ def enable_js_plugin(plugin_name: str, Verifcation=Depends(verification)):
@router.put("/api/js-plugins/{plugin_name}/disable")
def disable_js_plugin(plugin_name: str, Verifcation=Depends(verification)):
def disable_js_plugin(plugin_name: str):
"""禁用插件"""
try:
if (
@@ -79,7 +78,7 @@ def disable_js_plugin(plugin_name: str, Verifcation=Depends(verification)):
@router.delete("/api/js-plugins/{plugin_name}/uninstall")
def uninstall_js_plugin(plugin_name: str, Verifcation=Depends(verification)):
def uninstall_js_plugin(plugin_name: str):
"""卸载插件"""
try:
if (
@@ -96,9 +95,7 @@ def uninstall_js_plugin(plugin_name: str, Verifcation=Depends(verification)):
@router.post("/api/js-plugins/upload")
async def upload_js_plugin(
file: UploadFile = File(...), verification_dep=Depends(verification)
):
async def upload_js_plugin(file: UploadFile = File(...)):
"""上传 JS 插件"""
try:
# 验证文件扩展名
@@ -154,7 +151,7 @@ async def upload_js_plugin(
@router.get("/api/openapi/load")
def get_openapi_info(Verifcation=Depends(verification)):
def get_openapi_info():
"""获取开放接口配置信息"""
try:
openapi_info = xiaomusic.js_plugin_manager.get_openapi_info()
@@ -164,7 +161,7 @@ def get_openapi_info(Verifcation=Depends(verification)):
@router.post("/api/openapi/toggle")
def toggle_openapi(Verifcation=Depends(verification)):
def toggle_openapi():
"""开放接口状态切换"""
try:
return xiaomusic.js_plugin_manager.toggle_openapi()
@@ -173,7 +170,7 @@ def toggle_openapi(Verifcation=Depends(verification)):
@router.post("/api/openapi/updateUrl")
async def update_openapi_url(request: Request, Verifcation=Depends(verification)):
async def update_openapi_url(request: Request):
"""更新开放接口地址"""
try:
request_json = await request.json()
@@ -189,7 +186,7 @@ async def update_openapi_url(request: Request, Verifcation=Depends(verification)
@router.get("/api/plugin-source/load")
def get_plugin_source_info(Verifcation=Depends(verification)):
def get_plugin_source_info():
"""获取插件源配置信息"""
try:
plugin_source = xiaomusic.js_plugin_manager.get_plugin_source()
@@ -199,7 +196,7 @@ def get_plugin_source_info(Verifcation=Depends(verification)):
@router.post("/api/plugin-source/refresh")
def refresh_plugin_source(Verifcation=Depends(verification)):
def refresh_plugin_source():
"""更新订阅源"""
try:
return xiaomusic.js_plugin_manager.refresh_plugin_source()
@@ -208,7 +205,7 @@ def refresh_plugin_source(Verifcation=Depends(verification)):
@router.post("/api/plugin-source/updateUrl")
async def update_plugin_source(request: Request, Verifcation=Depends(verification)):
async def update_plugin_source(request: Request):
"""更新插件源地址"""
try:
request_json = await request.json()

View File

@@ -44,11 +44,11 @@ from xiaomusic.utils.system_utils import (
update_version,
)
router = APIRouter()
router = APIRouter(dependencies=[Depends(verification)])
@router.get("/")
async def read_index(Verifcation=Depends(verification)):
async def read_index():
"""首页"""
folder = os.path.dirname(
os.path.dirname(os.path.dirname(__file__))
@@ -57,14 +57,14 @@ async def read_index(Verifcation=Depends(verification)):
@router.get("/getversion")
def getversion(Verifcation=Depends(verification)):
def getversion():
"""获取版本"""
log.debug("getversion %s", __version__)
return {"version": __version__}
@router.get("/getsetting")
async def getsetting(need_device_list: bool = False, Verifcation=Depends(verification)):
async def getsetting(need_device_list: bool = False):
"""获取设置"""
config_data = xiaomusic.getconfig()
data = asdict(config_data)
@@ -78,7 +78,7 @@ async def getsetting(need_device_list: bool = False, Verifcation=Depends(verific
@router.post("/savesetting")
async def savesetting(request: Request, Verifcation=Depends(verification)):
async def savesetting(request: Request):
"""保存设置"""
try:
data_json = await request.body()
@@ -104,7 +104,7 @@ async def savesetting(request: Request, Verifcation=Depends(verification)):
@router.post("/api/system/modifiysetting")
async def modifiysetting(request: Request, Verifcation=Depends(verification)):
async def modifiysetting(request: Request):
"""修改部分设置"""
try:
data_json = await request.body()
@@ -152,7 +152,7 @@ async def modifiysetting(request: Request, Verifcation=Depends(verification)):
@router.get("/downloadlog")
def downloadlog(Verifcation=Depends(verification)):
def downloadlog():
"""下载日志"""
file_path = config.log_file
if os.path.exists(file_path):
@@ -184,7 +184,7 @@ def downloadlog(Verifcation=Depends(verification)):
@router.get("/latestversion")
async def latest_version(Verifcation=Depends(verification)):
async def latest_version():
"""获取最新版本"""
version = await get_latest_version("xiaomusic")
if version:
@@ -194,9 +194,7 @@ async def latest_version(Verifcation=Depends(verification)):
@router.post("/updateversion")
async def updateversion(
version: str = "", lite: bool = True, Verifcation=Depends(verification)
):
async def updateversion(version: str = "", lite: bool = True):
"""更新版本"""
import asyncio
@@ -209,19 +207,19 @@ async def updateversion(
@router.get("/docs", include_in_schema=False)
async def get_swagger_documentation(Verifcation=Depends(verification)):
async def get_swagger_documentation():
"""Swagger 文档"""
return get_swagger_ui_html(openapi_url="/openapi.json", title="docs")
@router.get("/redoc", include_in_schema=False)
async def get_redoc_documentation(Verifcation=Depends(verification)):
async def get_redoc_documentation():
"""ReDoc 文档"""
return get_redoc_html(openapi_url="/openapi.json", title="docs")
@router.get("/openapi.json", include_in_schema=False)
async def openapi(Verifcation=Depends(verification)):
async def openapi():
"""OpenAPI 规范"""
from xiaomusic.api.app import app