Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.5 KiB
Readeck Local Importer
Локальный веб-сервис для импорта статей в Readeck (self-hosted сервис «прочитать позже»). Позволяет загрузить текст, файл или статью по ссылке, перевести её, отредактировать метаданные и одной кнопкой создать закладку в Readeck.
Readeck умеет сохранять закладки только по URL, поэтому приложение поднимает временную ссылку на ваш контент в локальной сети и передаёт её Readeck — так локальный текст попадает в библиотеку как обычная статья.
Возможности
- Импорт по ссылке — скачивает страницу и извлекает чистый текст статьи (
trafilatura). - Загрузка файлов
.txt,.html,.md(+ drag & drop), автоопределение кодировки. - Форматы контента — HTML, Markdown, простой текст.
- Перевод через Google (22 языка) с учётом лимитов на длину запроса.
- Автозаполнение метаданных из HTML-метатегов (заголовок, автор, описание, дата, сайт).
- Предпросмотр статьи ровно в том виде, в каком её увидит Readeck.
- Санитизация HTML перед публикацией (
bleach). - Тест подключения к Readeck прямо из настроек.
- Локализация интерфейса — поддержка нескольких языков с возможностью добавления новых.
- Тёмная тема, счётчик символов/слов, автосохранение черновика.
Требования
- Python 3.9+
- Доступный сервер Readeck и API-токен к нему
Установка
pip install fastapi uvicorn pydantic beautifulsoup4 lxml httpx deep-translator markdown bleach trafilatura
Запуск
python main.py
Сервер стартует на http://0.0.0.0:8142, браузер откроется автоматически на http://127.0.0.1:8142.
При первом запуске откроется окно настроек — укажите:
- Readeck URL — адрес вашего сервера Readeck (например
http://192.168.1.10:8000) - API Токен — токен из настроек Readeck (
Bearer) - LAN IP — IP этой машины в локальной сети (для callback-ссылки, по которой Readeck заберёт контент)
Нажмите «Проверить подключение», чтобы убедиться, что сервер и токен валидны, затем сохраните. Настройки записываются в config.json.
Использование
- Вставьте текст, загрузите/перетащите файл или импортируйте статью по ссылке.
- При необходимости переведите контент и выберите его формат.
- Заполните или автозаполните метаданные, добавьте теги.
- Посмотрите предпросмотр и нажмите «Создать закладку».
Файлы
main.py— всё приложение (бэкенд FastAPI + фронтенд на Vue 3 / Tailwind).config.json— настройки подключения к Readeck и выбранный язык интерфейса.lang/— папка с файлами локализации интерфейса.
Локализация
Приложение поддерживает несколько языков интерфейса. Доступные языки:
- 🇬🇧 English
- 🇷🇺 Русский
- 🇰🇿 Қазақша (Казахский)
Смена языка
- Откройте настройки (⚙️)
- Выберите язык в списке "🌍 Язык интерфейса"
- Язык изменится мгновенно
Добавление нового языка
- Создайте файл
lang/код_языка.json(например,de.json) - Скопируйте структуру из
lang/en.jsonилиlang/ru.json - Переведите все значения (не меняя ключи)
- Перезапустите приложение — новый язык появится автоматически!
Подробнее см. lang/README.md и LOCALIZATION.md.
Примечания по безопасности
config.jsonхранит API-токен в открытом виде. Не коммитьте файл в git; при необходимости перевыпустите токен.- Сервис слушает
0.0.0.0:8142без аутентификации и доступен всем в локальной сети. Эндпоинт импорта по URL скачивает произвольные адреса (потенциальный SSRF). Для домашней сети это обычно приемлемо; не выставляйте сервис в интернет без авторизации.