fr1: books.ruzzy.dev — читалка с ИИ (PDF/EPUB → главы, рекапы, перевод/объяснение выделенного, вопросы с RAG; Claude Code по подписке без инструментов; вход через Telegram)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
gilfanovr
2026-10-13 10:39:51 +03:00
co-authored by Claude Opus 5.5
parent 8fd84239be
commit 9aab5b3f40
19 changed files with 1455 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
{% extends "base.html" %}
{% block body %}
<section class="card">
<form action="/upload" method="post" enctype="multipart/form-data" class="row" id="upload">
<input type="file" name="file" accept=".pdf,.epub,application/pdf,application/epub+zip" required>
<button>Загрузить книгу</button>
</form>
<p class="muted small">PDF или EPUB до 200 МБ. Оглавление разберётся само; без оглавления — по 20 страниц.</p>
</section>
{% if not books %}<p class="muted">Книг пока нет.</p>{% endif %}
<ul class="books">
{% for b in books %}
<li>
<a href="/book/{{ b.id }}{% if b.last_ch %}/ch/{{ b.last_ch }}{% endif %}" class="btitle">{{ b.title or b.orig or 'Без названия' }}</a>
{% if b.author %}<span class="muted"> — {{ b.author }}</span>{% endif %}
<div class="small muted">
{{ b.fmt|upper }}{% if b.pages %} · {{ b.pages }} с.{% endif %}{% if b.lang %} · {{ b.lang }}{% endif %}
{% if b.status != 'ready' %} · <b>{{ {'parsing':'разбираю…','indexing':'индексирую…','error':'ошибка'}[b.status] or b.status }}</b>{% endif %}
{% if b.n %} · прочитано {{ b.nread }}/{{ b.n }} · рекапов {{ b.nrecap }}{% endif %}
· <a href="/book/{{ b.id }}">оглавление</a>
</div>
</li>
{% endfor %}
</ul>
{% endblock %}