# Readeck Local Importer Локальный веб-сервис для импорта статей в [Readeck](https://readeck.org/) (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-токен к нему ## Установка ```bash pip install fastapi uvicorn pydantic beautifulsoup4 lxml httpx deep-translator markdown bleach trafilatura ``` ## Запуск ```bash 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`. ## Использование 1. Вставьте текст, загрузите/перетащите файл или импортируйте статью по ссылке. 2. При необходимости переведите контент и выберите его формат. 3. Заполните или автозаполните метаданные, добавьте теги. 4. Посмотрите предпросмотр и нажмите «Создать закладку». ## Файлы - `main.py` — всё приложение (бэкенд FastAPI + фронтенд на Vue 3 / Tailwind). - `config.json` — настройки подключения к Readeck и выбранный язык интерфейса. - `lang/` — папка с файлами локализации интерфейса. ## Локализация Приложение поддерживает несколько языков интерфейса. Доступные языки: - 🇬🇧 English - 🇷🇺 Русский - 🇰🇿 Қазақша (Казахский) ### Смена языка 1. Откройте настройки (⚙️) 2. Выберите язык в списке "🌍 Язык интерфейса" 3. Язык изменится мгновенно ### Добавление нового языка 1. Создайте файл `lang/код_языка.json` (например, `de.json`) 2. Скопируйте структуру из `lang/en.json` или `lang/ru.json` 3. Переведите все значения (не меняя ключи) 4. Перезапустите приложение — новый язык появится автоматически! Подробнее см. `lang/README.md` и `LOCALIZATION.md`. ## Примечания по безопасности - `config.json` хранит API-токен в открытом виде. Не коммитьте файл в git; при необходимости перевыпустите токен. - Сервис слушает `0.0.0.0:8142` **без аутентификации** и доступен всем в локальной сети. Эндпоинт импорта по URL скачивает произвольные адреса (потенциальный SSRF). Для домашней сети это обычно приемлемо; не выставляйте сервис в интернет без авторизации.