Репозиторий на GitHub
Telegram bot for finding books by title, cover photo (OCR), or quote (AI). Download links in multiple formats, recommendations. Python, aiogram 3, Google Books, LibGen, Groq, chrome-lens.
Бот для поиска книг, распознавания по обложке и цитате, получения рекомендаций и отправки файлов книг в чат (FB2, EPUB, PDF и др.).
- Поиск книг — по названию или автору. Бот показывает 3–5 изданий на разных языках (RU, EN, DE, FR, ES) с флагами; пользователь выбирает нужное. Карточка: обложка, описание, рейтинг, кнопки форматов и магазинов.
- RU издание из LibGen — русская книга в списке ищется в LibGen (при отсутствии — Open Library). Остальные языки — Google Books. У LibGen-книги описание и обложка подгружаются из Google Books.
- Форматы и скачивание — кнопки FB2, EPUB, PDF, TXT, Аудио. Бот скачивает файл и отправляет в чат (до 50 MB); при ошибке — ссылка. Источники: LibGen (HTML), Anna's Archive, Open Library, Gutenberg.
- По обложке — фото обложки → OCR (chrome-lens-py), извлечение названия/автора (Groq) → тот же мультиязычный список изданий.
- По цитате — текст цитаты → определение книги (Groq llama-3.3-70b) → список изданий на выбор.
- Похожие книги — на карточке кнопка «Похожие книги»: рекомендации и ссылки на покупку (Ozon, Litres и др.).
- Найдите бота в Telegram, нажмите «Запустить» или отправьте
/start. - Главное меню: Найти книгу, Аудиокниги, По обложке, По цитате. В любой момент можно нажать «Назад».
- Найти книгу → введите запрос (например, «Harry Potter» или «Муму»).
- Бот пришлёт список изданий с флагами (🇷🇺 RU, 🇬🇧 EN и т.д.). Выберите нужное.
- Откроется карточка: обложка, описание, кнопки Читать (форматы), Аудио, Купить, Похожие книги.
- По обложке → отправьте фото обложки книги.
- Бот распознает текст и предложит подтвердить название. После подтверждения — тот же список изданий по языкам.
- По цитате → введите цитату из книги.
- Бот определит произведение и покажет список изданий. При низкой уверенности предложит принять вариант или ввести другую цитату.
- На карточке книги нажмите Читать.
- Появятся кнопки доступных форматов (FB2, EPUB, PDF и т.д.).
- Нажмите формат — бот скачает файл и отправит в чат (или ссылку при ошибке).
- Файлы книг ищутся в открытых источниках; распространение может противоречить авторскому праву. Используйте ответственно.
- Для работы нужны API-ключи (см. ниже); без них поиск и распознавание недоступны.
| Переменная | Описание |
|---|---|
BOT_TOKEN |
Токен от @BotFather. |
GOOGLE_API_KEY |
Ключ Google Cloud (Books API) — поиск книг, описание/обложка для LibGen. |
GEMINI_API_KEY |
(опционально) Google AI Studio — для рекомендаций «Похожие книги». |
GROQ_API_KEY |
Groq Cloud — поиск по цитате и извлечение названия/автора с обложки. |
GOOGLE_VISION_KEY |
(опционально) Не используется в текущей версии (OCR через chrome-lens-py). |
GOOGLE_CSE_CX |
(опционально) Custom Search Engine для fallback-поиска файлов. |
Для базовой работы обязательны: BOT_TOKEN, GOOGLE_API_KEY, GROQ_API_KEY.
ChillLibraryTgBot/
├── bot.py # Точка входа
├── main.py # Роутеры, запуск бота
├── config.py # Настройки из env
├── database.py # SQLite (история)
├── keyboards.py # Клавиатуры
├── messages.py # Тексты бота
├── handlers/
│ ├── search.py # Поиск, show_book_variants, карточка, select_book
│ ├── recognize.py # Обложка, цитата
│ ├── files.py # Читать / форматы, скачивание и отправка файла
│ └── recommendations.py # Похожие книги
├── services/
│ ├── google_books.py # Google Books API, search_books_multilang (EN/DE/FR/ES)
│ ├── libgen_service.py # LibGen RU, get_download_formats, download_book
│ ├── vision.py # OCR (chrome-lens-py), Groq — title/author с обложки
│ ├── quote_service.py # Поиск по цитате (Groq)
│ ├── book_display.py # enrich_libgen_book (описание/обложка из Google Books)
│ ├── search.py # search_book для рекомендаций
│ └── ...
├── tests/
├── requirements.txt
├── Dockerfile
├── .env.example
├── .gitignore
├── README.md
└── MANUAL_TESTING.md
Выполнено:
- OCR обложки — chrome-lens-py вместо Google Vision.
- Поиск по цитате — Groq (llama-3.3-70b) вместо Gemini.
- Форматы книг — LibGen (HTML), Anna's Archive, Open Library, Gutenberg; бот скачивает и отправляет файл в чат.
- Мультиязычный поиск — 3–5 изданий (RU, EN, DE, FR, ES), один сценарий для названия, обложки и цитаты.
- RU издание из LibGen — русская книга из LibGen (fallback Open Library), обогащение карточки из Google Books; форматы без повторного запроса.
- Скорость LibGen — параллельные запросы к edition.php, фильтр по языку Russian, корректное извлечение названия.
В планах:
- AI-сводка перед скачиванием — кнопка «Краткое содержание», 3–4 предложения через Groq перед выбором формата.
- Голосовой предпросмотр — Edge TTS: озвучка первого абзаца описания (кнопка «Озвучить»).
- Миграция SQLite → PostgreSQL — asyncpg, Alembic, постоянное хранение на Railway.
- Обновить рекомендации — «Похожие книги» через мультиязычный поиск или единый формат карточки.
- Код можно использовать и дорабатывать по своему усмотрению.
- Распространение файлов книг через бота может нарушать авторские права; ответственность на владельце бота и пользователях.
- Telegram может ограничивать или блокировать ботов при жалобах на контент.