docstrings / formatting
This commit is contained in:
@@ -68,10 +68,14 @@ class Radio(FastAPI):
|
||||
self, data: ValidRadioNextRequest, request: Request
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Skip to the next track in the queue, or to uuid specified in skipTo if provided
|
||||
- **key**: API key
|
||||
- **skipTo**: Optional UUID to skip to
|
||||
- **station**: default "main"
|
||||
Skip to the next track in the queue, or to the UUID specified in `skipTo` if provided.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioNextRequest): Contains the API key, optional UUID to skip to, and station name.
|
||||
- **request** (Request): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Indicates success or failure of the skip operation.
|
||||
"""
|
||||
try:
|
||||
if not self.util.check_key(path=request.url.path, req_type=4, key=data.key):
|
||||
@@ -114,10 +118,16 @@ class Radio(FastAPI):
|
||||
self, data: ValidRadioReshuffleRequest, request: Request
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Reshuffle the play queue
|
||||
- **key**: API key
|
||||
- **station**: default "main"
|
||||
Reshuffle the play queue.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioReshuffleRequest): Contains the API key and station name.
|
||||
- **request** (Request): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Indicates success of the reshuffle operation.
|
||||
"""
|
||||
|
||||
if not self.util.check_key(path=request.url.path, req_type=4, key=data.key):
|
||||
raise HTTPException(status_code=403, detail="Unauthorized")
|
||||
|
||||
@@ -130,7 +140,14 @@ class Radio(FastAPI):
|
||||
data: Optional[ValidRadioQueueRequest] = None,
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Get current play queue (paged, 20 results per page)
|
||||
Get the current play queue (paged, 20 results per page).
|
||||
|
||||
Parameters:
|
||||
- **request** (Request): The HTTP request object.
|
||||
- **data** (Optional[ValidRadioQueueRequest]): Contains the station name and optional search query.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Contains the paged queue data.
|
||||
"""
|
||||
if not (data and data.station):
|
||||
return JSONResponse(status_code=500,
|
||||
@@ -191,13 +208,16 @@ class Radio(FastAPI):
|
||||
self, data: ValidRadioQueueShiftRequest, request: Request
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Shift position of a UUID within the queue
|
||||
[currently limited to playing next or immediately]
|
||||
- **key**: API key
|
||||
- **uuid**: UUID to shift
|
||||
- **next**: Play track next? If False, skips to the track
|
||||
- **station**: default "main"
|
||||
Shift the position of a UUID within the queue.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioQueueShiftRequest): Contains the API key, UUID to shift, and station name.
|
||||
- **request** (Request): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Indicates success of the shift operation.
|
||||
"""
|
||||
|
||||
if not self.util.check_key(path=request.url.path, req_type=4, key=data.key):
|
||||
raise HTTPException(status_code=403, detail="Unauthorized")
|
||||
|
||||
@@ -225,11 +245,16 @@ class Radio(FastAPI):
|
||||
self, data: ValidRadioQueueRemovalRequest, request: Request
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Remove an item from the current play queue
|
||||
- **key**: API key
|
||||
- **uuid**: UUID of queue item to remove
|
||||
- **station**: default "main"
|
||||
Remove an item from the current play queue.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioQueueRemovalRequest): Contains the API key, UUID of the item to remove, and station name.
|
||||
- **request** (Request): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Indicates success of the removal operation.
|
||||
"""
|
||||
|
||||
if not self.util.check_key(path=request.url.path, req_type=4, key=data.key):
|
||||
raise HTTPException(status_code=403, detail="Unauthorized")
|
||||
|
||||
@@ -254,10 +279,15 @@ class Radio(FastAPI):
|
||||
station: Station = "main"
|
||||
) -> Response:
|
||||
"""
|
||||
Get album art, optional parameter track_id may be specified.
|
||||
Otherwise, current track album art will be pulled.
|
||||
- **track_id**: Optional, if provided, will attempt to retrieve the album art of this track_id. Current track used otherwise.
|
||||
- **station**: default "main"
|
||||
Get album art for the current or specified track.
|
||||
|
||||
Parameters:
|
||||
- **request** (Request): The HTTP request object.
|
||||
- **track_id** (Optional[int]): ID of the track to retrieve album art for. Defaults to the current track.
|
||||
- **station** (Station): Name of the station. Defaults to "main".
|
||||
|
||||
Returns:
|
||||
- **Response**: Contains the album art image or a default image.
|
||||
"""
|
||||
try:
|
||||
if not track_id:
|
||||
@@ -288,9 +318,16 @@ class Radio(FastAPI):
|
||||
async def radio_now_playing(self, request: Request,
|
||||
station: Station = "main") -> JSONResponse:
|
||||
"""
|
||||
Get currently playing track info
|
||||
- **station**: default "main"
|
||||
Get information about the currently playing track.
|
||||
|
||||
Parameters:
|
||||
- **request** (Request): The HTTP request object.
|
||||
- **station** (Station): Name of the station. Defaults to "main".
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Contains the track information.
|
||||
"""
|
||||
|
||||
ret_obj: dict = {**self.radio_util.now_playing[station]}
|
||||
ret_obj["station"] = station
|
||||
try:
|
||||
@@ -308,12 +345,17 @@ class Radio(FastAPI):
|
||||
background_tasks: BackgroundTasks,
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Get next track
|
||||
(Track will be removed from the queue in the process.)
|
||||
- **key**: API key
|
||||
- **skipTo**: Optional UUID to skip to
|
||||
- **station**: default: "main"
|
||||
Get the next track in the queue. The track will be removed from the queue in the process.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioNextRequest): Contains the API key, optional UUID to skip to, and station name.
|
||||
- **request** (Request): The HTTP request object.
|
||||
- **background_tasks** (BackgroundTasks): Background tasks for webhook execution.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Contains the next track information.
|
||||
"""
|
||||
|
||||
logging.info("Radio get next")
|
||||
if data.station not in self.radio_util.active_playlist.keys():
|
||||
raise HTTPException(status_code=500, detail="No such station/not ready")
|
||||
@@ -372,14 +414,16 @@ class Radio(FastAPI):
|
||||
self, data: ValidRadioSongRequest, request: Request
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Song request handler
|
||||
- **key**: API key
|
||||
- **artist**: Artist to search
|
||||
- **song**: Song to search
|
||||
- **artistsong**: Optional "Artist - Song" pair to search, in place of artist/song
|
||||
- **alsoSkip**: If True, skips to the track; otherwise, track will be placed next up in queue
|
||||
- **station**: default "main"
|
||||
Handle song requests.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioSongRequest): Contains the API key, artist, song, and station name.
|
||||
- **request** (Request): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Indicates success or failure of the request.
|
||||
"""
|
||||
|
||||
if not self.util.check_key(path=request.url.path, req_type=4, key=data.key):
|
||||
raise HTTPException(status_code=403, detail="Unauthorized")
|
||||
artistsong: Optional[str] = data.artistsong
|
||||
@@ -413,8 +457,14 @@ class Radio(FastAPI):
|
||||
self, data: ValidRadioTypeaheadRequest, request: Request
|
||||
) -> JSONResponse:
|
||||
"""
|
||||
Radio typeahead handler
|
||||
- **query**: Typeahead query
|
||||
Handle typeahead queries for the radio.
|
||||
|
||||
Parameters:
|
||||
- **data** (ValidRadioTypeaheadRequest): Contains the typeahead query.
|
||||
- **request** (Request): The HTTP request object.
|
||||
|
||||
Returns:
|
||||
- **JSONResponse**: Contains the typeahead results.
|
||||
"""
|
||||
if not isinstance(data.query, str):
|
||||
return JSONResponse(
|
||||
|
Reference in New Issue
Block a user