from aiogram import Bot, Dispatcher, executor, types
import logging
import yt_dlp
import os
import time
from config import TOKEN
from aiogram.dispatcher.filters import CommandStart
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
logging.basicConfig(level=logging.INFO)
class FilenameCollectorPP(yt_dlp.postprocessor.common.PostProcessor):
def __init__(self):
super(FilenameCollectorPP, self).__init__(None)
self.filenames = []
def run(self, infomation):
self.filenames.append(infomation["filepath"])
return [], infomation
@dp.message_handler(CommandStart())
async def cmd_start(msg: types.Message):
await msg.reply('Я Бот для скачивания музыки и могу скачать тебе любую песню которую ты тут напишешь\nЗагружать актуальные хиты\n❤Загружать новинки музыки\nСлушать музыку без интернета\nЗагружать музыку по запросу')
@dp.message_handler(commands='s')
async def cmd_search(msg: types.Message):
arg = msg.get_args()
YDL_OPTIONS = {'format': 'bestaudio/best',
'noplaylist': 'True',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192'
}]
}
with yt_dlp.YoutubeDL(YDL_OPTIONS) as ydl:
try:
get(arg)
except:
filename_collector = FilenameCollectorPP()
ydl.add_post_processor(filename_collector)
video = ydl.extract_info(f"ytsearch:{arg}", download=True)['entries'][0]
await msg.reply_document(open(filename_collector.filenames[0], 'rb'))
time.sleep(5)
os.remove(filename_collector.filenames[0])
else:
video = ydl.extract_info(arg, download=True)
return filename_collector.filenames[0]
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Вот код. Бот должен кидать музыку. Но при отправке ему сообщения выдаёт ошибку:
ERROR: Postprocessing: ffprobe and ffmpeg not found. Please install or provide the path using --ffmpeg-location
ERROR:asyncio:Task exception was never retrieved
future: exception=DownloadError('ERROR: Postprocessing: ffprobe and ffmpeg not found. Please install or provide the path using --ffmpeg-location')>
Traceback (most recent call last):
File "D:\4_module\nomodule\mustop98_bot\code.py", line 39, in cmd_search
get(arg)
^^^
NameError: name 'get' is not defined
Подскажите, пожалуйста, что делать?
И как можно организовать отправку ботом музыки без команды, просто по сообщению с названием?