This commit is contained in:
codey 2025-02-11 20:49:14 -05:00
parent 88d870ce8f
commit 128019423b
2 changed files with 23 additions and 7 deletions

View File

@ -242,6 +242,15 @@ class ValidRadioSongRequest(BaseModel):
artistsong: str | None = None
alsoSkip: bool = False
class ValidRadioQueueGetRequest(BaseModel):
"""
- **key**: API key (optional, needed if specifying a non-default limit)
- **limit**: optional, default: 15k
"""
key: str|None = None
limit: int|None = 15000
class ValidRadioNextRequest(BaseModel):
"""
- **key**: API Key

View File

@ -11,7 +11,8 @@ import regex
import music_tag
from . import radio_util
from .constructors import ValidRadioNextRequest, ValidRadioReshuffleRequest, ValidRadioQueueShiftRequest,\
ValidRadioQueueRemovalRequest, ValidRadioSongRequest, RadioException
ValidRadioQueueRemovalRequest, ValidRadioSongRequest,\
ValidRadioQueueGetRequest, RadioException
from uuid import uuid4 as uuid
from typing import Optional, LiteralString
from fastapi import FastAPI, BackgroundTasks, Request, Response, HTTPException
@ -20,6 +21,11 @@ from aiohttp import ClientSession, ClientTimeout
# pylint: disable=bare-except, broad-exception-caught, invalid-name
"""
TODO:
- Radio request typeahead
"""
class Radio(FastAPI):
"""Radio Endpoints"""
def __init__(self, app: FastAPI, my_util, constants, glob_state) -> None: # pylint: disable=super-init-not-called
@ -59,7 +65,7 @@ class Radio(FastAPI):
raise HTTPException(status_code=403, detail="Unauthorized")
if data.skipTo:
(x, _) = self.radio_util.get_queue_item_by_uuid(data.skipTo)
self.radio_util.active_playlist: list = self.radio_util.active_playlist[x:]
self.radio_util.active_playlist = self.radio_util.active_playlist[x:]
if not self.radio_util.active_playlist:
await self.radio_util.load_playlist()
return await self.radio_util._ls_skip()
@ -81,12 +87,13 @@ class Radio(FastAPI):
}
async def radio_get_queue(self, request: Request, limit: int = 20_000) -> dict:
async def radio_get_queue(self, request: Request, limit: Optional[int] = 15_000) -> dict:
"""
Get current play queue, up to limit n [default: 20k]
Get current play queue, up to limit [default: 15k]
"""
queue_out = []
for x, item in enumerate(self.radio_util.active_playlist[0:limit+1]):
queue_out: list[dict] = []
for x, item in enumerate(self.radio_util.active_playlist[0:limit]):
queue_out.append({
'pos': x,
'id': item.get('id'),
@ -189,7 +196,7 @@ class Radio(FastAPI):
else:
await self.radio_util.load_playlist()
self.radio_util.now_playing: dict = next
self.radio_util.now_playing = next
next['start'] = time_started
next['end'] = time_ends
try: