- app/api/seo.py (+ app/templates/seo/*): publiczny HTML SEO router (programmatic entity long-tail: performer/studio/scene/landing/2257), bez api-key. Importowany przez main.py — wymagany do uruchomienia, dotąd untracked. Opsec-clean (brak VPS IP/sekretów). - CLAUDE.md: instrukcje projektu (dotąd untracked). - .gitignore: .nimbalyst/ (lokalne tracker-tooling, nie dla OSS repo). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
16 lines
699 B
HTML
16 lines
699 B
HTML
{# Siatka kart scen. Wymaga: scenes, cards; opcjonalnie studios (mapa studio_id→Studio). #}
|
|
<div class="grid">
|
|
{% for s in scenes %}
|
|
<a class="card" href="{{ base_url }}/scene/{{ s.id }}">
|
|
{% if cards[s.id].thumb %}
|
|
<img src="{{ cards[s.id].thumb }}" alt="{{ s.title }}" loading="lazy">
|
|
{% endif %}
|
|
<div class="t">{{ s.title }}
|
|
<div class="s">
|
|
{% if studios is defined and s.studio_id and studios.get(s.studio_id) %}{{ studios[s.studio_id].name }} · {% endif %}
|
|
{% if s.release_date %}{{ s.release_date.year }} · {% endif %}{{ cards[s.id].sources }} source{{ 's' if cards[s.id].sources != 1 else '' }}
|
|
</div>
|
|
</div>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|