Add monthly tracks to homepage
This commit is contained in:
@ -63,10 +63,13 @@ class RecentScrobbleList(ListView):
|
|||||||
)
|
)
|
||||||
data['video_scrobble_list'] = Scrobble.objects.filter(
|
data['video_scrobble_list'] = Scrobble.objects.filter(
|
||||||
video__isnull=False, played_to_completion=True
|
video__isnull=False, played_to_completion=True
|
||||||
).order_by('-timestamp')[:10]
|
).order_by('-timestamp')[:15]
|
||||||
data['podcast_scrobble_list'] = Scrobble.objects.filter(
|
data['podcast_scrobble_list'] = Scrobble.objects.filter(
|
||||||
podcast_episode__isnull=False, played_to_completion=True
|
podcast_episode__isnull=False, played_to_completion=True
|
||||||
).order_by('-timestamp')[:10]
|
).order_by('-timestamp')[:15]
|
||||||
|
data['sport_scrobble_list'] = Scrobble.objects.filter(
|
||||||
|
sport_event__isnull=False, played_to_completion=True
|
||||||
|
).order_by('-timestamp')[:15]
|
||||||
data['top_daily_tracks'] = top_tracks()
|
data['top_daily_tracks'] = top_tracks()
|
||||||
data['top_weekly_tracks'] = top_tracks(filter='week')
|
data['top_weekly_tracks'] = top_tracks(filter='week')
|
||||||
data['top_monthly_tracks'] = top_tracks(filter='month')
|
data['top_monthly_tracks'] = top_tracks(filter='month')
|
||||||
@ -86,17 +89,28 @@ class RecentScrobbleList(ListView):
|
|||||||
).order_by('-timestamp')[:15]
|
).order_by('-timestamp')[:15]
|
||||||
|
|
||||||
|
|
||||||
class ManualImdbScrobbleView(FormView):
|
class ManualScrobbleView(FormView):
|
||||||
form_class = ImdbScrobbleForm
|
form_class = ScrobbleForm
|
||||||
template_name = 'scrobbles/manual_form.html'
|
template_name = 'scrobbles/manual_form.html'
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
|
||||||
# look for video via IMDB id
|
item_id = form.cleaned_data.get('itme_id')
|
||||||
data_dict = lookup_video_from_imdb(form.cleaned_data.get('imdb_id'))
|
data_dict = None
|
||||||
|
if 'tt' in item_id:
|
||||||
|
data_dict = lookup_video_from_imdb(
|
||||||
|
form.cleaned_data.get('item_id')
|
||||||
|
)
|
||||||
|
if data_dict:
|
||||||
manual_scrobble_video(data_dict, self.request.user.id)
|
manual_scrobble_video(data_dict, self.request.user.id)
|
||||||
|
|
||||||
|
# if not data_dict:
|
||||||
|
# data_dict = lookup_event_from_thesportsdb(
|
||||||
|
# form.cleaned_data.get('item_id')
|
||||||
|
# )
|
||||||
|
# if data_dict:
|
||||||
|
# manual_scrobble_event(data_dict, self.request.user.id)
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse("home"))
|
return HttpResponseRedirect(reverse("home"))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -203,6 +203,7 @@
|
|||||||
{% if scrobble.track %}<em>{{scrobble.track.artist}}</em><br/>{% endif %}
|
{% if scrobble.track %}<em>{{scrobble.track.artist}}</em><br/>{% endif %}
|
||||||
{% if scrobble.podcast_episode%}<em>{{scrobble.podcast_episode.podcast}}</em><br/>{% endif %}
|
{% if scrobble.podcast_episode%}<em>{{scrobble.podcast_episode.podcast}}</em><br/>{% endif %}
|
||||||
{% if scrobble.video.tv_series %}<em>{{scrobble.video.tv_series }}</em><br/>{% endif %}
|
{% if scrobble.video.tv_series %}<em>{{scrobble.video.tv_series }}</em><br/>{% endif %}
|
||||||
|
{% if scrobble.sport_event %}<em>{{scrobble.sport_event.league.abbreviation}}</em><br/>{% endif %}
|
||||||
<small>{{scrobble.timestamp|naturaltime}}<br/>
|
<small>{{scrobble.timestamp|naturaltime}}<br/>
|
||||||
from {{scrobble.source}}</small>
|
from {{scrobble.source}}</small>
|
||||||
<div class="progress-bar" style="margin-right:5px;">
|
<div class="progress-bar" style="margin-right:5px;">
|
||||||
|
|||||||
@ -32,6 +32,9 @@
|
|||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#artists-week" type="button" role="tab" aria-controls="home" aria-selected="true">Weekly Artists</button>
|
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#artists-week" type="button" role="tab" aria-controls="home" aria-selected="true">Weekly Artists</button>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" id="artist-month-tab" data-bs-toggle="tab" data-bs-target="#artists-month" type="button" role="tab" aria-controls="home" aria-selected="true">Monthly Artists</button>
|
||||||
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#tracks-week" type="button" role="tab" aria-controls="profile" aria-selected="false">Weekly Tracks</button>
|
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#tracks-week" type="button" role="tab" aria-controls="profile" aria-selected="false">Weekly Tracks</button>
|
||||||
</li>
|
</li>
|
||||||
@ -83,18 +86,44 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="tab-pane fade show " id="artists-month" role="tabpanel" aria-labelledby="artists-month-tab">
|
||||||
|
<h2>Top artists this month</h2>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-striped table-sm">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">#</th>
|
||||||
|
<th scope="col">Artist</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for artist in top_monthly_artists %}
|
||||||
|
<tr>
|
||||||
|
<td>{{artist.num_scrobbles}}</td>
|
||||||
|
<td>{{artist.name}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md">
|
<div class="col-md">
|
||||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#latest-listened" type="button" role="tab" aria-controls="home" aria-selected="true">Latest Listened</button>
|
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#latest-listened" type="button" role="tab" aria-controls="home" aria-selected="true">Tracks</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#latest-watched" type="button" role="tab" aria-controls="profile" aria-selected="false">Latest Watched</button>
|
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#latest-watched" type="button" role="tab" aria-controls="profile" aria-selected="false">Videos</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#latest-podcasted" type="button" role="tab" aria-controls="profile" aria-selected="false">Latest Podcasted</button>
|
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#latest-podcasted" type="button" role="tab" aria-controls="profile" aria-selected="false">Podcasts</button>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#latest-sports" type="button" role="tab" aria-controls="profile" aria-selected="false">Sports</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -147,6 +176,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="tab-pane fade show" id="latest-sports" role="tabpanel" aria-labelledby="latest-sports-tab">
|
||||||
|
<h2>Latest Sports</h2>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-striped table-sm">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Date</th>
|
||||||
|
<th scope="col">Title</th>
|
||||||
|
<th scope="col">League</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for scrobble in sport_scrobble_list %}
|
||||||
|
<tr>
|
||||||
|
<td>{{scrobble.timestamp|naturaltime}}</td>
|
||||||
|
<td>{{scrobble.sport_event.title}}</td>
|
||||||
|
<td>{{scrobble.sport_event.league.abbreviation}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane fade show" id="latest-podcasted" role="tabpanel" aria-labelledby="latest-podcasted-tab">
|
<div class="tab-pane fade show" id="latest-podcasted" role="tabpanel" aria-labelledby="latest-podcasted-tab">
|
||||||
<h2>Latest Podcasted</h2>
|
<h2>Latest Podcasted</h2>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
@ -170,6 +223,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user