diff --git a/zspotify/album.py b/zspotify/album.py index 8a38b6e5..5325caa9 100644 --- a/zspotify/album.py +++ b/zspotify/album.py @@ -2,7 +2,7 @@ from tqdm import tqdm from const import ITEMS, ARTISTS, NAME, ID from track import download_track -from utils import sanitize_data, fix_filename +from utils import fix_filename from zspotify import ZSpotify ALBUM_URL = 'https://api.spotify.com/v1/albums' @@ -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 resp[ARTISTS][0][NAME], sanitize_data(resp[NAME]) + return resp[ARTISTS][0][NAME], fix_filename(resp[NAME]) def get_artist_albums(artist_id): diff --git a/zspotify/app.py b/zspotify/app.py index b0cbb968..e0511cea 100644 --- a/zspotify/app.py +++ b/zspotify/app.py @@ -7,7 +7,7 @@ from const import TRACK, NAME, ID, ARTIST, ARTISTS, ITEMS, TRACKS, EXPLICIT, ALB from playlist import get_playlist_songs, get_playlist_info, download_from_user_playlist, download_playlist from podcast import download_episode, get_show_episodes from track import download_track, get_saved_tracks -from utils import sanitize_data, splash, split_input, regex_input_for_urls +from utils import fix_filename, splash, split_input, regex_input_for_urls from zspotify import ZSpotify SEARCH_URL = 'https://api.spotify.com/v1/search' @@ -45,7 +45,7 @@ def client(args) -> None: name, _ = get_playlist_info(playlist_id) for song in playlist_songs: download_track(song[TRACK][ID], - sanitize_data(name) + '/') + fix_filename(name) + '/') print('\n') elif episode_id is not None: download_episode(episode_id) @@ -83,7 +83,7 @@ def client(args) -> None: playlist_songs = get_playlist_songs(playlist_id) name, _ = get_playlist_info(playlist_id) for song in playlist_songs: - download_track(song[TRACK][ID], sanitize_data(name) + '/') + download_track(song[TRACK][ID], fix_filename(name) + '/') print('\n') elif episode_id is not None: download_episode(episode_id) diff --git a/zspotify/const.py b/zspotify/const.py index 73c5e9c1..39bf059f 100644 --- a/zspotify/const.py +++ b/zspotify/const.py @@ -1,5 +1,3 @@ -SANITIZE = ('\\', '/', ':', '*', '?', '\'', '<', '>', '"') - SAVED_TRACKS_URL = 'https://api.spotify.com/v1/me/tracks' TRACKS_URL = 'https://api.spotify.com/v1/tracks' diff --git a/zspotify/playlist.py b/zspotify/playlist.py index 44156887..d323723e 100644 --- a/zspotify/playlist.py +++ b/zspotify/playlist.py @@ -2,7 +2,7 @@ from tqdm import tqdm from const import ITEMS, ID, TRACK, NAME from track import download_track -from utils import sanitize_data +from utils import fix_filename from zspotify import ZSpotify MY_PLAYLISTS_URL = 'https://api.spotify.com/v1/me/playlists' @@ -54,7 +54,7 @@ def download_playlist(playlist): p_bar = tqdm(playlist_songs, unit='song', total=len(playlist_songs), unit_scale=True) enum = 1 for song in p_bar: - download_track(song[TRACK][ID], sanitize_data(playlist[NAME].strip()) + '/', + download_track(song[TRACK][ID], fix_filename(playlist[NAME].strip()) + '/', prefix=True, prefix_value=str(enum) ,disable_progressbar=True) p_bar.set_description(song[TRACK][NAME]) enum += 1 diff --git a/zspotify/podcast.py b/zspotify/podcast.py index 03bc7b35..686ea4ab 100644 --- a/zspotify/podcast.py +++ b/zspotify/podcast.py @@ -7,7 +7,7 @@ from tqdm import tqdm from const import (CHUNK_SIZE, ERROR, ID, ITEMS, NAME, ROOT_PODCAST_PATH, SHOW, SKIP_EXISTING_FILES) -from utils import create_download_directory, sanitize_data +from utils import create_download_directory, fix_filename from zspotify import ZSpotify EPISODE_INFO_URL = 'https://api.spotify.com/v1/episodes' @@ -18,7 +18,7 @@ def get_episode_info(episode_id_str) -> Tuple[Optional[str], Optional[str]]: info = ZSpotify.invoke_url(f'{EPISODE_INFO_URL}/{episode_id_str}') if ERROR in info: return None, None - return sanitize_data(info[SHOW][NAME]), sanitize_data(info[NAME]) + return fix_filename(info[SHOW][NAME]), fix_filename(info[NAME]) def get_show_episodes(show_id_str) -> list: diff --git a/zspotify/track.py b/zspotify/track.py index 6f01c38f..b99a3fdd 100644 --- a/zspotify/track.py +++ b/zspotify/track.py @@ -11,7 +11,7 @@ from tqdm import tqdm from const import TRACKS, ALBUM, NAME, ITEMS, DISC_NUMBER, TRACK_NUMBER, IS_PLAYABLE, ARTISTS, IMAGES, URL, \ RELEASE_DATE, ID, TRACKS_URL, SAVED_TRACKS_URL, SPLIT_ALBUM_DISCS, ROOT_PATH, DOWNLOAD_FORMAT, CHUNK_SIZE, \ SKIP_EXISTING_FILES, ANTI_BAN_WAIT_TIME, OVERRIDE_AUTO_WAIT, BITRATE, CODEC_MAP, EXT_MAP, DOWNLOAD_REAL_TIME -from utils import sanitize_data, set_audio_tags, set_music_thumbnail, create_download_directory +from utils import fix_filename, set_audio_tags, set_music_thumbnail, create_download_directory from zspotify import ZSpotify @@ -38,9 +38,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(sanitize_data(data[NAME])) - album_name = sanitize_data(info[TRACKS][0][ALBUM][NAME]) - name = sanitize_data(info[TRACKS][0][NAME]) + artists.append(data[NAME]) + album_name = info[TRACKS][0][ALBUM][NAME] + name = 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] @@ -66,7 +66,7 @@ def download_track(track_id: str, extra_paths='', prefix=False, prefix_value='', download_directory = os.path.join(os.path.dirname( __file__), ZSpotify.get_config(ROOT_PATH), extra_paths) - song_name = artists[0] + ' - ' + name + song_name = fix_filename(artists[0]) + ' - ' + fix_filename(name) if prefix: song_name = f'{prefix_value.zfill(2)} - {song_name}' if prefix_value.isdigit( ) else f'{prefix_value} - {song_name}' diff --git a/zspotify/utils.py b/zspotify/utils.py index f6c95840..36c9edaf 100644 --- a/zspotify/utils.py +++ b/zspotify/utils.py @@ -60,13 +60,6 @@ def clear() -> None: os.system('clear') -def sanitize_data(value) -> str: - """ Returns given string with problematic removed """ - for pattern in SANITIZE: - value = value.replace(pattern, '') - return value.replace('|', '-') - - def set_audio_tags(filename, artists, name, album_name, release_year, disc_number, track_number) -> None: """ sets music_tag metadata """ tags = music_tag.load_file(filename)