Этот Telegram-бот разработан для анализа и скачивания видео с TikTok с сохранением оригинального качества.
- Скачивание видео в максимально доступном качестве
- Технический анализ медиафайлов (разрешение, битрейт, кодек, FPS)
- Отправка видео как файла, минуя компрессию Telegram
- Генерация удобных хэштегов с информацией о параметрах видео
- Поддержка любых форматов ссылок на TikTok (полных и коротких)
- Получите токен у @BotFather в Telegram
- Сохраните его в переменной окружения
TELEGRAM_BOT_TOKEN
# Магия одной командой
docker-compose build && docker-compose up bot -d
# Наблюдение за работой
docker logs -f $(docker ps -qf "name=analyze-tt-bot")
# Установка инструментария (требуются права администратора)
winget install --id Microsoft.Powershell
winget install --id Python.Python.3.10
winget install --id MediaArea.MediaInfo
pip install yt-dlp
Install-Module PSFramework -Force
$env:TELEGRAM_BOT_TOKEN = "ваш_токен_от_BotFather"
# Проверка готовности системы
.\scripts\Start-Bot.ps1 -ValidateOnly
# Запуск бота
.\scripts\Start-Bot.ps1
Отправьте любую ссылку на TikTok и получите:
- Оригинальное видео без компрессии Telegram
- Профессиональный технический анализ
- Удобные хэштеги для навигации
analyze-tt-bot/
├── scripts/ # Скрипты для запуска и управления
│ ├── Start-Bot.ps1 # Скрипт запуска бота
│ └── Get-TestCoverage.ps1 # Скрипт анализа покрытия кода тестами
├── src/ # Исходный код проекта
│ └── AnalyzeTTBot/ # Основной модуль
│ ├── AnalyzeTTBot.psd1 # Манифест модуля
│ ├── AnalyzeTTBot.psm1 # Файл модуля
│ ├── Config/ # Конфигурационные файлы
│ ├── Factories/ # Фабрики и контейнеры зависимостей
│ ├── Interfaces/ # Интерфейсы для инверсии контроля
│ ├── Services/ # Сервисы и реализации
│ └── Utilities/ # Вспомогательные функции
├── tests/ # Тесты и отладка
│ └── AnalyzeTTBot/ # Тесты модуля
│ ├── Helpers/ # Вспомогательные функции для тестов
│ ├── Integration/ # Интеграционные тесты
│ ├── Mocks/ # Моки для тестирования
│ ├── TestData/ # Тестовые данные
│ └── Unit/ # Модульные тесты
├── tools/ # Инструменты разработки
├── docs/ # Документация проекта
├── temp/ # Временные файлы
├── .gitignore # Исключения для Git
├── GUIDELINES.md # Руководство по разработке
└── README.md # Основная документация
Для корректной работы бота необходимы следующие компоненты:
- PowerShell 7.5+ - для корректной работы с Unicode и эмодзи
- Python 3.10+ - для работы yt-dlp
- yt-dlp 2025.03.26+ - инструмент для скачивания видео
- MediaInfo 23.11+ - для анализа технических характеристик видео
- curl - встроен для работы с API Telegram
- PSFramework 1.12.346+ - для управления конфигурацией и логированием
- Инверсия контроля — использование контейнера зависимостей для управления жизненным циклом сервисов
- Интерфейсы — четкие контракты для всех компонентов системы
- Модульный дизайн — четкое разделение обязанностей между компонентами
- Строгая инкапсуляция — каждый внешний API или инструмент инкапсулирован в отдельном сервисе
- Безопасная работа с внешними командами — использование
System.Diagnostics.Process
вместоInvoke-Expression
- Централизованная конфигурация — все параметры в PSFramework
- Изолированная проверка 81C5 ависимостей — отдельный модуль для валидации компонентов
-
Удаление метаданных о камере:
- TikTok систематически удаляет все метаданные о камере из видео при их обработке перед публикацией
- В видео, скачанных с TikTok, полностью отсутствуют следующие метаданные:
- Make (производитель устройства)
- Model (модель устройства)
- FocalLength (фокусное расстояние)
- LensModel (модель объектива)
- Любые другие метаданные, связанные с камерой или устройством
-
Сохраняемые технические характеристики:
- Разрешение видео (обычно 1080x1920 для вертикальных видео)
- Частота кадров (чаще всего 60 FPS)
- Кодек видео (HEVC/hvc1)
- Профиль кодека (Main@L5@Main)
- Цветовое пространство (YUV с цветовыми характеристиками BT.709)
- Аудио формат (AAC LC SBR PS / HE-AACv2)
-
Специфичные для TikTok метаданные:
- Comment: уникальный идентификатор видео (например,
vid:v09044g40000cvgdnrnog65ln06e6h2g
) - AigcInfo: информация о типе контента (
{"aigc_label_type": 0}
) - VidMd5: хеш-сумма видео
- Encoder: обычно
Lavf58.76.100
(библиотека FFmpeg, используемая TikTok)
- Comment: уникальный идентификатор видео (например,
Проект использует Pester 5.4+ для модульных и интеграционных тестов. Более подробная информация о тестировании, включая рекомендации по организации тестов, мокированию и использованию InModuleScope, доступна в GUIDELINES.md.
Для запуска всех тестов проекта:
# Из корня проекта
Import-Module Pester
Invoke-Pester -Path ".\tests"
Для запуска конкретных тестов:
# Только модульные тесты
Invoke-Pester -Path ".\tests\AnalyzeTTBot\Unit"
# Тесты для конкретного сервиса
Invoke-Pester -Path ".\tests\AnalyzeTTBot\Unit\FileSystemService.Unit.Tests.ps1"
Для запуска с расширенной детализацией:
Invoke-Pester -Path ".\tests" -Output Detailed
Для более подробного анализа покрытия кода тестами можно использовать специальный скрипт:
# Запуск скрипта анализа покрытия кода
.\scripts\Get-TestCoverage.ps1
Этот скрипт:
- Запускает все тесты проекта
- Анализирует покрытие каждого сервиса
- Показывает детальную статистику по каждому файлу
- Предоставляет визуальное представление покрытия
- Сохраняет полный отчет в формате JaCoCo XML для дальнейшего анализа
Вы также можете указать собственные параметры:
# Запуск с собственными параметрами
.\scripts\Get-TestCoverage.ps1 -TestPath ".\tests\AnalyzeTTBot\Unit" -MinCoverage 90
- Проверка состояния:
.\scripts\Start-Bot.ps1 -ValidateOnly
для проверки всех зависимостей - Логирование:
.\scripts\Start-Bot.ps1 -Debug
для подробного логирования - Журналы: Хранятся в
%TEMP%\AnalyzeTTBot\logs\
- GUIDELINES.md - Структура проекта и правила разработки
- DOCKER.md - Инструкция по сборке и запуску Docker-контейнера для бота
Последнее обновление документации: 21.04.2025