Skip to content

Instantly share code, notes, and snippets.

image_width, image_height = 600, 450
data_transforms = {
'train': transforms.Compose([
transforms.Resize((image_width, image_height)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
]),
'test': transforms.Compose([
import torch
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
import cv2
import matplotlib.pyplot as plt
import matplotlib.cm as cm
@MartinWeiss12
MartinWeiss12 / spotify-wrapped.py
Last active December 12, 2023 15:02
Get Spotify API Access Token
# your client id
client_id = ''
# your client secret
client_secret = ''
token_url = 'https://accounts.spotify.com/api/token'
token_data = {'grant_type': 'client_credentials'}
token_response = requests.post(token_url, auth=(client_id, client_secret), data=token_data)
access_token = token_response.json()['access_token']
headers = {'Authorization': f'Bearer {access_token}'}
@MartinWeiss12
MartinWeiss12 / spotify-grid.py
Last active December 12, 2023 06:26
Make Grids
album_grid = make_grid(album_images, 'Album')
artist_grid = make_grid(artist_images, 'Artist')
@MartinWeiss12
MartinWeiss12 / spotify-grid.py
Last active December 12, 2023 03:37
Download Images
def download_images(folder, type):
top_49 = folder[f'{type} Image URL'][:49]
folder_path = os.path.abspath(f'{type}-Images')
for i, url in enumerate(top_49):
with open(os.path.join(folder_path, f'{type}-{i+1}.png'), 'wb') as file:
file.write(requests.get(url).content)
download_images(top_albums, 'Album')
download_images(top_artists, 'Artist')
@MartinWeiss12
MartinWeiss12 / spotify-grid.py
Last active December 12, 2023 03:42
Import Files
import os
import requests
import pandas as pd
from PIL import Image
# path for the excel file for your top albums
top_albums = pd.read_excel('')
# path for the excel file for your top artists
top_artists = pd.read_excel('')
# path for an empty folder named 'Album-Images' where the album images will be saved to
@MartinWeiss12
MartinWeiss12 / spotify-wrapped.py
Created December 11, 2023 19:54
Map and Merge DataFrames
track_artist_album_df['Artist Image URL'] = track_artist_album_df['Artist URI'].map(unique_artist_image_url_dict)
merged_track_artist_album_url_df = pd.merge(cleaned_df, track_artist_album_df, on='Track URI', how='left')
@MartinWeiss12
MartinWeiss12 / spotify-wrapped.py
Last active December 11, 2023 22:04
Get Artist Image URL
artist_uris = track_artist_album_df['Artist URI']
unique_artist_uris = list(set(artist_uris))
n_unique_artist_sublists = len(unique_artist_uris) // 50 + (len(unique_artist_uris) % 50 > 0)
unique_artist_sublists = [unique_artist_uris[i * 50 : (i + 1) * 50] for i in range(n_unique_artist_sublists)]
unique_artist_image_url_dict = {}
start_time = time.time()
for artist_list in unique_artist_sublists:
params = {'ids': ','.join(artist_list)}
response = requests.get('https://api.spotify.com/v1/artists?', headers=headers, params=params)
track_artist_df['Duplicate URI'] = track_artist_df['URI']
groups = track_artist_df.groupby(['Track', 'Artist'])
for group_name, group_df in groups:
if len(group_df) > 1:
unique_uris = group_df['URI'].unique()
track_artist_df.loc[group_df.index, 'Duplicate URI'] = unique_uris[0]
@MartinWeiss12
MartinWeiss12 / spotify-wrapped.py
Last active December 11, 2023 19:44
track_artist DataFrame
cleaned_df = pd.DataFrame(list(zip(
filtered_data['master_metadata_track_name'],
filtered_data['master_metadata_album_album_name'],
filtered_data['master_metadata_album_artist_name'],
filtered_data['spotify_track_uri'])),
columns=['Track', 'Album', 'Artist', 'Track URI']
)
cleaned_df = (
cleaned_df[~cleaned_df[['Track', 'Album', 'Artist', 'Track URI']]