add typeddicts

This commit is contained in:
bvandercar-vt 2025-12-02 23:49:14 -07:00
parent 4328005af8
commit 1a5b638a9b

View File

@ -7,7 +7,7 @@ import logging
import re import re
import warnings import warnings
from collections import defaultdict from collections import defaultdict
from typing import Dict, List, Optional, Union from typing import Dict, List, Optional, TypedDict, Union
import requests import requests
@ -121,7 +121,7 @@ class Spotify:
# [2] https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 # [2] https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
_regex_spotify_url = r'^(http[s]?:\/\/)?open.spotify.com\/(intl-\w\w\/)?(?P<type>track|artist|album|playlist|show|episode|user|audiobook)\/(?P<id>[0-9A-Za-z]+)(\?.*)?$' # noqa: E501 _regex_spotify_url = r'^(http[s]?:\/\/)?open.spotify.com\/(intl-\w\w\/)?(?P<type>track|artist|album|playlist|show|episode|user|audiobook)\/(?P<id>[0-9A-Za-z]+)(\?.*)?$' # noqa: E501
_regex_base62 = r'^[0-9A-Za-z]+$' TrackOccurances = TypedDict("TrackOccurances", {"uri": str, "positions": List[int]})
def __init__( def __init__(
self, self,
@ -1103,7 +1103,7 @@ class Spotify:
self, self,
user: str, user: str,
playlist_id: str, playlist_id: str,
tracks: List[Dict], tracks: List[TrackOccurances],
snapshot_id: Optional[str] = None, snapshot_id: Optional[str] = None,
): ):
""" This function is no longer in use, please use the recommended function in the warning! """ This function is no longer in use, please use the recommended function in the warning!
@ -1314,7 +1314,10 @@ class Spotify:
) )
def playlist_remove_specific_occurrences_of_items( def playlist_remove_specific_occurrences_of_items(
self, playlist_id: str, items: List[Dict], snapshot_id: Optional[str] = None self,
playlist_id: str,
items: List[TrackOccurances],
snapshot_id: Optional[str] = None,
): ):
""" Removes all occurrences of the given tracks from the given playlist """ Removes all occurrences of the given tracks from the given playlist
@ -2025,12 +2028,17 @@ class Spotify:
data = {"device_ids": [device_id], "play": force_play} data = {"device_ids": [device_id], "play": force_play}
return self._put("me/player", payload=data) return self._put("me/player", payload=data)
PlaybackOffset = Union[
TypedDict("PlaybackOffset", {"position": int}),
TypedDict("PlaybackOffset", {"uri": str}),
]
def start_playback( def start_playback(
self, self,
device_id: Optional[str] = None, device_id: Optional[str] = None,
context_uri: Optional[str] = None, context_uri: Optional[str] = None,
uris: Optional[List[str]] = None, uris: Optional[List[str]] = None,
offset: Optional[Dict] = None, offset: Optional[PlaybackOffset] = None,
position_ms: Optional[Union[int, float]] = None, position_ms: Optional[Union[int, float]] = None,
): ):
""" Start or resume user's playback. """ Start or resume user's playback.