From 128019423b16acb062384f7e7c3d3082064c4ade Mon Sep 17 00:00:00 2001 From: codey Date: Tue, 11 Feb 2025 20:49:14 -0500 Subject: [PATCH] misc --- endpoints/constructors.py | 9 +++++++++ endpoints/radio.py | 21 ++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/endpoints/constructors.py b/endpoints/constructors.py index 7b19aed..bae8bcb 100644 --- a/endpoints/constructors.py +++ b/endpoints/constructors.py @@ -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 diff --git a/endpoints/radio.py b/endpoints/radio.py index bbfa343..26b0e81 100644 --- a/endpoints/radio.py +++ b/endpoints/radio.py @@ -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 @@ -19,6 +20,11 @@ from fastapi.responses import RedirectResponse from aiohttp import ClientSession, ClientTimeout # pylint: disable=bare-except, broad-exception-caught, invalid-name + +""" +TODO: + - Radio request typeahead +""" class Radio(FastAPI): """Radio Endpoints""" @@ -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: