Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -106,44 +106,9 @@ def get_songs_from_spotify(playlist_link, songs_df, previews_df):
|
|
106 |
previews_df = pd.concat([previews_df,new_df])
|
107 |
new_df = new_df[["elo_score", "artist", "song_title"]]
|
108 |
songs_df = pd.concat([songs_df,new_df])
|
109 |
-
return songs_df, previews_df
|
110 |
-
|
111 |
-
def get_songs_from_spotify(playlist_link, songs_df, previews_df):
|
112 |
-
if match := re.match(r"https://open.spotify.com/playlist/(.*)\?", playlist_link):
|
113 |
-
playlist_uri = match.groups()[0]
|
114 |
-
else:
|
115 |
-
raise ValueError("Expected format: https://open.spotify.com/playlist/...")
|
116 |
-
|
117 |
-
# Get playlist track information
|
118 |
-
tracks = sp.playlist_tracks(playlist_uri)["items"]
|
119 |
-
|
120 |
-
# For efficiency, collect new rows in a list before converting it to a DataFrame
|
121 |
-
new_rows = []
|
122 |
-
for track in tracks:
|
123 |
-
track_info = {
|
124 |
-
'artist': track['track']['artists'][0]['name'],
|
125 |
-
'song_title': track['track']['name'],
|
126 |
-
'preview_url': track['track']['preview_url'],
|
127 |
-
'elo_score': 1000
|
128 |
-
}
|
129 |
-
new_rows.append(track_info)
|
130 |
-
|
131 |
-
new_df = pd.DataFrame(new_rows)
|
132 |
-
|
133 |
-
# Merge original DataFrames to ensure we don't have duplicates across them
|
134 |
-
consolidated_df = pd.concat([songs_df[['artist', 'song_title']], previews_df[['artist', 'song_title']]]).drop_duplicates()
|
135 |
-
|
136 |
-
# Identify new, unique songs not in the original datasets
|
137 |
-
unique_songs = pd.merge(new_df, consolidated_df, on=['artist', 'song_title'], how='left', indicator=True).query('_merge=="left_only"').drop('_merge', axis=1)
|
138 |
-
|
139 |
-
# Update previews_df if there is a 'preview_url' column in the new unique songs DataFrame
|
140 |
-
if 'preview_url' in unique_songs:
|
141 |
-
previews_df = pd.concat([previews_df, unique_songs])
|
142 |
-
|
143 |
-
# Drop the 'preview_url' for songs_df update
|
144 |
-
unique_songs_simplified = unique_songs.drop(['preview_url'], axis=1, errors='ignore')
|
145 |
-
songs_df = pd.concat([songs_df, unique_songs_simplified])
|
146 |
|
|
|
|
|
147 |
return songs_df, previews_df
|
148 |
|
149 |
def update_scores(winner, loser, k_factor=100):
|
@@ -297,38 +262,11 @@ def import_csv(file, songs_df, previews_df):
|
|
297 |
previews_df = pd.concat([previews_df,new_df])
|
298 |
new_df = new_df[["elo_score", "artist", "song_title"]]
|
299 |
songs_df = pd.concat([songs_df,new_df])
|
300 |
-
return songs_df, previews_df
|
301 |
|
302 |
-
|
303 |
-
|
304 |
-
new_df = pd.read_csv(file)
|
305 |
-
|
306 |
-
# Ensure the input DataFrames have the correct structure, creating them if they don't exist
|
307 |
-
if 'elo_score' not in songs_df.columns or 'artist' not in songs_df.columns or 'song_title' not in songs_df.columns:
|
308 |
-
songs_df = pd.DataFrame(columns=['elo_score', 'artist', 'song_title'])
|
309 |
-
if 'preview_url' not in previews_df.columns:
|
310 |
-
previews_df = pd.DataFrame(columns=["elo_score", "artist", "song_title", "preview_url"])
|
311 |
-
|
312 |
-
# Ensure the new DataFrame has the correct columns
|
313 |
-
if all(column in new_df.columns for column in ["elo_score", "artist", "song_title", "preview_url"]):
|
314 |
-
new_df = new_df[["elo_score", "artist", "song_title", "preview_url"]]
|
315 |
-
else:
|
316 |
-
raise ValueError("New CSV file does not contain required columns.")
|
317 |
-
|
318 |
-
# Merge original DataFrames to ensure we don't have duplicates across them
|
319 |
-
consolidated_df = pd.concat([songs_df[['artist', 'song_title']], previews_df[['artist', 'song_title']]]).drop_duplicates()
|
320 |
-
|
321 |
-
# Identify new, unique songs not in the original datasets
|
322 |
-
unique_songs = pd.merge(new_df, consolidated_df, on=['artist', 'song_title'], how='left', indicator=True).query('_merge=="left_only"').drop('_merge', axis=1)
|
323 |
-
|
324 |
-
# Update previews_df with new unique songs including their preview URLs
|
325 |
-
previews_df = pd.concat([previews_df, unique_songs])
|
326 |
-
|
327 |
-
# Separate the unique songs data without the 'preview_url' for songs_df
|
328 |
-
unique_songs_simplified = unique_songs.drop(['preview_url'], axis=1, errors='ignore')
|
329 |
-
songs_df = pd.concat([songs_df, unique_songs_simplified])
|
330 |
-
|
331 |
return songs_df, previews_df
|
|
|
332 |
|
333 |
# Function to remove a song
|
334 |
def remove_song(artist, song_title, songs_df):
|
|
|
106 |
previews_df = pd.concat([previews_df,new_df])
|
107 |
new_df = new_df[["elo_score", "artist", "song_title"]]
|
108 |
songs_df = pd.concat([songs_df,new_df])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
|
110 |
+
songs_df = songs_df.drop_duplicates(subset=['artist', 'song_title'])
|
111 |
+
previews_df = previews_df.drop_duplicates(subset=['artist', 'song_title'])
|
112 |
return songs_df, previews_df
|
113 |
|
114 |
def update_scores(winner, loser, k_factor=100):
|
|
|
262 |
previews_df = pd.concat([previews_df,new_df])
|
263 |
new_df = new_df[["elo_score", "artist", "song_title"]]
|
264 |
songs_df = pd.concat([songs_df,new_df])
|
|
|
265 |
|
266 |
+
songs_df = songs_df.drop_duplicates(subset=['artist', 'song_title'])
|
267 |
+
previews_df = previews_df.drop_duplicates(subset=['artist', 'song_title'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
return songs_df, previews_df
|
269 |
+
|
270 |
|
271 |
# Function to remove a song
|
272 |
def remove_song(artist, song_title, songs_df):
|