feat: add Jellyfin link button filter and integrate into playlist info template

This commit is contained in:
Kamil
2024-12-18 09:22:34 +00:00
parent 917ec9542f
commit 580906dc78
2 changed files with 15 additions and 3 deletions

View File

@@ -98,6 +98,17 @@ def jellyfin_link(jellyfin_id: str) -> Markup:
link = f"{jellyfin_server_url}/web/#/details?id={jellyfin_id}" link = f"{jellyfin_server_url}/web/#/details?id={jellyfin_id}"
return Markup(f'<a href="{link}" target="_blank">{jellyfin_id}</a>') return Markup(f'<a href="{link}" target="_blank">{jellyfin_id}</a>')
@template_filter('jellyfin_link_button')
def jellyfin_link_btn(jellyfin_id: str) -> Markup:
jellyfin_server_url = app.config.get('JELLYFIN_SERVER_URL')
if not jellyfin_server_url:
return Markup(f"<span style='color: red;'>JELLYFIN_SERVER_URL not configured</span>")
link = f"{jellyfin_server_url}/web/#/details?id={jellyfin_id}"
return Markup(f'<a href="{link}" class="btn btn-primary mt-2" target="_blank">Open in Jellyfin</a>')
# A template filter for displaying a datetime in a human-readable format # A template filter for displaying a datetime in a human-readable format
@template_filter('human_datetime') @template_filter('human_datetime')
def human_datetime(dt) -> str: def human_datetime(dt) -> str:

View File

@@ -9,8 +9,9 @@
<p>{{ item.track_count }} songs, {{ total_duration }}</p> <p>{{ item.track_count }} songs, {{ total_duration }}</p>
<p>Last Updated: {{ item.last_updated | human_datetime}} | Last Change: {{ item.last_changed | human_datetime}}</p> <p>Last Updated: {{ item.last_updated | human_datetime}} | Last Change: {{ item.last_changed | human_datetime}}</p>
{% include 'partials/_add_remove_button.html' %} {% include 'partials/_add_remove_button.html' %}
{% if session['is_admin'] and item.jellyfin_id %}
<p> <p>
{{item.jellyfin_id | jellyfin_link_button}}
{% if session['is_admin'] and item.jellyfin_id %}
<button id="refresh-playlist-btn" class="btn btn-primary mt-2">Refresh Playlist in Jellyfin</button> <button id="refresh-playlist-btn" class="btn btn-primary mt-2">Refresh Playlist in Jellyfin</button>
<script> <script>
document.getElementById('refresh-playlist-btn').addEventListener('click', function() { document.getElementById('refresh-playlist-btn').addEventListener('click', function() {
@@ -29,8 +30,8 @@
}); });
}); });
</script> </script>
</p> {% endif %}
{% endif %} </p>
</div> </div>
</div> </div>