Clean up display of last scrobbles

This commit is contained in:
2023-01-08 14:08:57 -05:00
parent c3b48099bf
commit f98fe4635c
4 changed files with 29 additions and 9 deletions

View File

@ -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

View File

@ -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}")

View File

@ -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',

View File

@ -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>