From 238c0526687be4824da14b9ddf109abacee28413 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sat, 3 Jul 2021 23:04:21 -0400 Subject: [PATCH] Add a function for querying labels --- examples/find_albums.py | 4 ++-- spotify_actions/search.py | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/examples/find_albums.py b/examples/find_albums.py index 461d969..60258fb 100755 --- a/examples/find_albums.py +++ b/examples/find_albums.py @@ -5,7 +5,7 @@ Find an album using the `spotify_actions` API and echo its contents. from argparse import ArgumentParser from spotify_actions.echo import echo_album -from spotify_actions.search import search_album +from spotify_actions.search import search_albums from spotify_actions.util import read_credentials @@ -18,7 +18,7 @@ def main() -> None: # pylint: disable=missing-function-docstring client = read_credentials(cmdline.config) - albums = search_album(client, cmdline.search_string) + albums = search_albums(client, cmdline.search_string) echo_album(albums) diff --git a/spotify_actions/search.py b/spotify_actions/search.py index 48d1457..de94b62 100644 --- a/spotify_actions/search.py +++ b/spotify_actions/search.py @@ -9,11 +9,22 @@ from spotipy import Spotify from .util import exhaust -def search_album(client: Spotify, search_str: str) -> Iterable[SearchAlbum]: - "Display albums from a search string" - +def _search_albums(client: Spotify, search_str: str) -> Paging: def _search(limit: int, offset: int) -> Paging: return Paging(**client.search(search_str, limit=limit, offset=offset, type="album")["albums"]) - for item in exhaust(_search): + return _search + + +def search_albums(client: Spotify, search_str: str) -> Iterable[SearchAlbum]: + "Display albums from a search string" + + for item in exhaust(_search_albums(client, search_str)): + yield SearchAlbum(**item) + + +def search_label_albums(client: Spotify, search_str: str) -> Iterable[SearchAlbum]: + "Display albums from a particular label" + + for item in exhaust(_search_albums(client, f'label:"{search_str}"')): yield SearchAlbum(**item)