Clean up display of last scrobbles
This commit is contained in:
@ -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
|
||||
|
||||
@ -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}")
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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>
|
||||
|
||||
Reference in New Issue
Block a user