diivien commited on
Commit
a6e9bd9
·
1 Parent(s): 5268c8c

redump final model, edit html and css for gradio

Browse files
Files changed (4) hide show
  1. Model Building.ipynb +4 -4
  2. app.py +27 -10
  3. final_model.pkl +1 -1
  4. requirements.txt +2 -1
Model Building.ipynb CHANGED
@@ -5212,7 +5212,7 @@
5212
  },
5213
  {
5214
  "cell_type": "code",
5215
- "execution_count": 15,
5216
  "id": "a2e122ed",
5217
  "metadata": {},
5218
  "outputs": [
@@ -6316,7 +6316,7 @@
6316
  },
6317
  {
6318
  "cell_type": "code",
6319
- "execution_count": 17,
6320
  "id": "addeaf5e",
6321
  "metadata": {},
6322
  "outputs": [
@@ -6699,7 +6699,7 @@
6699
  },
6700
  {
6701
  "cell_type": "code",
6702
- "execution_count": 18,
6703
  "id": "b88f2d45",
6704
  "metadata": {},
6705
  "outputs": [
@@ -6709,7 +6709,7 @@
6709
  "['final_model.pkl']"
6710
  ]
6711
  },
6712
- "execution_count": 18,
6713
  "metadata": {},
6714
  "output_type": "execute_result"
6715
  }
 
5212
  },
5213
  {
5214
  "cell_type": "code",
5215
+ "execution_count": 19,
5216
  "id": "a2e122ed",
5217
  "metadata": {},
5218
  "outputs": [
 
6316
  },
6317
  {
6318
  "cell_type": "code",
6319
+ "execution_count": 20,
6320
  "id": "addeaf5e",
6321
  "metadata": {},
6322
  "outputs": [
 
6699
  },
6700
  {
6701
  "cell_type": "code",
6702
+ "execution_count": 21,
6703
  "id": "b88f2d45",
6704
  "metadata": {},
6705
  "outputs": [
 
6709
  "['final_model.pkl']"
6710
  ]
6711
  },
6712
+ "execution_count": 21,
6713
  "metadata": {},
6714
  "output_type": "execute_result"
6715
  }
app.py CHANGED
@@ -4,14 +4,15 @@ import joblib
4
  import os
5
  import spotipy
6
  import pylast
 
7
  from spotipy.oauth2 import SpotifyClientCredentials
8
  from Levenshtein import distance
9
 
10
  final_model = joblib.load('final_model.pkl')
11
- print(final_model)
12
  # Set up authentication with the Spotify API
13
  sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id=os.environ['SPOT_API'], client_secret=os.environ['SPOT_SECRET']))
14
  network = pylast.LastFMNetwork(api_key=os.environ['LAST_API'], api_secret=os.environ['LAST_SECRET'])
 
15
  genre_list = ['acoustic', 'afrobeat', 'alt-rock', 'alternative', 'ambient',
16
  'anime', 'black-metal', 'bluegrass', 'blues', 'brazil',
17
  'breakbeat', 'british', 'cantopop', 'chicago-house', 'children',
@@ -39,19 +40,31 @@ genre_list = ['acoustic', 'afrobeat', 'alt-rock', 'alternative', 'ambient',
39
 
40
  def get_track_genre(track_id,artist_name,track_name):
41
  genres = []
42
- track = sp.track(track_id)
43
- artist = sp.artist(track['artists'][0]['external_urls']['spotify'])
44
-
45
- album_id = track['album']['id']
46
-
47
  album = sp.album(album_id)
48
  genres.extend(album['genres'])
49
  genres.extend(artist['genres'])
50
- track = network.get_track(artist_name, track_name)
51
- top_tags = track.get_top_tags(limit =5)
 
 
52
  tags_list = [tag.item.get_name() for tag in top_tags]
53
  genres.extend(tags_list)
 
 
 
 
 
 
 
 
 
 
 
54
  print(genres)
 
55
  return genres
56
 
57
  def find_most_similar_genre(my_genres, artist_genres):
@@ -115,7 +128,11 @@ theme = gr.themes.Monochrome(
115
  # text_size="text_lg",
116
  font=[gr.themes.GoogleFont('Neucha'), 'ui-sans-serif', 'system-ui', 'sans-serif'],
117
  )
118
- with gr.Blocks(theme=theme) as demo:
 
 
 
 
119
  with gr.Row():
120
  image = gr.HTML("<div style='display: flex; align-items: center;'><img src='file=images/cat-jam.gif' alt='My gif' width='200' height='200'>" +
121
  "<div><h1 style='font-size: 60px; line-height: 24px; margin-left: 50px;'>Music Popularity Prediction</h1>" +
@@ -156,7 +173,6 @@ with gr.Blocks(theme=theme) as demo:
156
  search_box.change(fn=update_dropdown, inputs=[search_box,track_ids_var], outputs=[song_dropdown,track_ids_var])
157
 
158
  def update_features(song,track_ids):
159
- print(song)
160
  features = get_song_features(song, track_ids)
161
  return features
162
 
@@ -190,6 +206,7 @@ with gr.Blocks(theme=theme) as demo:
190
 
191
  df = pd.DataFrame(data)
192
  print(df)
 
193
  # Use your trained model to predict popularity based on the input features
194
  if(final_model.predict(df)[0] == 1):
195
  return ("<div style='display: flex; align-items: center;'><img src='file=images/pepe-jam.gif' alt='My gif 3' width='200' height='200'>" +
 
4
  import os
5
  import spotipy
6
  import pylast
7
+ import discogs_client
8
  from spotipy.oauth2 import SpotifyClientCredentials
9
  from Levenshtein import distance
10
 
11
  final_model = joblib.load('final_model.pkl')
 
12
  # Set up authentication with the Spotify API
13
  sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id=os.environ['SPOT_API'], client_secret=os.environ['SPOT_SECRET']))
14
  network = pylast.LastFMNetwork(api_key=os.environ['LAST_API'], api_secret=os.environ['LAST_SECRET'])
15
+ d = discogs_client.Client('app/0.1', user_token=os.environ['DIS_TOKEN'])
16
  genre_list = ['acoustic', 'afrobeat', 'alt-rock', 'alternative', 'ambient',
17
  'anime', 'black-metal', 'bluegrass', 'blues', 'brazil',
18
  'breakbeat', 'british', 'cantopop', 'chicago-house', 'children',
 
40
 
41
  def get_track_genre(track_id,artist_name,track_name):
42
  genres = []
43
+ track_spot = sp.track(track_id)
44
+ artist = sp.artist(track_spot['artists'][0]['external_urls']['spotify'])
45
+ album_id = track_spot['album']['id']
 
 
46
  album = sp.album(album_id)
47
  genres.extend(album['genres'])
48
  genres.extend(artist['genres'])
49
+
50
+
51
+ track_last = network.get_track(artist_name, track_name)
52
+ top_tags = track_last.get_top_tags(limit =5)
53
  tags_list = [tag.item.get_name() for tag in top_tags]
54
  genres.extend(tags_list)
55
+
56
+ # results = d.search(track_name, artist=artist_name, type='release')
57
+ # if results:
58
+ # release = results[0]
59
+ # if release.genres:
60
+ # genres.extend(release.genres)
61
+ # if release.styles:
62
+ # genres.extend(release.styles)
63
+
64
+
65
+
66
  print(genres)
67
+
68
  return genres
69
 
70
  def find_most_similar_genre(my_genres, artist_genres):
 
128
  # text_size="text_lg",
129
  font=[gr.themes.GoogleFont('Neucha'), 'ui-sans-serif', 'system-ui', 'sans-serif'],
130
  )
131
+ with gr.Blocks(theme=theme,css = "@media (max-width: 600px) {" +
132
+ ".gradio-container { flex-direction: column;}" +
133
+ ".gradio-container h1 {font-size: 30px !important ;margin-left: 20px !important; line-height: 30px !important}" +
134
+ ".gradio-container h2 {font-size: 15px !important;margin-left: 20px !important;margin-top: 20px !important;}"+
135
+ ".gradio-container img{width : 100px; height : 100px}}") as demo:
136
  with gr.Row():
137
  image = gr.HTML("<div style='display: flex; align-items: center;'><img src='file=images/cat-jam.gif' alt='My gif' width='200' height='200'>" +
138
  "<div><h1 style='font-size: 60px; line-height: 24px; margin-left: 50px;'>Music Popularity Prediction</h1>" +
 
173
  search_box.change(fn=update_dropdown, inputs=[search_box,track_ids_var], outputs=[song_dropdown,track_ids_var])
174
 
175
  def update_features(song,track_ids):
 
176
  features = get_song_features(song, track_ids)
177
  return features
178
 
 
206
 
207
  df = pd.DataFrame(data)
208
  print(df)
209
+ print(final_model.predict(df))
210
  # Use your trained model to predict popularity based on the input features
211
  if(final_model.predict(df)[0] == 1):
212
  return ("<div style='display: flex; align-items: center;'><img src='file=images/pepe-jam.gif' alt='My gif 3' width='200' height='200'>" +
final_model.pkl CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:1643cf4b328c5addca850ae397d9a5d40ed094394bb5e3e16dfa502c7fb96f18
3
  size 8825585
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8f8f0c12979cb682a77639be924d8e358bf1a936121bcbdf86da5c5f19570e7d
3
  size 8825585
requirements.txt CHANGED
@@ -7,4 +7,5 @@ category_encoders
7
  catboost
8
  scikit-learn
9
  pylast
10
- pandas < 2.0.0
 
 
7
  catboost
8
  scikit-learn
9
  pylast
10
+ pandas < 2.0.0
11
+ python3-discogs-client