Kaynağa Gözat

Add monthly tracks to homepage

Colin Powell 2 yıl önce
ebeveyn
işleme
fdfb8a635e

+ 22 - 8
vrobbler/apps/scrobbles/views.py

@@ -63,10 +63,13 @@ class RecentScrobbleList(ListView):
         )
         data['video_scrobble_list'] = Scrobble.objects.filter(
             video__isnull=False, played_to_completion=True
-        ).order_by('-timestamp')[:10]
+        ).order_by('-timestamp')[:15]
         data['podcast_scrobble_list'] = Scrobble.objects.filter(
             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_weekly_tracks'] = top_tracks(filter='week')
         data['top_monthly_tracks'] = top_tracks(filter='month')
@@ -86,16 +89,27 @@ class RecentScrobbleList(ListView):
         ).order_by('-timestamp')[:15]
 
 
-class ManualImdbScrobbleView(FormView):
-    form_class = ImdbScrobbleForm
+class ManualScrobbleView(FormView):
+    form_class = ScrobbleForm
     template_name = 'scrobbles/manual_form.html'
 
     def form_valid(self, form):
 
-        # look for video via IMDB id
-        data_dict = lookup_video_from_imdb(form.cleaned_data.get('imdb_id'))
-
-        manual_scrobble_video(data_dict, self.request.user.id)
+        item_id = form.cleaned_data.get('itme_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)
+
+        # 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"))
 

+ 1 - 0
vrobbler/templates/base.html

@@ -203,6 +203,7 @@
                                 {% if scrobble.track %}<em>{{scrobble.track.artist}}</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.sport_event %}<em>{{scrobble.sport_event.league.abbreviation}}</em><br/>{% endif %}
                                 <small>{{scrobble.timestamp|naturaltime}}<br/>
                                     from {{scrobble.source}}</small>
                                 <div class="progress-bar" style="margin-right:5px;">

+ 57 - 3
vrobbler/templates/scrobbles/scrobble_list.html

@@ -32,6 +32,9 @@
                     <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>
                     </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">
                         <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>
@@ -83,18 +86,44 @@
                             </table>
                         </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 class="col-md">
             <ul class="nav nav-tabs" id="myTab" role="tablist">
                 <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 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 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>
             </ul>
 
@@ -147,6 +176,30 @@
                     </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">
                     <h2>Latest Podcasted</h2>
                     <div class="table-responsive">
@@ -170,6 +223,7 @@
                         </table>
                     </div>
                 </div>
+
             </div>
         </div>
     </div>