Files
myfirstprogram/addons/dowloadmp4_to_youtube/handlers.py
T

56 lines
2.3 KiB
Python

import logging
from aiogram import Dispatcher, Bot
from aiogram.filters import Command
from models.state import BotState
from utils.antispam import admin_required
from .dowmp4 import download_mp4_to_dropbox
logger = logging.getLogger(__name__)
def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
@dp.message(Command("dowmp4"))
#@admin_required(4)
async def dowmp4_handler(message):
"""Обработчик команды /dowmp4"""
try:
url = message.text.split(" ", 1)[1].strip()
except IndexError:
await message.answer("Пожалуйста, укажите URL видео после команды /dowmp4")
return
processing_msg = await message.answer("⏳ Начинаю обработку видео... Это может занять несколько минут.")
try:
# Скачиваем и загружаем в Dropbox
public_url, metadata = await download_mp4_to_dropbox(url)
# Форматируем информацию о видео
duration_str = f"{int(metadata['duration'] // 60)}:{int(metadata['duration'] % 60):02d}"
size_mb = f"{metadata['filesize'] / (1024 * 1024):.1f} MB"
caption = (
f"🎥 **{metadata.get('title', 'Видео')}**\n"
f"👤 **Автор:** {metadata.get('uploader', 'Неизвестен')}\n"
f"⏱ **Длительность:** {duration_str}\n"
f"📦 **Размер:** {size_mb}\n"
f"🔗 **Ссылка:** [Скачать]({public_url})"
)
await processing_msg.delete() # Удаляем сообщение о обработке
await message.answer(
f"✅ **Видео успешно обработано!**\n\n{caption}",
parse_mode="Markdown",
disable_web_page_preview=True
)
except ValueError as e:
await message.answer(f"❌ Ошибка: {str(e)}")
except Exception as e:
logger.error(f"Ошибка при обработке /dowmp4: {e}", exc_info=True)
await message.answer("❌ Произошла ошибка при обработке видео. Попробуйте позже.")