import json import requests import pandas as pd from pandas import DataFrame import csv from pprint import pprint import datetime auth = "Bearer " + "BQAM9rwnXsoUzkguWjiKRn8ffxSeZV0ixaU249PpooTtI5ltX3siaO3USH4TjsbN7mhXxCLZjO9iiCbsv0ZPGBVO6Kdngc9EAqNs2xFOO12Fs1Uj5NP2-Vm-Hv1jN5au9qxgv-ciWVN1ig" user_id = 'spotify' response = requests.get('https://api.spotify.com/v1/users/' + user_id + '/playlists?offset=0&limit=50', headers={"Authorization": auth}) data = response.json() #print data ids = [] total_playlists = data.get("total") print total_playlists , "total playlists from user " + user_id for offset in range (0, total_playlists, 50): #print offset response = requests.get('https://api.spotify.com/v1/users/' + user_id + '/playlists?offset={}&limit=50'.format(offset), headers={"Authorization": auth}) data = response.json() for item in data: ls = data.get("items") for n in range(len(ls)): id = [ls[n].get("name"), ls[n].get("id")] if id not in ids: ids.append(id) pprint(ids) new_tracks = [] # for each playlist in list of playlists get the tracks for playlist in ids: uri = playlist[1] p_name = playlist[0].encode('utf-8') response = requests.get('https://api.spotify.com/v1/users/' + user_id + '/playlists/{}/tracks?fields=items(added_at,track(id,name,artists(name)))'.format(uri), headers={"Authorization": auth}) # tracks json stored in t_data: t_data = response.json() #print t_data ls = t_data.get("items") try: for n in range(len(ls)): track = [] id = ls[n].get("track").get("id").encode('utf-8') track.append(id) added = ls[n].get("added_at").encode('utf-8') track.append(added) title = ls[n].get("track").get("name").encode('utf-8') track.append(title) track.append(p_name) print track new_tracks.append(track) except: pass new_tracks_df = DataFrame.from_records(new_tracks, columns=['ID','ADDED','TITLE','PLAYLIST_NAME']) #print new_tracks_df[:50] # orchard_tracks_df = pd.read_csv('spotify_uri_list.csv') orchard_tracks_df.columns = ['ID'] merge_df = new_tracks_df.merge(orchard_tracks_df,on=['ID']) merge_df = merge_df.sort_values(by=['ADDED'], ascending = False) merge_df['ADDED'] = pd.to_datetime(merge_df['ADDED']).dt.date now = datetime.datetime.now().date() merge_df['DAYS_AGO'] = (now - merge_df['ADDED']).dt.days merge_df = merge_df.drop(merge_df[merge_df.DAYS_AGO>2].index) print(merge_df.to_string()) merge_df.to_csv('playlist_adds_june14.csv') ### export new tracks to csv ### # import csv # # with open('spotify_owned_playlists_new_tracks.csv', 'wb') as myfile: # wr = csv.writer(myfile, quoting=csv.QUOTE_ALL) # wr.writerow(new_tracks) ### export playlists and IDs to csv ### # import csv # # for x in ids: # for y in x: # y=y.encode('utf-8') # # with open('spotify_owned_playlists.csv', 'wb') as myfile: # wr = csv.writer(myfile, quoting=csv.QUOTE_ALL) # wr.writerow(ids)