import streamlit as st import joblib import pandas as pd from sklearn.metrics.pairwise import cosine_similarity tfidf = joblib.load("src/tfidf_vectorizer.pkl") df = pd.read_csv("src/metadata.csv") tfidf_matrix = tfidf.transform(df["combined_features"]) cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix) indices = pd.Series(df.index, index=df["track_name"]).drop_duplicates() def recommend(song_name, n=5): idx = indices[song_name] idx = idx.iloc[0] if hasattr(idx, "iloc") else idx sim_scores = list(enumerate(cosine_sim[idx])) sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)[1:n+1] song_indices = [i[0] for i in sim_scores] return df.loc[song_indices, ["track_name", "track_artist", "playlist_genre"]] st.title("🎵 Spotify Recommendation System") song = st.selectbox("Bir şarkı seçin:", df["track_name"].unique()) if st.button("Öner"): recommendations = recommend(song) st.dataframe(recommendations)