ВВП
.docxМинистерство Цифрового Развития, Связи И Массовых
Коммуникаций Российской Федерации
Ордена Трудового Красного Знамени Федеральное
Государственное Бюджетное Образовательное Учреждение
Высшего Образования
«Московский Технический Университет Связи и Информатики»
Команда:
Петров Вячеслав (капитан)
Соболев Егор
Симонов Илья
ПРОЕКТНАЯ РАБОТА «Сервис
для прямых трансляций Telegram»
Оглавление
Y
Описание проекта 3
Тема 3
Цель проекта 3
Задачи 3
Актуальность (практическая значимость) 4
Преимущества 4
Для владельцев медиаресурсов 4
Для конечных потребителей 4
Использованные инструменты 5
Описание содержания проекта 5
Обзор аналогов 6
Способ и методы реализации 6
Компонент бота – панели управления 6
Компонент юзер-бота – аккаунта для проведения трансляций 6
Компонент планирования 7
Компонент хранения и обработки видео 7
Команда 8
Риски 8
Программные риски 8
Проектные риски 8
Источники 8
Литература 8
Форумы и официальная документация 9
Выводы 9
Описание проекта
Тема
Тематическое направление:
Выбранный мини-проект: Telegram чат бот
Цель проекта
В ходе работы мы планируем создать систему автоматического показа записанных видео в режиме реального времени в виде трансляций (видеозвонков) в Telegram – в чатах и каналах.
Задачи
Изучить современные паттерны проектирования и разработки Telegram-приложений.
Спроектировать эффективную архитектуру
Реализовать базу данных для хранения планировщика и загруженных видео
Написать панель управления на Telegram Bot API
Написать юзер-бота1 для загрузки видео и проведения автоматических трансляций
Сделать конфигурацию для Docker для удобного переноса на другие сервера
Провести стресс-тесты на разных серверах
Актуальность (практическая значимость)
Из-за блокировки Discord и проблем с YouTube в России возникла острая необходимость в надежных инструментах для анонсирования мероприятий в Telegram. Наш проект предлагает решение: отложенный показ видео с возможностью трансляции в реальном времени. Это позволяет заранее подготовить качественный контент, избежать ошибок и обеспечить стабильную трансляцию.
Преимущества
Для владельцев медиаресурсов
Отсутствие человеческих рисков при проведении трансляций
Возможность предварительного монтажа
Для конечных потребителей
Качество контента – оборудование уже должно быть настроено на проведение трансляций к необходимому моменту
Гарантированность проведений – трансляция будет отменена или перенесена только по техническим причинам, так как сам материал был записан уже некоторое время назад
Использованные инструменты
Docker (и Docker Compose) Универсальный инструмент для разворачивания больших проектов на любом оборудовании посредством контейнеризации
Python 3.10
TgCrypto Библиотека ускоряющая обмен данными во время звонка с Telegram посредством особых алгоритмов шифрования
Pyrogram Асинхронная библиотека для управления юзер-ботами
Aiogram Асинхронная библиотека для Bot API в Telegram
Py-Tgcalls Библиотека для создания и управления видеозвонками
YtDlp Библиотека для скачивания видеороликов с YouTube, используется в проекте удобного рестриминга2 напрямую с YouTube без скачивания на сервер
Описание содержания проекта
Telegram-бот для настройки (панель управления трансляциями)
Планировщик трансляций
Юзер-бот для ведения трансляция и скачивания больших видео (у телеграмма много ограничений на Bot API, исходя из чего требуется использовать человеческий аккаунт в связке с ботом)
Обзор аналогов
На платформе Telegram нет способов (как и от пользователей) отложенного показа, кроме как функции отправить позже для сообщений
На платформе YouTube есть функция «анонсирование» - публикация видео в определённые срок с предварительной публикацией перед сообществом и с обсуждением / чатом, как на трансляциях
На платформе Discord есть средство анонсирование трансляций, но только с обратным отсчётом, саму трансляцию должны проводить администраторы
Подытог – максимально схожий аналог данного функционала присутствует только на платформе YouTube
Способ и методы реализации
Компонент бота – панели управления
Сначала необходимо через @botfather создать бота с необходимым названием. В конфигурации на сервере указать выданный токен для управления. Первый кто запустит его автоматически приобретает статус администратора бота с дальнейшей возможностью добавления людей.
Бот написан на библиотеке Aiogram. Всё управление происходит через него: управление аккаунтом, управление видео и управление планировщиком
Компонент юзер-бота – аккаунта для проведения трансляций
Подключение к аккаунту в Telegram проbсходит через «приложения», его необходимо создать по адресу my.telegram.org/apps. Полученный «api_id» и «api_hash» необходимо отправить нашему боту в Telegram, авторизация в аккаунт происходит так же через него.
Так как видео загружаются то же через аккаунт, нужно разрешить боту отправлять сообщения на него – это можно сделать, нажав кнопку «СТАРТ» в диалоге между юзер-ботом и ботом.
Он написан на 2 основных библиотеках: Pyrogram – для подключения к аккаунту и обработки сообщений, Py-Tgcalls – для потокового вещания (с дальнейшим использованием TgCrypto)
Компонент планирования
Планировщик представляет собой рекурсивную асинхронную задачу, привязанную к юзер-боту, которая раз в минуту запускается и проверяет список, в момент запуска он блокируется и отправляет боту информацию о трансляции (видео, сообщение о анонсировании и остальные необходимые метаданные)
Компонент хранения и обработки видео
Хранение видео происходит в двух режимах:
Локальное хранение видео
Хранение метаданных
Если видео загружено напрямую боту – оно пересылается с метаданными юзер-боту, через которого происходит загрузка, используется локальное хранение. (Бот → Юзер-Бот → Сервер → Юзер-Бот → Telegram)
Если загружена ссылка на YouTube или «*.mp4» ссылку (или другую ссылку ведущую напрямую на видео) – то происходит проверка на корректность видеоролика и последующая его загрузка на сервер для локального хранения и трансляций (Бот → Загрузчик → Сервер → Юзер-Бот → Telegram)
Для отключения нужно отправить ссылку по формату «![ссылка]» – в данном случае все проверки отключаются и все ролики будут транслироваться напрямую с ресурсов (Платформа → Юзер-Бот → Telegram)
Команда
Петров Вячеслав (юзер-бот и планировщик)
Соболев Егор (бот управления)
Симонов Илья (хранение и обработка видео)
Риски
Программные риски
Безопасность – взлом, утечка данных (маловероятно, но всегда стоит учитывать)
Проблема с загруженностью VPS3 и каналом связи (пропускная способность интернета). Для корректной и идеальной работы рекомендуется использовать VDS4
Проектные риски
Доверие пользователей
Нехватка времени
Источники
Литература
Гифт Ной - Python и DevOps Хайнеман Джордж - Алгоритмы. С примерами на Python
Форумы и официальная документация
Pyrogram - docs.pyrogram.org Telegram API - core.telegram.org/bots/api Docker - docs.docker.com Stack Overflow - stackoverflow.com
Выводы
В результате выполнения проектной работы была разработана система автоматического показа записанных видео в формате трансляций через платформу Telegram. Система включает в себя панель управления, юзер-бота для трансляций и загрузки видео, а также функциональный планировщик.
Разработка подтвердила свою актуальность в условиях текущих ограничений на популярные платформы и роста популярности Telegram как основной среды для проведения мероприятий. Технические решения, использованные в проекте, обеспечили высокую стабильность работы и удобство для конечных пользователей.
1 Юзер-бот – подключенная программа к аккаунту, представляющая собой бота от имени обычного пользователя Telegram
2 Рестриминг – процесс захвата видео с одной трансляции(видео) напрямую в другую трансляцию
3 VPS - виртуальный сервер, который разделяет ресурсы физического сервера с другими виртуальными серверами и ресурсы (как и процессорные) распределены между разными клиентами
4 VDS - виртуальный выделенный сервер, который имеет отведённые ресурсы физического сервера
Москва 2024
