9f85908ff3
- Modernized the frontend with HTMX for server-driven UI and Alpine.js for client state. - Refactored anime, player, and recommendation logic into modular routers. - Updated README.md to reflect the latest project state and technologies (v2.4). - Added Plyr.io for an improved streaming experience. - Improved project structure with componentized templates. - Added Playwright and Vitest configuration for frontend testing.
58 lines
2.5 KiB
HTML
58 lines
2.5 KiB
HTML
{% macro series_card(series, in_watchlist=False) %}
|
|
<div class="anime-card" id="series-{{ series.url | hash }}">
|
|
<div class="anime-poster">
|
|
<img src="{{ series.cover_image or 'https://placehold.co/400x600/161625/ff6b6b?text=No+Image' }}"
|
|
alt="{{ series.title }}"
|
|
loading="lazy"
|
|
referrerpolicy="no-referrer"
|
|
onerror="this.src='https://placehold.co/400x600/161625/ff6b6b?text=Image+Error'; this.onerror=null;">
|
|
<div class="anime-overlay">
|
|
<div class="overlay-buttons">
|
|
<button class="btn-circle"
|
|
hx-get="/api/anime/episodes?url={{ series.url | urlencode }}&lang=vf"
|
|
hx-target="#player-container"
|
|
hx-swap="innerHTML"
|
|
title="Play">
|
|
<i class="fas fa-play"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="anime-info">
|
|
<h3 class="anime-title" title="{{ series.title }}">{{ series.title }}</h3>
|
|
<div class="anime-meta-tags">
|
|
<span class="badge">FS7</span>
|
|
</div>
|
|
|
|
<div class="anime-card-buttons">
|
|
<button class="btn-card btn-watch"
|
|
hx-get="/api/anime/episodes?url={{ series.url | urlencode }}&lang=vf"
|
|
hx-target="#player-container"
|
|
hx-swap="innerHTML">
|
|
<i class="fas fa-eye"></i> <span>Regarder</span>
|
|
</button>
|
|
<button class="btn-card btn-download"
|
|
hx-get="/api/anime/episodes?url={{ series.url | urlencode }}&lang=vf"
|
|
hx-target="#player-container"
|
|
hx-swap="innerHTML">
|
|
<i class="fas fa-download"></i> <span>Télécharger</span>
|
|
</button>
|
|
</div>
|
|
|
|
{% if not in_watchlist %}
|
|
<button class="btn-add-watchlist"
|
|
hx-post="/api/watchlist"
|
|
hx-vals='{"anime_url": "{{ series.url }}", "anime_title": "{{ series.title }}", "provider_id": "fs7", "lang": "vf"}'
|
|
hx-swap="none"
|
|
hx-on::after-request="this.innerHTML='<i class=\'fas fa-check\'></i> Suivi'; this.disabled=true; this.classList.add('followed')">
|
|
<i class="fas fa-plus"></i> Watchlist
|
|
</button>
|
|
{% else %}
|
|
<button class="btn-add-watchlist followed" disabled>
|
|
<i class="fas fa-check"></i> Suivi
|
|
</button>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endmacro %}
|