| """ |
| 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", |
| } |
|
|
| |
|
|
| 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) |
|
|