Spaces:
Runtime error
Runtime error
""" | |
This script will keep only the songs that are in the Spotify "Disney Hits" playlist | |
""" | |
from dotenv import load_dotenv | |
load_dotenv() | |
import json | |
from collections import defaultdict | |
import spotipy | |
from spotipy.oauth2 import SpotifyClientCredentials | |
name = "Disney hits" | |
spotify = spotipy.Spotify(auth_manager=SpotifyClientCredentials()) | |
results = spotify.search(q="playlist:" + name, type="playlist", limit=5) | |
items = results["playlists"]["items"] | |
uri = "spotify:playlist:37i9dQZF1DX8C9xQcOrE6T" | |
playlist = spotify.playlist(uri) | |
with open("data/lyrics.json", "r") as f: | |
data = json.load(f) | |
spotify_tracks = {} | |
for item in playlist["tracks"]["items"]: | |
track = item["track"] | |
track_name = track["name"].lower().split("-")[0].strip() | |
print(track_name) | |
spotify_tracks[track_name] = { | |
"id": track["id"], | |
"embed_url": f"https://open.spotify.com/embed/track/{track['id']}?utm_source=generator", | |
} | |
# here we add only songs that are in the Disney spotify playlist | |
data_filtered = defaultdict(list) | |
tot = 0 | |
for movie, lyrics in data.items(): | |
for lyric in lyrics: | |
name = lyric["name"].lower() | |
if name in spotify_tracks: | |
data_filtered[movie].append( | |
{**lyric, **{"embed_url": spotify_tracks[name]["embed_url"]}} | |
) | |
tot += 1 | |
print(tot) | |
with open("data/lyrics_with_spotify_url.json", "w") as f: | |
json.dump(data_filtered, f) | |