MusicIndexer/main.py
IlyaShurupov 3744bd1c56 tmp
2024-07-11 10:26:27 +03:00

116 lines
2.9 KiB
Python

from DataBase import *
from SpotifyWebAPI import fetch_data
import cmd
playlists = get_data('playlistTracks')
top_artists = get_data('top_artists')
top_tracks = get_data('top_tracks')
user_tracks = get_data('tracks')
def get_playlist_names(pl):
return [name for name, items in pl.items()]
def print_playlist_tracks(pl_id: int):
pls = list(playlists)
name = pls[pl_id]
pl = playlists[name]
print(name)
for track in pl:
track_data = track['track']
track_name = track_data['name']
artists = get_artists_str(track_data['artists'])
print(f" '{track_name}' - '{artists}' ")
def print_top_artists():
for artist in top_artists:
name = artist['name']
print(f" '{name}'")
def print_top_tracks():
for track in top_tracks:
track_name = track['name']
artists = get_artists_str(track['artists'])
print(f" '{track_name}' - '{artists}' ")
def print_stats():
print(f" tracks - {len(user_tracks)}")
print(f" playlists - {len(playlists)}")
for name, tracks in playlists.items():
print(f" '{name}' - {len(tracks)}")
print(f" top tracks - {len(top_tracks)}")
print(f" top artists - {len(top_artists)}")
def print_tracks():
track_idx = 0
for trackItem in user_tracks:
track = trackItem['track']
print(f" {track_idx}: '{track['name']}' by '{get_artists_str(track['artists'])}'")
track_idx += 1
class Interpreter(cmd.Cmd):
intro = "Welcome to the interactive command loop. Type help or ? to list commands.\n"
prompt = "(spotify) "
def do_playlists(self, arg):
"""prints user playlists"""
pl_id = 0
for pl in get_playlist_names(playlists):
print(f"{pl_id} - {pl}")
pl_id += 1
def do_playlist_tracks(self, arg):
"""prints playlist [name]"""
try:
pl_id = int(arg.split()[0])
print_playlist_tracks(pl_id)
except IndexError:
print("Invalid input")
def do_top_artists(self, arg):
"""Top artists"""
print_top_artists()
def do_top_tracks(self, arg):
"""Top tracks"""
print_top_tracks()
def do_stat(self, arg):
"""Print stats"""
print_stats()
def do_tracks(self, arg):
"""Print tracks"""
print_tracks()
def do_fetch(self, arg):
"""Fetch all spotify data"""
try:
fetch_data()
global playlists, top_artists, top_tracks, user_tracks
playlists = get_data('playlistTracks')
top_artists = get_data('top_artists')
top_tracks = get_data('top_tracks')
user_tracks = get_data('tracks')
except ValueError:
print("Can not fetch the data.")
def do_exit(self, arg):
"""Exit the command loop: exit"""
print("Goodbye!")
return True
if __name__ == '__main__':
Interpreter().cmdloop()