Browse Source

Clean up display of last scrobbles

Colin Powell 2 năm trước cách đây
mục cha
commit
f98fe4635c

+ 12 - 0
vrobbler/apps/music/models.py

@@ -19,6 +19,10 @@ class Album(TimeStampedModel):
     def __str__(self):
         return self.name
 
+    @property
+    def mb_link(self):
+        return f"https://musicbrainz.org/release/{self.musicbrainz_id}"
+
 
 class Artist(TimeStampedModel):
     name = models.CharField(max_length=255)
@@ -27,6 +31,10 @@ class Artist(TimeStampedModel):
     def __str__(self):
         return self.name
 
+    @property
+    def mb_link(self):
+        return f"https://musicbrainz.org/artist/{self.musicbrainz_id}"
+
 
 class Track(TimeStampedModel):
     title = models.CharField(max_length=255, **BNULL)
@@ -39,6 +47,10 @@ class Track(TimeStampedModel):
     def __str__(self):
         return f"{self.title} by {self.artist}"
 
+    @property
+    def mb_link(self):
+        return f"https://musicbrainz.org/recording/{self.musicbrainz_id}"
+
     @classmethod
     def find_or_create(
         cls, artist_dict: Dict, album_dict: Dict, track_dict: Dict

+ 8 - 2
vrobbler/apps/videos/models.py

@@ -16,6 +16,9 @@ class Series(TimeStampedModel):
     def __str__(self):
         return self.name
 
+    def imdb_link(self):
+        return f"https://www.imdb.com/title/{self.imdb_id}"
+
     class Meta:
         verbose_name_plural = "series"
 
@@ -54,6 +57,8 @@ class Video(TimeStampedModel):
             return f"{self.tv_series} - Season {self.season_number}, Episode {self.episode_number}"
         return self.title
 
+    def imdb_link(self):
+        return f"https://www.imdb.com/title/{self.imdb_id}"
 
     @classmethod
     def find_or_create(cls, data_dict: Dict) -> "Video":
@@ -75,7 +80,9 @@ class Video(TimeStampedModel):
 
         if data_dict.get("ItemType", "") == "Episode":
             series_name = data_dict.get("SeriesName", "")
-            series, series_created = Series.objects.get_or_create(name=series_name)
+            series, series_created = Series.objects.get_or_create(
+                name=series_name
+            )
             if series_created:
                 logger.debug(f"Created new series {series}")
             else:
@@ -87,7 +94,6 @@ class Video(TimeStampedModel):
             video_dict["episode_number"] = data_dict.get("EpisodeNumber", "")
             video_dict["season_number"] = data_dict.get("SeasonNumber", "")
 
-
         video, created = cls.objects.get_or_create(**video_dict)
         if created:
             logger.debug(f"Created new video: {video}")

+ 1 - 0
vrobbler/settings.py

@@ -79,6 +79,7 @@ INSTALLED_APPS = [
     "django.contrib.messages",
     "django.contrib.staticfiles",
     "django.contrib.sites",
+    "django.contrib.humanize",
     "django_filters",
     "django_extensions",
     'rest_framework.authtoken',

+ 8 - 7
vrobbler/templates/scrobbles/scrobble_list.html

@@ -1,5 +1,7 @@
 {% extends "base.html" %}
 
+{% load humanize %}
+
 {% block title %}{% endblock %}
 
 {% block content %}
@@ -10,8 +12,8 @@
             <dl class="latest-scrobble">
                 <dt>{{scrobble.video.title}} - {{scrobble.video}}</dt>
                 <dd>
-                    {{scrobble.timestamp|date:"D, M j Y"}} |
-                    <a href="https://www.imdb.com/title/{{scrobble.video.imdb_id}}">IMDB</a>
+                    Started {{scrobble.created|naturaltime}} from {{scrobble.source}}
+
                     <div class="progress-bar">
                         <span class="progress-bar-fill" style="width: {{scrobble.percent_played}}%;"></span>
                     </div>
@@ -22,8 +24,7 @@
             <dl class="latest-scrobble">
                 <dt>{{scrobble.track.title}} by {{scrobble.track.artist}} from {{scrobble.track.album}}</dt>
                 <dd>
-                    {{scrobble.timestamp|date:"D, M j Y"}} |
-                    <a href="https://www.imdb.com/title/{{scrobble.track.musicbrainz_id}}">MusicBrainz</a>
+                    Started {{scrobble.created|naturaltime}} from {{scrobble.source}}
                     <div class="progress-bar">
                         <span class="progress-bar-fill" style="width: {{scrobble.percent_played}}%;"></span>
                     </div>
@@ -37,12 +38,12 @@
     <ul>
         {% for scrobble in object_list %}
         <li>
-            {{scrobble.timestamp|date:"D, M j Y"}}:
+            {{scrobble.timestamp|naturaltime}}:
             {% if scrobble.video %}
-            📼 <a href="https://www.imdb.com/title/{{scrobble.video.imdb_id}}">{{scrobble.video}}{% if scrobble.video.video_type == 'E' %} - {{scrobble.video.title}}{% endif %}</a></li>
+            🎥 watched <a href="{{scrobble.video.imdb_link}}">{{scrobble.video}}{% if scrobble.video.video_type == 'E' %} - {{scrobble.video.title}}{% endif %}</a></li>
             {% endif %}
             {% if scrobble.track %}
-            🎶 <a href="https://musicbrainz.org/recording/{{scrobble.track.album.musicbrainz_id}}">{{scrobble.track}} by {{scrobble.track.artist}}</a></li>
+            🎶 listened to <a href="{{scrobble.track.mb_link}}">{{scrobble.track.title}}</a> by <a href="{{scrobble.track.artist.mb_link}}">{{scrobble.track.artist}}</a></li>
             {% endif %}
         {% endfor %}
     </ul>