Skip to content

Commit 650bae8

Browse files
authored
Add support for fetching new releases (#313)
1 parent 1cab0cc commit 650bae8

File tree

6 files changed

+4971
-2
lines changed

6 files changed

+4971
-2
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ repos:
7373
exclude: ^poetry\.lock$
7474
entry: poetry run codespell
7575
args:
76-
- --ignore-words-list=doen,te,ons
76+
- --ignore-words-list=doen,te,ons,Racoon
7777
- id: detect-private-key
7878
name: 🕵️ Detect Private Keys
7979
language: system

src/spotifyaio/models.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,20 @@ class SavedAlbumResponse(DataClassORJSONMixin):
171171
items: list[SavedAlbum]
172172

173173

174+
@dataclass
175+
class NewReleasesResponse(DataClassORJSONMixin):
176+
"""NewReleases response model."""
177+
178+
albums: NewReleasesResponseInner
179+
180+
181+
@dataclass
182+
class NewReleasesResponseInner(DataClassORJSONMixin):
183+
"""NewReleases response model."""
184+
185+
items: list[SimplifiedAlbum]
186+
187+
174188
@dataclass
175189
class SavedShow(DataClassORJSONMixin):
176190
"""Saved Show model."""

src/spotifyaio/spotify.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
Devices,
2525
Episode,
2626
FeaturedPlaylistResponse,
27+
NewReleasesResponse,
2728
PlaybackState,
2829
PlayedTrack,
2930
PlayedTrackResponse,
@@ -44,7 +45,7 @@
4445
)
4546

4647
if TYPE_CHECKING:
47-
from spotifyaio import Artist, Track
48+
from spotifyaio import Artist, SimplifiedAlbum, Track
4849

4950

5051
@dataclass
@@ -317,6 +318,12 @@ async def get_category_playlists(self, category_id: str) -> list[BasePlaylist]:
317318
)
318319
return CategoryPlaylistResponse.from_json(response).playlists.items
319320

321+
async def get_new_releases(self) -> list[SimplifiedAlbum]:
322+
"""Get new releases."""
323+
params: dict[str, Any] = {"limit": 48}
324+
response = await self._get("v1/browse/new-releases", params=params)
325+
return NewReleasesResponse.from_json(response).albums.items
326+
320327
async def get_top_artists(self) -> list[Artist]:
321328
"""Get top artists."""
322329
params: dict[str, Any] = {"limit": 48}

0 commit comments

Comments
 (0)