From 21b970f0e1f563aeb0289385fb35099c42f75670 Mon Sep 17 00:00:00 2001 From: Logykk <35679186+logykk@users.noreply.github.com> Date: Sun, 24 Oct 2021 20:36:31 +1300 Subject: [PATCH 1/3] Bumped minimum python version to 3.9 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f7062b3..7b8f1b0e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Requirements: Binaries -- Python 3.8 or greater +- Python 3.9 or greater - ffmpeg* - Git** From 05ecb1d3bb024e3dc0a5085dfc6a74276c4f941c Mon Sep 17 00:00:00 2001 From: Jonathan Barratt Date: Sun, 24 Oct 2021 15:35:06 +0700 Subject: [PATCH 2/3] Use absolute paths for download directories --- src/podcast.py | 10 +++++----- src/track.py | 13 +++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/podcast.py b/src/podcast.py index ccd8a694..43dae318 100644 --- a/src/podcast.py +++ b/src/podcast.py @@ -1,3 +1,4 @@ +import os from typing import Optional from librespot.audio.decoders import VorbisOnlyAudioQuality @@ -49,10 +50,11 @@ def download_episode(episode_id) -> None: episode_id = EpisodeId.from_base62(episode_id) stream = ZSpotify.get_content_stream(episode_id, ZSpotify.DOWNLOAD_QUALITY) - create_download_directory(ZSpotify.get_config(ROOT_PODCAST_PATH) + extra_paths) + download_directory = os.path.dirname(__file__) + ZSpotify.get_config(ROOT_PODCAST_PATH) + extra_paths + create_download_directory(download_directory) total_size = stream.input_stream.size - with open(ZSpotify.get_config(ROOT_PODCAST_PATH) + extra_paths + filename + MusicFormat.OGG.value, + with open(download_directory + filename + MusicFormat.OGG.value, 'wb') as file, tqdm( desc=filename, total=total_size, @@ -65,6 +67,4 @@ def download_episode(episode_id) -> None: stream.input_stream.stream().read(ZSpotify.get_config(CHUNK_SIZE)))) # convert_audio_format(ROOT_PODCAST_PATH + - # extra_paths + filename + '.ogg') - - # related functions that do stuff with the spotify API + # extra_paths + filename + '.ogg') \ No newline at end of file diff --git a/src/track.py b/src/track.py index dc148b0d..96dcd6a8 100644 --- a/src/track.py +++ b/src/track.py @@ -53,6 +53,7 @@ def get_song_info(song_id) -> tuple[list[str], str, str, Any, Any, Any, Any, Any # noinspection PyBroadException def download_track(track_id: str, extra_paths='', prefix=False, prefix_value='', disable_progressbar=False) -> None: """ Downloads raw song audio from Spotify """ + download_directory = os.path.join(os.path.dirname(__file__), ZSpotify.get_config(ROOT_PATH), extra_paths) try: (artists, album_name, name, image_url, release_year, disc_number, track_number, scraped_song_id, is_playable) = get_song_info(track_id) @@ -63,11 +64,11 @@ def download_track(track_id: str, extra_paths='', prefix=False, prefix_value='', ) else f'{prefix_value} - {song_name}' if ZSpotify.get_config(SPLIT_ALBUM_DISCS): - filename = os.path.join(ZSpotify.get_config(ROOT_PATH), extra_paths, 'Disc ' + str( - disc_number) + '/' + song_name + '.' + ZSpotify.get_config(DOWNLOAD_FORMAT)) + filename = os.path.join(download_directory, f'Disc {disc_number}', + f'{song_name}.{ZSpotify.get_config(DOWNLOAD_FORMAT)}') else: - filename = os.path.join(ZSpotify.get_config(ROOT_PATH), extra_paths, - song_name + '.' + ZSpotify.get_config(DOWNLOAD_FORMAT)) + filename = os.path.join(download_directory, + f'{song_name}.{ZSpotify.get_config(DOWNLOAD_FORMAT)}') except Exception: print('### SKIPPING SONG - FAILED TO QUERY METADATA ###') else: @@ -84,7 +85,7 @@ def download_track(track_id: str, extra_paths='', prefix=False, prefix_value='', track_id = scraped_song_id track_id = TrackId.from_base62(track_id) stream = ZSpotify.get_content_stream(track_id, ZSpotify.DOWNLOAD_QUALITY) - create_download_directory(ZSpotify.get_config(ROOT_PATH) + extra_paths) + create_download_directory(download_directory) total_size = stream.input_stream.size with open(filename, 'wb') as file, tqdm( @@ -102,7 +103,7 @@ def download_track(track_id: str, extra_paths='', prefix=False, prefix_value='', if ZSpotify.get_config(DOWNLOAD_FORMAT) == 'mp3': convert_audio_format(filename) set_audio_tags(filename, artists, name, album_name, - release_year, disc_number, track_number) + release_year, disc_number, track_number) set_music_thumbnail(filename, image_url) if not ZSpotify.get_config(OVERRIDE_AUTO_WAIT): From a08b54c8b35698025e2390a24306eeeb116a1c8f Mon Sep 17 00:00:00 2001 From: logykk Date: Sun, 24 Oct 2021 22:04:53 +1300 Subject: [PATCH 3/3] revert metadata patch --- src/album.py | 2 +- src/track.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/album.py b/src/album.py index d797d023..12f86eb6 100644 --- a/src/album.py +++ b/src/album.py @@ -28,7 +28,7 @@ def get_album_tracks(album_id): def get_album_name(album_id): """ Returns album name """ resp = ZSpotify.invoke_url(f'{ALBUM_URL}/{album_id}') - return sanitize_data(resp[ARTISTS][0][NAME]), sanitize_data(resp[NAME]) + return resp[ARTISTS][0][NAME], sanitize_data(resp[NAME]) def get_artist_albums(artist_id): diff --git a/src/track.py b/src/track.py index dc148b0d..d2ed1b10 100644 --- a/src/track.py +++ b/src/track.py @@ -37,9 +37,9 @@ def get_song_info(song_id) -> tuple[list[str], str, str, Any, Any, Any, Any, Any artists = [] for data in info[TRACKS][0][ARTISTS]: - artists.append(data[NAME]) - album_name = info[TRACKS][0][ALBUM][NAME] - name = info[TRACKS][0][NAME] + artists.append(sanitize_data(data[NAME])) + album_name = sanitize_data(info[TRACKS][0][ALBUM][NAME]) + name = sanitize_data(info[TRACKS][0][NAME]) image_url = info[TRACKS][0][ALBUM][IMAGES][0][URL] release_year = info[TRACKS][0][ALBUM][RELEASE_DATE].split('-')[0] disc_number = info[TRACKS][0][DISC_NUMBER] @@ -57,7 +57,7 @@ def download_track(track_id: str, extra_paths='', prefix=False, prefix_value='', (artists, album_name, name, image_url, release_year, disc_number, track_number, scraped_song_id, is_playable) = get_song_info(track_id) - song_name = sanitize_data(artists[0]) + ' - ' + sanitize_data(name) + 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}'