radio typeahead

This commit is contained in:
2025-02-16 13:54:28 -05:00
parent b24176b12f
commit 3567e750fa
3 changed files with 46 additions and 4 deletions

View File

@ -7,7 +7,8 @@ import random
import asyncio
from . import radio_util
from .constructors import ValidRadioNextRequest, ValidRadioReshuffleRequest, ValidRadioQueueShiftRequest,\
ValidRadioQueueRemovalRequest, ValidRadioSongRequest, RadioException
ValidRadioQueueRemovalRequest, ValidRadioSongRequest,\
ValidRadioTypeaheadRequest, RadioException
from uuid import uuid4 as uuid
from typing import Optional
from fastapi import FastAPI, BackgroundTasks, Request, Response, HTTPException
@ -30,6 +31,7 @@ class Radio(FastAPI):
self.endpoints: dict = {
"radio/np": self.radio_now_playing,
"radio/request": self.radio_request,
"radio/typeahead": self.radio_typeahead,
"radio/get_queue": self.radio_get_queue,
"radio/skip": self.radio_skip,
"radio/queue_shift": self.radio_queue_shift,
@ -289,4 +291,20 @@ class Radio(FastAPI):
await self.radio_util._ls_skip()
return JSONResponse(content={
'result': search
})
})
async def radio_typeahead(self, data: ValidRadioTypeaheadRequest,
request: Request) -> JSONResponse:
"""
Radio typehead handler
- **query**: Typeahead query
"""
if not isinstance(data.query, str):
return JSONResponse(status_code=500, content={
'err': True,
'errorText': 'Invalid request.',
})
typeahead = await self.radio_util.trackdb_typeahead(data.query)
if not typeahead:
return JSONResponse(content=[])
return JSONResponse(content=typeahead)