Задать вопрос
@ar4ushman

Как исправить ошибку NameError: name 'get' is not defined в телеграм-боте?

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

Подскажите, пожалуйста, что делать?
И как можно организовать отправку ботом музыки без команды, просто по сообщению с названием?
  • Вопрос задан
  • 231 просмотр
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы