Files

5.3 KiB
Raw Permalink Blame History

Changelog

Все значимые изменения в проекте Telegram Archiver.

Формат ведётся в соответствии с Keep a Changelog, версии — по Semantic Versioning.


[Unreleased]

Planned

  • CLI тестирование с реальным Telegram каналом
  • Интеграция с Hugo (экспорт в content/posts/)
  • Dockerfile и docker-compose для деплоя
  • Поддержка нескольких каналов одновременно
  • Прогресс-бар при скачивании (tqdm)

[1.0.0] — 2026-02-19

Добавлено

Core Functionality

  • Архивация Telegram-каналов в локальную файловую систему
  • Bundle-структура: <channel>/<message_id>/index.md + media
  • Front-matter для Hugo: message_id, date, author, reply_to, repost_from, media_files
  • Дедупликация по message_id: пропуск уже скачанных постов
  • Обработка медиа: фото, видео, документы, аудио, стикеры, GIF
  • Ограничение размера файла: настраиваемый лимит (по умолчанию 200 MB)
  • Отчёт о больших файлах: 2big2get.md с ссылками на файлы > MAX_FILE_SIZE
  • Обработка репостов: сохранение оригинального канала и message_id
  • Обработка ответов (reply-to): относительные ссылки на другие посты

Interfaces

  • FastAPI REST API:
    • GET /health — проверка здоровья
    • GET / — информация об API
    • POST /archive — запуск архивации
    • GET /docs — Swagger UI документация
  • CLI интерфейс:
    • --channel / -c: username канала
    • --output-dir / -o: папка для архива
    • --limit / -l: лимит постов
    • --from-message-id / -f: начать с этого ID
    • --force: перескачать существующие

Configuration

  • .env конфигурация: API_ID, API_HASH, PHONE, MAX_FILE_SIZE, OUTPUT_DIR, LOG_LEVEL
  • Pydantic Settings: валидация credentials, type hints
  • Graceful startup: сервер запускается даже без .env (с предупреждением)

Logging & Observability

  • Логирование в файл: YYYYMMDD-channel.log
  • Логирование в консоль: stdout с цветным выводом
  • OpenTelemetry ready: поддержка tracing (отключено по умолчанию)

Development Tools

  • Virtual environment: uv venv для создания
  • pyproject.toml: полная метаданные проекта
  • Pre-commit hooks: ruff, mypy, pre-commit-hooks
  • Тесты: pytest для models и config
  • Конфигурация linting: ruff, mypy, pytest в pyproject.toml
  • DEVELOPMENT.md: гайд для разработчиков

Изменено

  • config.py: credentials сделаны опциональными для graceful startup
  • app/main.py: улучшены сообщения об ошибках (503 с деталями)
  • .gitignore: добавлены .venv/, .mypy_cache/, .pytest_cache/

Исправлено

  • Ошибка запуска сервера без .env файла
  • Отсутствие валидации credentials до вызова API
  • Missing imports при установке зависимостей

Технические детали

Dependencies

fastapi>=0.109.0
uvicorn[standard]>=0.27.0
click>=8.1.7
telethon>=1.34.0
pydantic>=2.5.3
pydantic-settings>=2.1.0
python-dotenv>=1.0.0
pyyaml>=6.0.1
opentelemetry-api>=1.22.0
opentelemetry-sdk>=1.22.0
opentelemetry-instrumentation-fastapi>=0.43b0
httpx>=0.26.0
aiofiles>=23.2.1

Dev Dependencies

pytest>=8.0.0
pytest-asyncio>=0.23.0
pytest-cov>=4.1.0
ruff>=0.1.0
mypy>=1.8.0
pre-commit>=3.6.0

Testing

  • Синтаксис: python -m py_compile (все файлы)
  • Импорты: проверены в virtual environment
  • FastAPI server: старт без .env
  • Endpoints: /health, /, /archive протестированы

[0.1.0] — 2026-02-19 (Initial Commit)

Добавлено

  • Первоначальная структура проекта
  • Базовая реализация Telethon клиента
  • Черновик FastAPI приложения
  • README.md с описанием

Типы изменений

  • Added — новые функции
  • Changed — изменения в существующих функциях
  • Deprecated — скоро будут удалены
  • Removed — удалённые функции
  • Fixed — исправления ошибок
  • Security — улучшения безопасности

Ссылки