Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c3e567573 | |||
| 2775851474 | |||
| 654a64e82d | |||
| 7dd7f369d8 | |||
| fb6110c71d |
@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "vrobbler"
|
||||
version = "0.11.4"
|
||||
version = "0.11.6"
|
||||
description = ""
|
||||
authors = ["Colin Powell <colin@unbl.ink>"]
|
||||
|
||||
|
||||
@ -129,7 +129,9 @@ class Album(TimeStampedModel):
|
||||
return self.artists.first()
|
||||
|
||||
def scrape_theaudiodb(self) -> None:
|
||||
artist = self.primary_artist.name
|
||||
artist = "Various Artists"
|
||||
if self.primary_artist:
|
||||
artist = self.primary_artist.name
|
||||
album_data = lookup_album_from_tadb(self.name, artist)
|
||||
if not album_data.get('theaudiodb_id'):
|
||||
logger.info(f"No data for {self} found in TheAudioDB")
|
||||
|
||||
@ -58,13 +58,16 @@ def lookup_album_from_tadb(name: str, artist: str) -> dict:
|
||||
album_info['theaudiodb_mood'] = album.get('strMood')
|
||||
album_info['theaudiodb_speed'] = album.get('strSpeed')
|
||||
album_info['theaudiodb_theme'] = album.get('strTheme')
|
||||
album_info['theaudiodb_year_released'] = album.get('intYearReleased')
|
||||
album_info['allmusic_id'] = album.get('strAllMusicID')
|
||||
album_info['wikipedia_slug'] = album.get('strWikipediaID')
|
||||
album_info['discogs_id'] = album.get('strDiscogsID')
|
||||
album_info['wikidata_id'] = album.get('strWikidataID')
|
||||
album_info['rateyourmusic_id'] = album.get('strRateYourMusicID')
|
||||
|
||||
if album.get('intYearReleased'):
|
||||
album_info['theaudiodb_year_released'] = float(
|
||||
album.get('intYearReleased')
|
||||
)
|
||||
if album.get('intScore'):
|
||||
album_info['theaudiodb_score'] = float(album.get('intScore'))
|
||||
if album.get('intScoreVotes'):
|
||||
|
||||
18
vrobbler/apps/sports/urls.py
Normal file
18
vrobbler/apps/sports/urls.py
Normal file
@ -0,0 +1,18 @@
|
||||
from django.urls import path
|
||||
from sports import views
|
||||
|
||||
app_name = 'sports'
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path(
|
||||
'sport-events/',
|
||||
views.SportEventListView.as_view(),
|
||||
name='event_list',
|
||||
),
|
||||
path(
|
||||
'sport-events/<slug:slug>/',
|
||||
views.SportEventDetailView.as_view(),
|
||||
name='event_detail',
|
||||
),
|
||||
]
|
||||
12
vrobbler/apps/sports/views.py
Normal file
12
vrobbler/apps/sports/views.py
Normal file
@ -0,0 +1,12 @@
|
||||
from django.views import generic
|
||||
from sports.models import SportEvent
|
||||
|
||||
|
||||
class SportEventListView(generic.ListView):
|
||||
model = SportEvent
|
||||
paginate_by = 50
|
||||
|
||||
|
||||
class SportEventDetailView(generic.DetailView):
|
||||
model = SportEvent
|
||||
slug_field = 'uuid'
|
||||
33
vrobbler/templates/sports/sportevent_detail.html
Normal file
33
vrobbler/templates/sports/sportevent_detail.html
Normal file
@ -0,0 +1,33 @@
|
||||
{% extends "base_detail.html" %}
|
||||
|
||||
{% block title %}{{object.title}} - {{object.round.season.league}}{% endblock %}
|
||||
|
||||
{% block details %}
|
||||
|
||||
<div class="row">
|
||||
<h2>{{object.tv_series}}</h2>
|
||||
<div class="col-md">
|
||||
<h3>Last scrobbles</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Date</th>
|
||||
<th scope="col">Season</th>
|
||||
<th scope="col">League</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for scrobble in object.scrobble_set.all %}
|
||||
<tr>
|
||||
<td>{{scrobble.timestamp}}</td>
|
||||
<td>{{scrobble.media_obj.round.season.name}}</td>
|
||||
<td>{{scrobble.media_obj.round.season.league}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
36
vrobbler/templates/sports/sportevent_list.html
Normal file
36
vrobbler/templates/sports/sportevent_list.html
Normal file
@ -0,0 +1,36 @@
|
||||
{% extends "base_list.html" %}
|
||||
|
||||
{% block title %}Sport events{% endblock %}
|
||||
|
||||
{% block lists %}
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Title</th>
|
||||
<th scope="col">Date</th>
|
||||
<th scope="col">Round</th>
|
||||
<th scope="col">League</th>
|
||||
<th scope="col">Scrobbles</th>
|
||||
<th scope="col">All time</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for obj in object_list %}
|
||||
<tr>
|
||||
<td><a href="{{obj.get_absolute_url}}">{{obj.title}}</a></td>
|
||||
<td>{{obj.start}}</td>
|
||||
<td>{{obj.round.name}}</td>
|
||||
<td>{{obj.round.league}}</td>
|
||||
<td>{{obj.scrobble_set.count}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@ -1,11 +1,9 @@
|
||||
{% extends "base_detail.html" %}
|
||||
|
||||
{% block title %}{{object.name}}{% endblock %}
|
||||
{% block title %}{{object.title}}{% if object.tv_series %} - {{object.tv_series}}{% endif %}{% endblock %}
|
||||
|
||||
{% block details %}
|
||||
|
||||
<div class="row">
|
||||
<h2>{{object.tv_series}}</h2>
|
||||
<div class="col-md">
|
||||
<h3>Last scrobbles</h3>
|
||||
<div class="table-responsive">
|
||||
@ -14,9 +12,11 @@
|
||||
<tr>
|
||||
<th scope="col">Date</th>
|
||||
<th scope="col">Title</th>
|
||||
{% if object.tv_series %}
|
||||
<th scope="col">Series</th>
|
||||
<th scope="col">Season</th>
|
||||
<th scope="col">Episode</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -24,9 +24,11 @@
|
||||
<tr>
|
||||
<td>{{scrobble.timestamp}}</td>
|
||||
<td>{{scrobble.video.title}}</td>
|
||||
{% if object.tv_series %}
|
||||
<td>{{scrobble.video.tv_series}}</td>
|
||||
<td>{{scrobble.video.season_number}}</td>
|
||||
<td>{{scrobble.video.episode_number}}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@ -34,4 +36,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
@ -5,6 +5,7 @@ from rest_framework import routers
|
||||
import vrobbler.apps.scrobbles.views as scrobbles_views
|
||||
from vrobbler.apps.books.api.views import AuthorViewSet, BookViewSet
|
||||
from vrobbler.apps.music import urls as music_urls
|
||||
from vrobbler.apps.sports import urls as sports_urls
|
||||
from vrobbler.apps.music.api.views import (
|
||||
AlbumViewSet,
|
||||
ArtistViewSet,
|
||||
@ -57,6 +58,7 @@ urlpatterns = [
|
||||
path("accounts/", include("allauth.urls")),
|
||||
path("", include(music_urls, namespace="music")),
|
||||
path("", include(video_urls, namespace="videos")),
|
||||
path("", include(sports_urls, namespace="sports")),
|
||||
path("", include(scrobble_urls, namespace="scrobbles")),
|
||||
path(
|
||||
"", scrobbles_views.RecentScrobbleList.as_view(), name="vrobbler-home"
|
||||
|
||||
Reference in New Issue
Block a user