From 8c25cf35e64effdc619c8833201348273902b6da Mon Sep 17 00:00:00 2001 From: Raju komati Date: Fri, 22 Oct 2021 19:59:48 +0530 Subject: [PATCH 1/4] added album download to separated folder --- zspotify.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zspotify.py b/zspotify.py index 29c92a3a..967b914b 100755 --- a/zspotify.py +++ b/zspotify.py @@ -596,7 +596,7 @@ def download_track(track_id_str: str, extra_paths=""): track_id_str) song_name = artists[0] + " - " + name - filename = ROOT_PATH + extra_paths + song_name + '.' + MUSIC_FORMAT + filename = os.path.join(ROOT_PATH, extra_paths, song_name + '.' + MUSIC_FORMAT) except Exception as e: print("### SKIPPING SONG - FAILED TO QUERY METADATA ###") # print(e) @@ -656,7 +656,7 @@ def download_album(album): artist, album_name = get_album_name(token, album) tracks = get_album_tracks(token, album) for track in tracks: - download_track(track['id'], artist + " - " + album_name + "/") + download_track(track['id'], f'{artist}/{album_name}') print("\n") @@ -694,7 +694,7 @@ def download_from_user_playlist(): download_playlist(playlists, playlist_choices[0]) else: start = int(playlist_choices[0]) - end = int(playlist_choices[1])+1 + end = int(playlist_choices[1]) + 1 print(f"Downloading from {start} to {end}...") From fb52d653a587f95a3cf8ae7d0b7b404087776748 Mon Sep 17 00:00:00 2001 From: Raju komati Date: Fri, 22 Oct 2021 20:18:09 +0530 Subject: [PATCH 2/4] added number prefix for album downloads --- zspotify.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/zspotify.py b/zspotify.py index 967b914b..b6be92d0 100755 --- a/zspotify.py +++ b/zspotify.py @@ -588,7 +588,7 @@ def get_saved_tracks(access_token): # Functions directly related to downloading stuff -def download_track(track_id_str: str, extra_paths=""): +def download_track(track_id_str: str, extra_paths="", prefix=False, prefix_value=''): """ Downloads raw song audio from Spotify """ global ROOT_PATH, SKIP_EXISTING_FILES, MUSIC_FORMAT, RAW_AUDIO_AS_IS, ANTI_BAN_WAIT_TIME, OVERRIDE_AUTO_WAIT try: @@ -596,6 +596,8 @@ def download_track(track_id_str: str, extra_paths=""): track_id_str) song_name = artists[0] + " - " + name + if prefix: + song_name = f'{prefix_value.zfill(2)}-{song_name}' if prefix_value.isdigit() else f'{prefix_value}-{song_name}' filename = os.path.join(ROOT_PATH, extra_paths, song_name + '.' + MUSIC_FORMAT) except Exception as e: print("### SKIPPING SONG - FAILED TO QUERY METADATA ###") @@ -655,8 +657,8 @@ def download_album(album): token = SESSION.tokens().get("user-read-email") artist, album_name = get_album_name(token, album) tracks = get_album_tracks(token, album) - for track in tracks: - download_track(track['id'], f'{artist}/{album_name}') + for n, track in enumerate(tracks, start=1): + download_track(track['id'], f'{artist}/{album_name}', prefix=True, prefix_value=str(n)) print("\n") From 16ecf274b5dd4b5f340e0403b38569b7a10efcff Mon Sep 17 00:00:00 2001 From: Raju komati Date: Fri, 22 Oct 2021 20:44:13 +0530 Subject: [PATCH 3/4] added progress bar for album download --- zspotify.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/zspotify.py b/zspotify.py index b6be92d0..a590b793 100755 --- a/zspotify.py +++ b/zspotify.py @@ -27,7 +27,6 @@ from tqdm import tqdm SESSION: Session = None sanitize = ["\\", "/", ":", "*", "?", "'", "<", ">", '"'] - # Hardcoded variables that adjust the core functionality of ZSpotify ROOT_PATH = "ZSpotify Music/" ROOT_PODCAST_PATH = "ZSpotify Podcasts/" @@ -45,6 +44,7 @@ ANTI_BAN_WAIT_TIME = 1 OVERRIDE_AUTO_WAIT = False CHUNK_SIZE = 50000 + # miscellaneous functions for general use @@ -421,7 +421,7 @@ def get_song_info(song_id): token = SESSION.tokens().get("user-read-email") info = json.loads(requests.get("https://api.spotify.com/v1/tracks?ids=" + song_id + - '&market=from_token', headers={"Authorization": "Bearer %s" % token}).text) + '&market=from_token', headers={"Authorization": "Bearer %s" % token}).text) artists = [] for data in info['tracks'][0]['artists']: @@ -588,7 +588,7 @@ def get_saved_tracks(access_token): # Functions directly related to downloading stuff -def download_track(track_id_str: str, extra_paths="", prefix=False, prefix_value=''): +def download_track(track_id_str: str, extra_paths="", prefix=False, prefix_value='', disable_progressbar=False): """ Downloads raw song audio from Spotify """ global ROOT_PATH, SKIP_EXISTING_FILES, MUSIC_FORMAT, RAW_AUDIO_AS_IS, ANTI_BAN_WAIT_TIME, OVERRIDE_AUTO_WAIT try: @@ -631,7 +631,8 @@ def download_track(track_id_str: str, extra_paths="", prefix=False, prefix_value total=total_size, unit='B', unit_scale=True, - unit_divisor=1024 + unit_divisor=1024, + disable=disable_progressbar ) as bar: for _ in range(int(total_size / CHUNK_SIZE) + 1): bar.update(file.write( @@ -657,9 +658,8 @@ def download_album(album): token = SESSION.tokens().get("user-read-email") artist, album_name = get_album_name(token, album) tracks = get_album_tracks(token, album) - for n, track in enumerate(tracks, start=1): - download_track(track['id'], f'{artist}/{album_name}', prefix=True, prefix_value=str(n)) - print("\n") + for n, track in tqdm(enumerate(tracks, start=1), unit_scale=True, unit='Song', total=len(tracks)): + download_track(track['id'], f'{artist}/{album_name}', prefix=True, prefix_value=str(n), disable_progressbar=True) def download_playlist(playlists, playlist_choice): From 64cc4da37b1c919495a2f7c32253324d9d7362eb Mon Sep 17 00:00:00 2001 From: Raju komati Date: Fri, 22 Oct 2021 21:22:41 +0530 Subject: [PATCH 4/4] added idea folder to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index c2cfa6a5..6f59376d 100644 --- a/.gitignore +++ b/.gitignore @@ -146,3 +146,6 @@ credentials.json #Download Folder ZSpotify\ Music/ ZSpotify\ Podcasts/ + +# Intellij +.idea \ No newline at end of file