Skip to content

Instantly share code, notes, and snippets.

@MartinWeiss12
MartinWeiss12 / spotifyArtistGrid.py
Last active January 4, 2024 05:10
Get Artist Image URL With Spotify API
artistImageUrlList = []
print('Total artists streamed:', len(uniqueArtistUriList))
for uri in range(49):
spotifyUrl = requests.get('https://open.spotify.com/artist/' +
str(uniqueArtistUriList[uri]))
spoifyHtmlData = str(soup(spotifyUrl.text, 'html.parser'))
spoifyHtmlData = spoifyHtmlData.split('<')
artistName = spoifyHtmlData[5].split('>')
artistName = artistName[1].split('|')
artistApiResults = requests.get('https://api.spotify.com/v1/search',
@MartinWeiss12
MartinWeiss12 / spotifyArtistGrid.py
Last active December 17, 2022 23:54
Spotify API Initialization
cid = ''
secret = ''
username = ''
redirect_uri = 'http://localhost:8888/callback'
scope = 'user-top-read playlist-modify-public'
token = util.prompt_for_user_token(username, scope,
client_id = cid, client_secret = secret, redirect_uri = redirect_uri)
if token:
sp = spotipy.Spotify(auth = token)
@MartinWeiss12
MartinWeiss12 / spotifyArtistGrid.py
Last active December 18, 2022 00:32
Artist Pivot Table
artistUriDf = pd.DataFrame(list(zip(rankList, trackList, trackUriList, streamList,
artistUriList)), columns = ['Rank', 'Track', 'Track URI', 'Streams', 'Artist URI'])
for row in artistUriDf.index:
if(artistUriDf['Artist URI'][row] == 'Error'):
artistUriDf.drop([row], axis = 0, inplace = True)
artistUriDfPivot = artistUriDf.pivot_table(index = ['Artist URI'],
values = ['Streams'], aggfunc = 'sum').reset_index('Artist URI')
artistUriDfPivot = artistUriDfPivot.sort_values(by = 'Streams', ascending = False
rankList = []
for artist in range(artistUriDfPivot.shape[0]):
@MartinWeiss12
MartinWeiss12 / spotifyArtistGrid.py
Last active December 17, 2022 18:52
Get Artist URI
artistUriList = []
print('Total Tracks:', len(trackUriList))
for uri in range(len(trackUriList)):
goodLink = False
while not goodLink:
spotifyUrl = requests.get('https://open.spotify.com/track/' +
str(trackUriList[uri]))
if('200' in str(spotifyUrl)):
goodLink = True
else:
@MartinWeiss12
MartinWeiss12 / spotifyAlbumGrid.py
Last active December 17, 2022 06:15
Download Album Cover Art
for image in range(len(albumImageUrlList)):
albumImageUrl = requests.get(albumImageUrlList[image])
filename = 'album_' + str(image+1) + '.png'
with open(os.path.join(imageFolderPath, filename), 'wb') as out:
out.write(albumImageUrl.content)
@MartinWeiss12
MartinWeiss12 / spotifyAlbumGrid.py
Last active December 17, 2022 06:14
Get Album Cover Art Image URLs
albumImageUrlList = []
for uri in range(49):
spotifyUrl = requests.get('https://open.spotify.com/album/' +
str(uniqueAlbumUriList[uri]))
bodyText = str(soup(spotifyUrl.text, 'html.parser'))
bodyTextInfo = bodyText.split('<')
albumImageData = bodyTextInfo[24]
albumImageData = albumImageData.split('"')
albumImageUrlList.append(albumImageData[1])
@MartinWeiss12
MartinWeiss12 / spotifyArtistGrid.py
Last active December 18, 2022 00:33
Pivot Table
albumUriDf = pd.DataFrame(list(zip(rankList, trackList, streamList, albumUriList)),
columns = ['Rank', 'Track', 'Streams', 'Album URI'])
albumUriDfPivot = albumUriDf.pivot_table(index = ['Album URI'],
values = ['Streams'], aggfunc = 'sum').reset_index('Album URI')
albumUriDfPivot = albumUriDfPivot.sort_values(by = 'Streams', ascending = False)
rankList = []
for album in range(albumUriDfPivot.shape[0]):
rankList.append(album+1)
albumUriDfPivot.insert(0, 'Rank', rankList)
uniqueAlbumUriList = albumUriDfPivot['Album URI'].tolist()
@MartinWeiss12
MartinWeiss12 / spotifyAlbumGrid.py
Last active December 17, 2022 06:12
Get Album URIs
print('Total Tracks:', len(trackUriList))
for uri in range(len(trackUriList)):
spotifyUrl = requests.get('https://open.spotify.com/track/' + str(trackUriList[uri]))
spoifyHtmlData = soup(spotifyUrl.text, 'html.parser')
divData = str(spoifyHtmlData.find('div', {'class': 'TS85Qkpioa31wR0p4kzT'}))
if(divData != 'None'):
divData = divData.split('=')
albumUrl = divData[5]
albumUrl = albumUrl.split('"')
albumUriList.append(albumUrl[1].replace('/album/', ''))
path = r'' #path of your spotify top tracks excel file
outputPath = '' #path where to output your spotify grid
imageFolderPath = '' #path for the folder that will store album cover images
data = pd.read_excel(path)
rankList = (data['Rank']).tolist()
trackList = (data['Track']).tolist()
streamList = (data['Streams']).tolist()
trackUriList = (data['URI']).tolist()
albumUriList = []
@MartinWeiss12
MartinWeiss12 / spotify-wrapped.py
Last active December 11, 2023 22:01
Most Consecutive Streams
mpi = 0
max_count = 0
unique_uri_list = []
for i in range(len(uri_list) - 1):
if uri_list[i] == uri_list[i+1]:
count = count + 1
if count > max_count:
max_count = count
mpi = i
unique_uri_list.append(uri_list[i])