|
@@ -46,260 +46,131 @@
|
|
|
This Year <b>{{counts.year}}</b> | All Time <b>{{counts.alltime}}</b></p>
|
|
|
</div>
|
|
|
<div class="row">
|
|
|
- <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="#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>
|
|
|
- <li class="nav-item" role="presentation">
|
|
|
- <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#tracks-month"
|
|
|
- type="button" role="tab" aria-controls="profile" aria-selected="false">Monthly
|
|
|
- Tracks</button>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
-
|
|
|
- <div class="tab-content" id="myTabContent">
|
|
|
- <div class="tab-pane fade show active" id="artists-week" role="tabpanel"
|
|
|
- aria-labelledby="artists-week-tab">
|
|
|
- <h2>Top artists this week</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_weekly_artists %}
|
|
|
- <tr>
|
|
|
- <td>{{artist.num_scrobbles}}</td>
|
|
|
- <td>{{artist.name}}</td>
|
|
|
- </tr>
|
|
|
- {% endfor %}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="tab-pane fade show" id="tracks-week" role="tabpanel" aria-labelledby="tracks-week-tab">
|
|
|
- <h2>Top tracks this week</h2>
|
|
|
- <div class="table-responsive">
|
|
|
- <table class="table table-striped table-sm">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th scope="col">#</th>
|
|
|
- <th scope="col">Track</th>
|
|
|
- <th scope="col">Artist</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {% for track in top_weekly_tracks %}
|
|
|
- <tr>
|
|
|
- <td>{{track.num_scrobbles}}</td>
|
|
|
- <td>{{track.title}}</td>
|
|
|
- <td>{{track.artist.name}}</td>
|
|
|
- </tr>
|
|
|
- {% endfor %}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
-
|
|
|
- <div class="tab-pane fade show" id="tracks-month" role="tabpanel"
|
|
|
- aria-labelledby="tracks-month-tab">
|
|
|
- <h2>Top tracks this month</h2>
|
|
|
- <div class="table-responsive">
|
|
|
- <table class="table table-striped table-sm">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th scope="col">#</th>
|
|
|
- <th scope="col">Track</th>
|
|
|
- <th scope="col">Artist</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {% for track in top_monthly_tracks %}
|
|
|
- <tr>
|
|
|
- <td>{{track.num_scrobbles}}</td>
|
|
|
- <td>{{track.title}}</td>
|
|
|
- <td>{{track.artist.name}}</td>
|
|
|
- </tr>
|
|
|
- {% endfor %}
|
|
|
- </tbody>
|
|
|
- </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>
|
|
|
+ <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">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">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">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>
|
|
|
+
|
|
|
+ <div class="tab-content" id="myTabContent2">
|
|
|
+ <div class="tab-pane fade show active" id="latest-listened" role="tabpanel"
|
|
|
+ aria-labelledby="latest-listened-tab">
|
|
|
+ <h2>Latest listened</h2>
|
|
|
+ <div class="table-responsive">
|
|
|
+ <table class="table table-striped table-sm">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th scope="col">Time</th>
|
|
|
+ <th scope="col">Album</th>
|
|
|
+ <th scope="col">Track</th>
|
|
|
+ <th scope="col">Artist</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ {% for scrobble in object_list %}
|
|
|
+ <tr>
|
|
|
+ <td>{{scrobble.timestamp|naturaltime}}</td>
|
|
|
+ {% if scrobble.track.album.cover_image %}
|
|
|
+ <td><img src="{{scrobble.track.album.cover_image.url}}" width=25 height=25
|
|
|
+ style="border:1px solid black;" /></td>
|
|
|
+ {% else %}
|
|
|
+ <td>{{scrobble.track.album.name}}</td>
|
|
|
+ {% endif %}
|
|
|
+ <td>{{scrobble.track.title}}</td>
|
|
|
+ <td>{{scrobble.track.artist.name}}</td>
|
|
|
+ </tr>
|
|
|
+ {% endfor %}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
</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">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">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">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>
|
|
|
-
|
|
|
- <div class="tab-content" id="myTabContent2">
|
|
|
- <div class="tab-pane fade show active" id="latest-listened" role="tabpanel"
|
|
|
- aria-labelledby="latest-listened-tab">
|
|
|
- <h2>Latest listened</h2>
|
|
|
- <div class="table-responsive">
|
|
|
- <table class="table table-striped table-sm">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th scope="col">Time</th>
|
|
|
- <th scope="col">Album</th>
|
|
|
- <th scope="col">Track</th>
|
|
|
- <th scope="col">Artist</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {% for scrobble in object_list %}
|
|
|
- <tr>
|
|
|
- <td>{{scrobble.timestamp|naturaltime}}</td>
|
|
|
- {% if scrobble.track.album.cover_image %}
|
|
|
- <td><img src="{{scrobble.track.album.cover_image.url}}" width=50 height=50
|
|
|
- style="border:1px solid black;" /></td>
|
|
|
- {% else %}
|
|
|
- <td>{{scrobble.track.album.name}}</td>
|
|
|
- {% endif %}
|
|
|
- <td>{{scrobble.track.title}}</td>
|
|
|
- <td>{{scrobble.track.artist.name}}</td>
|
|
|
- </tr>
|
|
|
- {% endfor %}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="tab-pane fade show" id="latest-watched" role="tabpanel"
|
|
|
- aria-labelledby="latest-watched-tab">
|
|
|
- <h2>Latest watched</h2>
|
|
|
- <div class="table-responsive">
|
|
|
- <table class="table table-striped table-sm">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th scope="col">Time</th>
|
|
|
- <th scope="col">Title</th>
|
|
|
- <th scope="col">Series</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {% for scrobble in video_scrobble_list %}
|
|
|
- <tr>
|
|
|
- <td>{{scrobble.timestamp|naturaltime}}</td>
|
|
|
- <td>{% if scrobble.video.tv_series %}S{{scrobble.video.season_number}}E{{scrobble.video.episode_number}} -{% endif %} {{scrobble.video.title}}</td>
|
|
|
- <td>{% if scrobble.video.tv_series %}{{scrobble.video.tv_series}}{% endif %}
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- {% endfor %}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
+ <div class="tab-pane fade show" id="latest-watched" role="tabpanel"
|
|
|
+ aria-labelledby="latest-watched-tab">
|
|
|
+ <h2>Latest watched</h2>
|
|
|
+ <div class="table-responsive">
|
|
|
+ <table class="table table-striped table-sm">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th scope="col">Time</th>
|
|
|
+ <th scope="col">Title</th>
|
|
|
+ <th scope="col">Series</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ {% for scrobble in video_scrobble_list %}
|
|
|
+ <tr>
|
|
|
+ <td>{{scrobble.timestamp|naturaltime}}</td>
|
|
|
+ <td>{% if scrobble.video.tv_series%}S{{scrobble.video.season_number}}E{{scrobble.video.episode_number}} -{%endif %} {{scrobble.video.title}}</td>
|
|
|
+ <td>{% if scrobble.video.tv_series %}{{scrobble.video.tv_series}}{% endif %}
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ {% endfor %}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
</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 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">
|
|
|
- <table class="table table-striped table-sm">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th scope="col">Date</th>
|
|
|
- <th scope="col">Title</th>
|
|
|
- <th scope="col">Podcast</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {% for scrobble in podcast_scrobble_list %}
|
|
|
- <tr>
|
|
|
- <td>{{scrobble.timestamp|naturaltime}}</td>
|
|
|
- <td>{{scrobble.podcast_episode.title}}</td>
|
|
|
- <td>{{scrobble.podcast_episode.podcast}}</td>
|
|
|
- </tr>
|
|
|
- {% endfor %}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </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">
|
|
|
+ <table class="table table-striped table-sm">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th scope="col">Date</th>
|
|
|
+ <th scope="col">Title</th>
|
|
|
+ <th scope="col">Podcast</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ {% for scrobble in podcast_scrobble_list %}
|
|
|
+ <tr>
|
|
|
+ <td>{{scrobble.timestamp|naturaltime}}</td>
|
|
|
+ <td>{{scrobble.podcast_episode.title}}</td>
|
|
|
+ <td>{{scrobble.podcast_episode.podcast}}</td>
|
|
|
+ </tr>
|
|
|
+ {% endfor %}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
</div>
|
|
|
{% endif %}
|