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) | |