It's version 0.4
This commit is contained in:
@@ -3,11 +3,14 @@ from aiogram.filters import Command
|
||||
from models.state import BotState
|
||||
from utils.antispam import admin_required
|
||||
from logging import getLogger
|
||||
from .dowloadmp3_to_youtube import *
|
||||
from .dowloadmp3_to_youtube import download_mp3_isolated
|
||||
import tempfile
|
||||
import asyncio
|
||||
from os import path, unlink
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
|
||||
@dp.message(Command("dowmp3"))
|
||||
@admin_required(5)
|
||||
@@ -18,7 +21,9 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
|
||||
return
|
||||
|
||||
url = args[1]
|
||||
logger.info(f"Получена команда /dowmp3 от user_id={message.from_user.id}, url={url}")
|
||||
logger.info(
|
||||
f"Получена команда /dowmp3 от user_id={message.from_user.id}, url={url}"
|
||||
)
|
||||
|
||||
status_msg = await message.reply("⏳ Скачиваю аудио... Это займет 1-2 минуты")
|
||||
|
||||
@@ -29,30 +34,32 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
|
||||
if file_size < 1000:
|
||||
raise Exception("Файл слишком маленький")
|
||||
|
||||
await status_msg.edit_text(f"✅ Аудио готово! Отправляю...")
|
||||
await status_msg.edit_text("✅ Аудио готово! Отправляю...")
|
||||
|
||||
# Подготавливаем аудио файл
|
||||
audio_input = types.FSInputFile(filename)
|
||||
|
||||
# Базовые параметры
|
||||
send_params = {
|
||||
'audio': audio_input,
|
||||
'title': metadata['title'][:64],
|
||||
'performer': metadata['performer'][:64],
|
||||
'duration': int(metadata['duration']) if metadata['duration'] else None,
|
||||
'caption': f"🎵 {metadata['title']}\n👤 {metadata['performer']}"
|
||||
"audio": audio_input,
|
||||
"title": metadata["title"][:64],
|
||||
"performer": metadata["performer"][:64],
|
||||
"duration": int(metadata["duration"]) if metadata["duration"] else None,
|
||||
"caption": f"🎵 {metadata['title']}\n👤 {metadata['performer']}",
|
||||
}
|
||||
|
||||
# Добавляем обложку если есть
|
||||
if metadata['thumbnail_data']:
|
||||
if metadata["thumbnail_data"]:
|
||||
try:
|
||||
# Создаем временный файл для обложки
|
||||
with tempfile.NamedTemporaryFile(suffix='.jpg', delete=False) as thumb_file:
|
||||
with tempfile.NamedTemporaryFile(
|
||||
suffix=".jpg", delete=False
|
||||
) as thumb_file:
|
||||
thumb_filename = thumb_file.name
|
||||
thumb_file.write(metadata['thumbnail_data'])
|
||||
thumb_file.write(metadata["thumbnail_data"])
|
||||
|
||||
# Используем FSInputFile для обложки
|
||||
send_params['thumbnail'] = types.FSInputFile(thumb_filename)
|
||||
send_params["thumbnail"] = types.FSInputFile(thumb_filename)
|
||||
logger.info("Обложка добавлена к сообщению")
|
||||
|
||||
except Exception as e:
|
||||
@@ -62,7 +69,7 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
|
||||
await message.answer_audio(**send_params)
|
||||
|
||||
# Удаляем временный файл обложки если создавали
|
||||
if 'thumb_filename' in locals() and path.exists(thumb_filename):
|
||||
if "thumb_filename" in locals() and path.exists(thumb_filename):
|
||||
unlink(thumb_filename)
|
||||
|
||||
await status_msg.delete()
|
||||
@@ -74,8 +81,8 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
|
||||
await status_msg.edit_text(f"❌ Ошибка: {str(e)}")
|
||||
logger.error(f"Ошибка при скачивании: {e}")
|
||||
finally:
|
||||
if 'filename' in locals() and path.exists(filename):
|
||||
if "filename" in locals() and path.exists(filename):
|
||||
try:
|
||||
unlink(filename)
|
||||
except:
|
||||
pass
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user