48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
|
# pylint: disable=missing-module-docstring, missing-function-docstring
|
||
|
|
||
|
from argparse import ArgumentParser
|
||
|
|
||
|
from spotify_actions.album import (
|
||
|
album_filter_label,
|
||
|
album_sort_release,
|
||
|
album_to_simplified,
|
||
|
album_to_tracks,
|
||
|
)
|
||
|
from spotify_actions.playlist import (
|
||
|
playlist_current_user_all,
|
||
|
playlist_current_user_assure,
|
||
|
playlist_replace,
|
||
|
)
|
||
|
from spotify_actions.search import Query, search_albums
|
||
|
from spotify_actions.util import read_credentials_oauth
|
||
|
|
||
|
|
||
|
def main() -> None:
|
||
|
parser = ArgumentParser()
|
||
|
parser.add_argument("-c", "--credentials", required=True)
|
||
|
parser.add_argument("label")
|
||
|
|
||
|
cmdline = parser.parse_args()
|
||
|
|
||
|
client = read_credentials_oauth(
|
||
|
cmdline.credentials,
|
||
|
redirect_uri="https://speice.io/spotify/",
|
||
|
scopes=["playlist-read-private", "playlist-modify-private", "playlist-modify-public"],
|
||
|
)
|
||
|
|
||
|
user_playlists = playlist_current_user_all(client)
|
||
|
playlists = playlist_current_user_assure(client, user_playlists, cmdline.label)
|
||
|
playlist = list(playlists)[0]
|
||
|
|
||
|
albums_search = search_albums(client, Query(label=cmdline.label))
|
||
|
albums_unfiltered = album_to_simplified(client, albums_search)
|
||
|
albums_unsorted = album_filter_label(albums_unfiltered, cmdline.label)
|
||
|
albums = album_sort_release(albums_unsorted, descending=True)
|
||
|
tracks = album_to_tracks(client, albums)
|
||
|
|
||
|
playlist_replace(client, playlist.spotify_id, tracks)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|