diff --git a/api/models.py b/api/models.py index 4573f94..a822029 100644 --- a/api/models.py +++ b/api/models.py @@ -86,3 +86,23 @@ class AudioFeatures(models.Model): return super(AudioFeatures, self).__str__() # }}} AudioFeatures # + +# History {{{ # + +class History(models.Model): + + class Meta: + verbose_name = "History" + verbose_name_plural = "History" + unique_together = (("user", "time"),) + + history_id = models.AutoField(primary_key=True) + user = models.ForeignKey(User, on_delete=models.CASCADE) + time = models.DateTimeField() + track = models.ForeignKey(Track, on_delete=models.CASCADE) + + def __str__(self): + return (self.user, self.time, self.track) + +# }}} # + diff --git a/api/views.py b/api/views.py index bdcc248..eb32029 100644 --- a/api/views.py +++ b/api/views.py @@ -15,6 +15,7 @@ from .utils import * from .models import * from login.models import User from login.utils import get_user_context +from dateutil.parser import parse # }}} imports # @@ -168,13 +169,18 @@ def parse_history(request, user_secret): # library track_obj, track_created = save_track_obj(track_dict['track'], track_artists, None) + history_obj, history_created = History.objects.get_or_create( + user=user_obj, + time=parse(track_dict['played_at']), + track=track_obj,) if console_logging: tracks_processed += 1 - print("Added track #{}: {} - {}".format( + print("Added track #{} for user {}: {} - {}".format( tracks_processed, - track_obj.artists.first(), - track_obj.name, + history_obj.user, + history_obj.time, + history_obj.track, )) if len(artist_genre_queue) > 0: diff --git a/requirements.txt b/requirements.txt index 59c9dc6..04ea69f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,3 +14,4 @@ requests==2.18.4 six==1.11.0 urllib3==1.22 wrapt==1.10.11 +python-dateutil==2.7.5