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