mirror of
https://gitverse.ru/kpa39l/chronicle.nixg.ru.git
synced 2026-09-29 18:05:07 +00:00
5.9 KiB
5.9 KiB
Telegram Archiver — Сводка по проекту
✅ Статус: Phase 0 MVP завершён
Дата: 6 марта 2026 г.
Версия: 1.0.0 (MVP)
🎯 Достигнутые результаты
Протестировано на боевом канале
- Канал: dedinit (Дед in АйТи)
- Постов заархивировано: 992
- Время выполнения: 7335 секунд (~2 часа)
- Медиафайлов скачано: 454
- Успешность: 95% (50 таймаутов из 992)
Реализованный функционал
- ✅ Авторизация через MTProto (Telethon)
- ✅ Парсинг каналов без ограничений
- ✅ Конвертация в Markdown с front-matter для Hugo
- ✅ Извлечение хэштегов и добавление в теги
- ✅ Hugo shortcodes для медиа (
{{< figure >}},{{< video >}},{{< audio >}}) - ✅ Скачивание медиа: фото, видео, аудио, документы
- ✅ Обработка таймаутов (30с на файл) — процесс не застревает
- ✅ Дедупликация: повторный запуск пропускает скачанные посты
- ✅ Прогресс-логирование: каждые 50 постов
- ✅ Обработка ошибок: проблемные посты пропускаются
📁 Структура проекта
telegram-archiver/
├── app/
│ ├── __init__.py
│ ├── main.py # CLI + FastAPI entry point
│ ├── telethon_client.py # Telethon wrapper с таймаутами
│ ├── archiver.py # Основная логика архивации
│ ├── models.py # Pydantic модели
│ └── logger.py # Логирование
├── archives/ # Выходные данные (игнорируется git)
├── .env # Конфигурация (API ключи)
├── .gitignore
├── FAQ.md # Ответы на вопросы
├── README.md # Документация
├── requirements.txt
├── run_archiver.py # CLI скрипт
├── login_interactive.py # Скрипт авторизации
└── test_*.py # Тестовые скрипты
🚀 Быстрый старт
1. Установка зависимостей
cd telegram-archiver
uv venv
uv pip install -r requirements.txt
2. Настройка .env
cp .env.example .env
# Отредактируй .env: API_ID, API_HASH, PHONE
3. Авторизация
python login_interactive.py
# Введи код из Telegram
4. Запуск архивации
# Тестовый прогон (5 постов)
python run_archiver.py -c dedinit --limit 5
# Полный канал
python run_archiver.py -c dedinit
# С конкретного ID
python run_archiver.py -c dedinit --from-message-id 500
📊 Выходные данные
Структура
archives/dedinit/
├── 1042/
│ ├── index.md # Post content + front-matter
│ └── photo_20260305_070924.jpg
├── 1043/
│ └── index.md
└── 2big2get.md # Отчёт о больших файлах
Front-matter
---
message_id: 1044
date: '2026-03-05T18:05:47+00:00'
author: Дед in АйТи
tags: [debian, linux]
media_files:
- filename: photo.jpg
type: photo
caption: Описание
size: 87853
---
{{< figure src="photo.jpg" alt="Описание" >}}
Текст поста...
🔧 Известные проблемы (задачи на будущее)
| Задача | Описание | Приоритет |
|---|---|---|
| 0.10 | Посты без index.md (только медиа) | Высокий |
| 0.13 | Временная зона UTC вместо Москвы | Высокий |
| 0.15 | Размер файла = 0 во front-matter | Высокий |
| 0.21 | Resume прерванной архивации | Высокий |
| 0.9 | Прямые ссылки на посты | Средний |
| 0.14 | Прямые ссылки на файлы | Средний |
| 0.16 | Расширенный front-matter | Средний |
| 0.11 | Видео-кружки как .bin | Низкий |
| 0.17 | Многопоточное скачивание | Низкий |
| 0.19 | Очередь на скачивание | Низкий |
| 0.20 | Audio: duration, waveform | Низкий |
| 0.22 | Формат тегов inline | Низкий |
| 0.23 | Обработка трансляций | Низкий |
| 0.24 | Голосовые сообщения | Низкий |
📈 Производительность
| Метрика | Значение |
|---|---|
| Скорость | ~500 постов/час |
| Время на 1 пост | ~7.4 секунды |
| Время на 1 медиа | ~15-30 секунд |
| Таймауты | ~5% |
| Успех | 95% |
📚 Документация
- README.md — Полная документация
- FAQ.md — Ответы на вопросы
- ROADMAP.md — Дорожная карта проекта
🎯 Следующие шаги
- Исправить критичные баги (0.10, 0.13, 0.15)
- Добавить resume (0.21)
- Добавить отчёт о таймаутах (0.12)
- Многопоточность (0.17, 0.19)
Проект готов к использованию в текущем виде. Все критичные функции работают.