Amazing-Python-Scripts
83 строки · 2.8 Кб
1import pandas as pd2import spotipy3import config4# To access authorised Spotify data
5from spotipy.oauth2 import SpotifyClientCredentials6
7client_id = config.client_id8client_secret = config.secret_key9
10client_credentials_manager = SpotifyClientCredentials(11client_id=client_id, client_secret=client_secret)12# spotify object to access API
13sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)14name = input("Enter Artist Name: ") # chosen artist15result = sp.search(name) # search query16artist_uri = ''17for row in result['tracks']['items'][0]['artists']:18if name.lower() in row['name'].lower():19artist_uri = row['uri']20break21
22# Pull all of the artist's albums
23sp_albums = sp.artist_albums(artist_uri, album_type='album')24# Store artist's albums' names' and uris in separate lists
25
26album_names = []27album_uris = []28for i in range(len(sp_albums['items'])):29album_names.append(sp_albums['items'][i]['name'])30album_uris.append(sp_albums['items'][i]['uri'])31
32
33def albumSongs(uri):34album = uri # assign album uri to a_name35spotify_albums[album] = {} # Creates dictionary for that specific album36# Create keys-values of empty lists inside nested dictionary for album37spotify_albums[album]['album'] = [] # create empty list38spotify_albums[album]['track_number'] = []39spotify_albums[album]['id'] = []40spotify_albums[album]['name'] = []41spotify_albums[album]['uri'] = []42tracks = sp.album_tracks(album) # pull data on album tracks43for n in range(len(tracks['items'])): # for each song track44# append album name tracked via album_count45spotify_albums[album]['album'].append(album_names[album_count])46spotify_albums[album]['track_number'].append(47tracks['items'][n]['track_number'])48spotify_albums[album]['id'].append(tracks['items'][n]['id'])49spotify_albums[album]['name'].append(tracks['items'][n]['name'])50spotify_albums[album]['uri'].append(tracks['items'][n]['uri'])51
52
53spotify_albums = {}54album_count = 055for i in album_uris: # each album56albumSongs(i)57album_count += 1 # Updates album count once all tracks have been added58
59
60def popularity(album):61spotify_albums[album]['popularity'] = []62track_count = 063for track in spotify_albums[album]['uri']:64pop = sp.track(track)65spotify_albums[album]['popularity'].append(pop['popularity'])66track_count += 167
68
69for i in spotify_albums:70popularity(i)71
72dic_df = {}73dic_df['name'] = []74dic_df['popularity'] = []75for album in spotify_albums:76for feature in ['name', 'popularity']:77dic_df[feature].extend(spotify_albums[album][feature])78
79df = pd.DataFrame.from_dict(dic_df)80
81final_df = df.sort_values('popularity', ascending=False)82pd.set_option("display.max_rows", None, "display.max_columns", None)83print(final_df)84