c5f6da31ba
It's version 0.2.1
56 lines
2.3 KiB
Python
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("❌ Произошла ошибка при обработке видео. Попробуйте позже.")
|
|
|