I add command /id and /dowmp4 for dowload video with Youtube and i improve code.
It's version 0.2.1
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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("❌ Произошла ошибка при обработке видео. Попробуйте позже.")
|
||||
|
||||
Reference in New Issue
Block a user