In [ ]:
import spotipy
import pprint
import json
from spotipy.oauth2 import SpotifyClientCredentials
import pandas as pd
import numpy as np
keys = {}
i=0
def getAudioFeature(id):
feature = sp.audio_features(id)
if feature[0]:
s = pd.Series([feature[(0)]['danceability'], feature[(0)]['energy'], feature[(0)]['key'], feature[(0)]['loudness'],
feature[(0)]['mode'], feature[(0)]['speechiness'], feature[(0)]['acousticness'], feature[(0)]['instrumentalness'],
feature[(0)]['liveness'], feature[(0)]['valence'], feature[(0)]['tempo'], feature[(0)]['duration_ms'],
feature[(0)]['time_signature'] ],
index=['Danceability', 'Energy', 'Key', 'Loudness', 'Mode', 'Speechiness',
'Acousticness', 'Instrumentalness', 'Liveness', 'Valence', 'Tempo',
'Duration_ms', 'Time_signature'])
return s
else:
return pd.Series()
with open('keys.txt') as fp:
for line in fp:
keys[i] = line
i = i+1
print(keys[0])
print(keys[1])
client_credentials_manager = SpotifyClientCredentials(client_id= keys[0],client_secret= keys[1])
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
songTest = pd.DataFrame(columns=['Song Name','Artists Name', 'Danceability', 'Energy',
'Key', 'Loudness', 'Mode', 'Speechiness', 'Acousticness', 'Instrumentalness',
'Liveness', 'Valence', 'Tempo', 'Duration_ms', 'Time_signature'])
results = sp.search(q='year:2017', market='US', type='track', limit = 50, offset = 0)
offset = 0
while(results['tracks']['items']):
for element in results['tracks']['items']:
artistList = []
for artist in element['artists']:
artistList.append(artist['name'])
artistString = ",".join(artistList)
s = pd.Series(element['name'], index=['Song Name'])
s = s.append(pd.Series(artistString, index=['Artists Name']))
audioFeature = getAudioFeature(element['id'])
if not audioFeature.empty:
s = s.append(audioFeature)
songTest = songTest.append(s,ignore_index=True)
if not results['tracks']['next']:
results['tracks']['items'] = False
else:
offset = offset + 50
print(offset)
results = sp.search(q='year:2017', market='US', type='track', limit = 50, offset = offset)
In [ ]:
songTest.to_csv('SongReleased2017WithFeatures.csv')
In [ ]: