Skip to content

sayomiyori/ChillLibraryTgBot

Repository files navigation

ChillLibraryTgBot — Telegram-бот библиотекарь

Репозиторий на 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 и др.).

Инструкция по использованию (для пользователей бота)

Запуск

  1. Найдите бота в Telegram, нажмите «Запустить» или отправьте /start.
  2. Главное меню: Найти книгу, Аудиокниги, По обложке, По цитате. В любой момент можно нажать «Назад».

Поиск по названию

  1. Найти книгу → введите запрос (например, «Harry Potter» или «Муму»).
  2. Бот пришлёт список изданий с флагами (🇷🇺 RU, 🇬🇧 EN и т.д.). Выберите нужное.
  3. Откроется карточка: обложка, описание, кнопки Читать (форматы), Аудио, Купить, Похожие книги.

По обложке

  1. По обложке → отправьте фото обложки книги.
  2. Бот распознает текст и предложит подтвердить название. После подтверждения — тот же список изданий по языкам.

По цитате

  1. По цитате → введите цитату из книги.
  2. Бот определит произведение и покажет список изданий. При низкой уверенности предложит принять вариант или ввести другую цитату.

Форматы и файл

  1. На карточке книги нажмите Читать.
  2. Появятся кнопки доступных форматов (FB2, EPUB, PDF и т.д.).
  3. Нажмите формат — бот скачает файл и отправит в чат (или ссылку при ошибке).

Важно

  • Файлы книг ищутся в открытых источниках; распространение может противоречить авторскому праву. Используйте ответственно.
  • Для работы нужны 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 может ограничивать или блокировать ботов при жалобах на контент.

About

Telegram bot for finding books by title, cover photo (OCR), or quote (AI). Download links in multiple formats, recommendations. Python, aiogram, Google Books/Vision/Gemini

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors