""" This script takes all the songs we have and use the lyric to create a list of 8 emotions we then use to replace the lyric itself. This is needed to properly match user's emotions to the songs. """ from dotenv import load_dotenv load_dotenv() import json from collections import defaultdict from pathlib import Path from langchain.chains import LLMChain from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate prompt = PromptTemplate( input_variables=["song"], template=Path("prompts/summary_with_emotions.prompt").read_text(), ) llm = ChatOpenAI(temperature=0.7) chain = LLMChain(llm=llm, prompt=prompt) with open("data/lyrics_with_spotify_url.json", "r") as f: data = json.load(f) new_data = defaultdict(list) for movie, songs in data.items(): for song in songs: print(f"{song['name']}") emotions = chain.run(song=song["text"]) new_data[movie].append( {"name": song["name"], "text": emotions, "embed_url": song["embed_url"]} ) with open("data/emotions_with_spotify_url.json", "w") as f: json.dump(new_data, f)