Had fun and games getting the API to work with spotipy. All due t orustiness and inexpeerience. I just couldn’t get it to authenticate until I realised how to put my credentials in the script.
This was all part of a project to move our entire library of ripped CDs from the Squeezebox to Spotify. I was able to export the database to excel, clean it up, use the excel to make lines of code, then went through in batches of 100. I figured this would be quicker than hacking away maging it work with the spotify paging system as it was a one off task.
I did put the API authentication details in to a json file though:
{"client_id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"redirect_uri": "https://localhost:8080"
}
The code (no promises it is not changed a bit), but it might help someone.
# Shows a user's playlists
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import json
import sys
import pprint
# Opening JSON file
f = open('authorisation.json')
# returns JSON object as
# a dictionary
data = json.load(f)
f = open('playlist_track_ids.json')
a_track_ids = json.load(f)
# scope = 'playlist-read-private'
# sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=data['client_id'],
# client_secret=data['client_secret'],
# redirect_uri=data['redirect_uri'],
# scope=scope))
# results = sp.current_user_playlists(limit=50)
# for i, item in enumerate(results['items']):
# print("%d %s %s" % (i, item['name'],item['id']))
scope = 'playlist-modify-private'
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=data['client_id'],
client_secret=data['client_secret'],
redirect_uri=data['redirect_uri'],
scope=scope))
songsAndArtists = {
#'Afro Angel': 'Will Smith',
'Sandstorm': 'Cast',
'Mis-Shapes': 'Pulp',
'Mansize Rooster': 'Supergrass',
'Sleeping In': 'Menswear',
'Getting Better': 'Shed Seven',
'From a Window': 'Northern Uproar',
'The Riverboat Song': 'Ocean Colour Scene',
'Weak': 'Skunk Anansie',
'Divebomb': 'Number One Cup',
'Time': 'Marion',
'Far': 'Longpigs',
'The Universal': 'Blur',
'Dark Therapy': 'Echobelly',
'For the Dead': 'Gene',
'Ten Storey Love Song': 'The Stone Roses',
'Just': 'Radiohead',
'Lucky You': 'The Lightning Seeds',
'Carnival': 'The Cardigans',
'Anywhere': 'Dubstar',
'Come Together': 'The Smokin\' Mojo Filters',
'Fade Away': 'Oasis and Friends',
'Flying': 'Cast',
'Beautiful Ones': 'Suede',
'Everything Must Go': 'Manic Street Preachers',
'Fighting Fit': 'Gene',
'Twisted (Everyday Hurts)': 'Skunk Anansie',
'Lost Myself': 'Longpigs',
'Disco 2000': 'Pulp',
'Ready or Not': 'The Lightning Seeds',
'You\'ve Got It Bad': 'Ocean Colour Scene',
'C\'mon Kids': 'The Boo Radleys',
'Lava': 'Silver Sun',
'Kandy Pop': 'Bis',
'Teenage Angst': 'Placebo',
'Burden in My Hand': 'Soundgarden',
'Celebrity Hit List': 'Terrorvision',
'Boy Wonder': 'Speedy',
'No One Speaks': 'Geneva',
'Great Things': 'Echobelly',
'Nice Guy Eddie': 'Sleeper',
'Sparkle': 'My Life Story',
'Morning Glory': 'Oasis',
'Milk': 'Garbage featuring Tricky',
'6 Underground': 'Sneaker Pimps',
'If You\'re Thinking of Me': 'Dodgy',
'Chasing Rainbows': 'Shed Seven',
'For You': 'Electronic',
'You\'re Gorgeous': 'Babybird',
'Patio Song': 'Gorky\'s Zygotic Mynci',
'Neighbourhood': 'Space',
'Girls & Boys': 'Blur',
'The Frog Princess': 'The Divine Comedy',
'Whatever': 'Oasis',
'Lazy Lover': 'The Supernaturals',
'Lenny': 'Supergrass',
'If You Don\'t Want Me to Destroy You': 'Super Furry Animals',
'Broken Stones': 'Paul Weller',
'If I Could Talk I\'d Tell You': 'The Lemonheads',
'Street Spirit (Fade Out)': 'Radiohead',
'Not So Manic Now': 'Dubstar',
'You\'ve Got a Lot to Answer For': 'Catatonia',
'One Night Stand': 'The Aloof',
}
songsAndAlbums = {
#'Deep Blue Day': 'Trainspotting',
}
i=0
# Iterating over values
for name, artist in songsAndArtists.items():
results = sp.search(q='track:' + name + ' artist:' + artist, type='track')
items = results['tracks']['items']
if len(items) > 0:
track = items[0]
try:
a_track_ids.index(track['id'])
#print('Found: '+track['name'])
except:
# #add to the list
# sp.playlist_add_items(playlist_id='2CE0LjqBpPFqdv2CnToUIh', items=['spotify:track:'+track['id']+''], position=None)
# a_track_ids.append(track['id'])
print('***Added: '+track['name'])
i=0
# Iterating over values
for name, album in songsAndAlbums.items():
results = sp.search(q='track:' + name + ' album:' + album, type='track')
items = results['tracks']['items']
if len(items) > 0:
track = items[0]
try:
a_track_ids.index(track['id'])
#print('Found: '+track['name'])
except:
# #add to the list
# sp.playlist_add_items(playlist_id='2CE0LjqBpPFqdv2CnToUIh', items=['spotify:track:'+track['id']+''], position=None)
# a_track_ids.append(track['id'])
print('***Added: '+track['name'])
with open("playlist_track_ids.json", "w") as outfile:
json.dump(a_track_ids, outfile)