updated folder name

This commit is contained in:
Raju komati 2021-10-25 09:22:53 +05:30
parent 441da8eef0
commit dab823d09e
No known key found for this signature in database
GPG Key ID: D0390D7534A9E462
8 changed files with 37 additions and 14 deletions

View File

@ -1,3 +1,4 @@
"""It's provides functions for downloading the albums"""
from tqdm import tqdm
from const import ITEMS, ARTISTS, NAME, ID
@ -16,7 +17,8 @@ def get_album_tracks(album_id):
limit = 50
while True:
resp = ZSpotify.invoke_url_with_params(f'{ALBUM_URL}/{album_id}/tracks', limit=limit, offset=offset)
resp = ZSpotify.invoke_url_with_params(f'{ALBUM_URL}/{album_id}/tracks',
limit=limit, offset=offset)
offset += limit
songs.extend(resp[ITEMS])
if len(resp[ITEMS]) < limit:
@ -42,9 +44,10 @@ def download_album(album):
""" Downloads songs from an album """
artist, album_name = get_album_name(album)
tracks = get_album_tracks(album)
for n, track in tqdm(enumerate(tracks, start=1), unit_scale=True, unit='Song', total=len(tracks)):
for album_number, 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)
prefix=True, prefix_value=str(album_number), disable_progressbar=True)
def download_artist_albums(artist):

View File

@ -1,3 +1,4 @@
"""Entrypoint of ZSpotify app. It provides functions for searching"""
import sys
from librespot.audio.decoders import AudioQuality
@ -5,7 +6,7 @@ from tabulate import tabulate
from album import download_album, download_artist_albums
from const import TRACK, NAME, ID, ARTISTS, ITEMS, TRACKS, EXPLICIT, ALBUMS, OWNER, \
PLAYLISTS, DISPLAY_NAME
PLAYLISTS, DISPLAY_NAME, LIMIT, OFFSET, TYPE, S_NO, ALBUM
from playlist import download_from_user_playlist, download_playlist, \
download_playlist_with_id
from podcast import download_episode, get_show_episodes
@ -40,6 +41,9 @@ def client() -> None:
def process_args_input():
"""
process the sys args
"""
if sys.argv[1] == '-p' or sys.argv[1] == '--playlist':
download_from_user_playlist()
elif sys.argv[1] == '-ls' or sys.argv[1] == '--liked-songs':
@ -54,6 +58,11 @@ def process_args_input():
def process_url_input(url, call_search=False):
"""
process the input and calls appropriate download method
@param url: input url
@param call_search: boolean variable to notify calling search method
"""
track_id, album_id, playlist_id, episode_id, show_id, artist_id = regex_input_for_urls(url)
if track_id:
@ -75,7 +84,7 @@ def process_url_input(url, call_search=False):
def search(search_term):
""" Searches Spotify's API for relevant data """
params = {'limit': '10', 'offset': '0', 'q': search_term, 'type': 'track,album,artist,playlist'}
params = {LIMIT: '10', OFFSET: '0', 'q': search_term, TYPE: 'track,album,artist,playlist'}
resp = ZSpotify.invoke_url_with_params(SEARCH_URL, **params)
total_tracks = total_albums = total_artists = 0
@ -90,7 +99,8 @@ def search(search_term):
','.join([artist[NAME] for artist in track[ARTISTS]])])
counter += 1
total_tracks = counter - 1
print(tabulate(track_data, headers=['S.NO', 'Name', 'Artists'], tablefmt='pretty'))
print(tabulate(track_data, headers=[S_NO, NAME.title(), ARTISTS.title()],
tablefmt='pretty'))
print('\n')
albums = resp[ALBUMS][ITEMS]
@ -98,10 +108,12 @@ def search(search_term):
print('### ALBUMS ###')
album_data = []
for album in albums:
album_data.append([counter, album[NAME], ','.join([artist[NAME] for artist in album[ARTISTS]])])
album_data.append([counter, album[NAME], ','.join([artist[NAME]
for artist in album[ARTISTS]])])
counter += 1
total_albums = counter - total_tracks - 1
print(tabulate(album_data, headers=['S.NO', 'Album', 'Artists'], tablefmt='pretty'))
print(tabulate(album_data, headers=[S_NO, ALBUM.title(), ARTISTS.title()],
tablefmt='pretty'))
print('\n')
artists = resp[ARTISTS][ITEMS]
@ -112,7 +124,7 @@ def search(search_term):
artist_data.append([counter, artist[NAME]])
counter += 1
total_artists = counter - total_tracks - total_albums - 1
print(tabulate(artist_data, headers=['S.NO', 'Name'], tablefmt='pretty'))
print(tabulate(artist_data, headers=[S_NO, NAME.title()], tablefmt='pretty'))
print('\n')
playlists = resp[PLAYLISTS][ITEMS]
@ -121,13 +133,16 @@ def search(search_term):
for playlist in playlists:
playlist_data.append([counter, playlist[NAME], playlist[OWNER][DISPLAY_NAME]])
counter += 1
print(tabulate(playlist_data, headers=['S.NO', 'Name', 'Owner'], tablefmt='pretty'))
print(tabulate(playlist_data, headers=[S_NO, NAME.title(), OWNER.title()], tablefmt='pretty'))
print('\n')
perform_action(tracks, albums, playlists, artists, total_tracks, total_albums, total_artists)
def perform_action(tracks: list, albums: list, playlists: list, artists: list, total_tracks: int, total_albums: int,
total_artists: int):
def perform_action(tracks: list, albums: list, playlists: list, artists: list,
total_tracks: int, total_albums: int, total_artists: int):
"""
process and downloads the user selection
"""
if len(tracks) + len(albums) + len(playlists) == 0:
print('NO RESULTS FOUND - EXITING...')
else:

View File

@ -1,3 +1,4 @@
""" provides commonly used string across different modules"""
SANITIZE = ('\\', '/', ':', '*', '?', '\'', '<', '>', '"')
SAVED_TRACKS_URL = 'https://api.spotify.com/v1/me/tracks'
@ -107,3 +108,5 @@ PLAYLIST_ID = 'PlaylistID'
ALBUM_ID = 'AlbumID'
TRACK_ID = 'TrackID'
S_NO = 'S.NO'

View File

@ -32,7 +32,8 @@ def get_playlist_songs(playlist_id):
limit = 100
while True:
resp = ZSpotify.invoke_url_with_params(f'{PLAYLISTS_URL}/{playlist_id}/tracks', limit=limit, offset=offset)
resp = ZSpotify.invoke_url_with_params(f'{PLAYLISTS_URL}/{playlist_id}/tracks',
limit=limit, offset=offset)
offset += limit
songs.extend(resp[ITEMS])
if len(resp[ITEMS]) < limit:
@ -52,7 +53,8 @@ def download_playlist_with_id(playlist_id):
playlist_songs = [song for song in get_playlist_songs(playlist_id) if song[TRACK][ID]]
p_bar = tqdm(playlist_songs, unit='song', total=len(playlist_songs), unit_scale=True)
for song in p_bar:
download_track(song[TRACK][ID], sanitize_data(name.strip()) + '/', disable_progressbar=True, create_m3u_file=True)
download_track(song[TRACK][ID], sanitize_data(name.strip()) + '/', disable_progressbar=True,
create_m3u_file=True)
p_bar.set_description(song[TRACK][NAME])