Added most common genre for tracks with 1 artist
Still have to find shared genres for songs with multiple artists (see #34).
This commit is contained in:
@@ -76,9 +76,27 @@ def parse_library(headers, tracks, user):
|
||||
# calculates num_songs with offset + songs retrieved
|
||||
offset += limit
|
||||
# pprint.pprint(library_stats)
|
||||
update_track_genres(user)
|
||||
|
||||
# }}} parse_library #
|
||||
|
||||
def update_track_genres(user):
|
||||
"""Updates user's tracks with the most common genre associated with the
|
||||
songs' artist(s).
|
||||
|
||||
:user: User object who's tracks are being updated.
|
||||
|
||||
:returns: None
|
||||
|
||||
"""
|
||||
user_tracks = Track.objects.filter(users__exact=user)
|
||||
for track in user_tracks:
|
||||
track_artists = list(track.artists.all())
|
||||
if len(track_artists) == 1:
|
||||
track.genre = track_artists[0].genres.all().order_by('-num_songs').first()
|
||||
track.save()
|
||||
# print(track_artists, track.genre)
|
||||
|
||||
# save_track_obj {{{ #
|
||||
|
||||
def save_track_obj(track_dict, artists, top_genre, user):
|
||||
@@ -341,6 +359,8 @@ def get_top_genre(headers, top_artist_id):
|
||||
|
||||
# }}} #
|
||||
|
||||
# add_artist_genres {{{ #
|
||||
|
||||
def add_artist_genres(headers, artist_obj):
|
||||
"""Adds genres to artist_obj and increases the count the respective Genre
|
||||
object. Should be called when a new Artist object is created.
|
||||
@@ -362,6 +382,8 @@ def add_artist_genres(headers, artist_obj):
|
||||
artist_obj.genres.add(genre_obj)
|
||||
artist_obj.save()
|
||||
|
||||
# }}} add_artist_genres #
|
||||
|
||||
# process_library_stats {{{ #
|
||||
|
||||
def process_library_stats(library_stats):
|
||||
|
||||
@@ -13,7 +13,7 @@ from datetime import datetime
|
||||
from django.shortcuts import render, redirect
|
||||
from django.http import HttpResponse, HttpResponseBadRequest, JsonResponse
|
||||
from django.db.models import Count, Q
|
||||
from .utils import parse_library, process_library_stats, get_artists_in_genre
|
||||
from .utils import parse_library, process_library_stats, get_artists_in_genre, update_track_genres
|
||||
from .models import User, Track, AudioFeatures, Artist
|
||||
|
||||
# }}} imports #
|
||||
@@ -165,10 +165,12 @@ def test_db(request):
|
||||
"""TODO
|
||||
"""
|
||||
user_id = "polarbier"
|
||||
user_obj = User.objects.get(user_id=user_id)
|
||||
# user_id = "35kxo00qqo9pd1comj6ylxjq7"
|
||||
context = {
|
||||
'user_secret': User.objects.get(user_id=user_id).user_secret,
|
||||
'user_secret': user_obj.user_secret,
|
||||
}
|
||||
update_track_genres(user_obj)
|
||||
return render(request, 'spotifyvis/test_db.html', context)
|
||||
|
||||
# }}} test_db #
|
||||
|
||||
Reference in New Issue
Block a user