From c78373ca38428a83750a8eba0bb34b0f035a4859 Mon Sep 17 00:00:00 2001 From: J-onasJones Date: Tue, 26 Sep 2023 12:47:54 +0200 Subject: [PATCH] Added script for fetching Intro/Outros to playlist Added a script that goes through all artsists a user follows and adds their intros and outros to a playlist --- introoutroplaylistmaker.py | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 introoutroplaylistmaker.py diff --git a/introoutroplaylistmaker.py b/introoutroplaylistmaker.py new file mode 100644 index 0000000..56fa61d --- /dev/null +++ b/introoutroplaylistmaker.py @@ -0,0 +1,51 @@ +import top_lib +import os +from dotenv import load_dotenv + +# WARNING: THIS WILL RATELIMIT THE SHIT OUT OF YOUR ACCOUNT + +load_dotenv() +INTROOUTROPLAYLIST_ID = os.getenv('INTROOUTROPLAYLIST_ID') + +def track_is_eligible(track): + if track['duration_ms'] < 90000: + return True + elif "intro" in track['name'].lower() or "outro" in track['name'].lower(): + return True + return False + + + +if __name__ == "__main__": + print("Authenticating...") + authenticator = top_lib.Auth(verbose=True) + sp = authenticator.newSpotifyauth("user-follow-read playlist-modify-public playlist-modify-private") + spotifyManager = top_lib.SpotifyManager(sp) + print("Authenticated!") + print("Fetching Artists...") + artists = spotifyManager.fetchUserFollowedArtists() + print("Found " + str(len(artists))+ " Artists!") + + track_uris = [] + + for artist in artists: + try: + print("Fetching albums for", artist[1]) + albums = spotifyManager.fetchArtistAlbums(artist[0]) + except top_lib.SpotifyTooManyAlbumsError: + print("Error fetching albums for", artist[1]) + continue + for album in albums[0]: + print("Fetching tracks for", album[0]) + album_track_uris = spotifyManager.getTrackUrisFromAlbum(album[1]) + for track_uri in album_track_uris: + track = sp.track(track_uri) + if track_is_eligible(track): + print(track['artists'][0]['name'], track['name']) + track_uris.append(track_uri) + sp.playlist_add_items(INTROOUTROPLAYLIST_ID, [track_uri]) + continue + print("Skipping", track['artists'][0]['name'], track['name'], end="\r") + print("\nDone with", album[0]) + print("Done with", artist[1]) + print("Done with all artists") \ No newline at end of file