Files
dinlo e1b2485156 Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 18:45:40 +08:00

84 lines
5.5 KiB
Markdown

# 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). Для домашней сети это обычно приемлемо; не выставляйте сервис в интернет без авторизации.