如何在电报机器人中发送音频?

问题描述 投票:0回答:1

我正在尝试创建一个电报机器人,并且正在使用一个将视频下载为 mp3 的 API,因此当用户发送视频 URL 时,我会向他发送 mp3 文件以便他可以流式传输或下载,尽管一切正常,但机器人总是返回:

“抱歉,我无法转换视频。请使用有效的 YouTube 网址重试”

这是我正在使用的代码:

async def convert_to_mp3(update, context):
    # Get the message text
    message_text = update.message.text
    
    # Check if the message contains a YouTube URL
    if 'youtube.com' in message_text or 'youtu.be' in message_text:
        # API endpoint and headers
        url = "https://youtube-mp315.p.rapidapi.com/"
        headers = {
            "X-RapidAPI-Key": "rapidAPI-Key",
            "X-RapidAPI-Host": "youtube-mp315.p.rapidapi.com"
        }
        
        # Query parameters
        querystring = {"url": message_text}

        # Making the API call
        response = requests.get(url, headers=headers, params=querystring)
        data = response.json()
        print("API Response:", data)  # Debugging


        # Check if the response contains the MP3 URL
        if 'url' in data:
            await update.message.reply_audio(data['url'])
        else:
            await update.message.reply_text("Sorry, I couldn't convert the video. Please try again with a valid YouTube URL.")
    else:
        await update.message.reply_text("Please send a valid YouTube video URL.")
python telegram
1个回答
0
投票

1- 将

update.message.reply_audio(data['url'])
更改为
update.message.reply_audio(data['result'][0]['url'])
以将 URL 作为示例 JSON 响应发送,如下所示:

{
'result':
    [
        {
        'status': 'true',
        'title': "Doston Ergashev - Ko'zmunchog'im | Достон Эргашев - Кузмунчогим",
        'channel': 'RizaNovaUZ',
        'duration': '5:47',
        'thumbnail': 'https://i.ytimg.com/vi/WVl6g5hvcDA/hqdefault.jpg',
        'url': 'https://dl01.yt-dl.click/api/stream?t=vmJiaO1pJVwMQXdV2F6cW&e=1715256371785&h=0M0zBAtRD1Xqy-9kqWQvgq7gbWCiteYI3D_75S9ZwaE&s=HDMRIY6WQQS-QeLknpN2bfIahvqOOYA9sbfVd9D_Rus&i=zlJRum6WIGJrebZNOm_Zng'
        }
    ]
}

2-如果找不到视频,代码将输出“None”,因此将 if 语句更改为:

if url != "None":
    await update.message.reply_audio(data['result'][0]['url'])
else:
    await update.message.reply_text("Sorry, I couldn't convert the video. Please try again with a valid YouTube URL.")
© www.soinside.com 2019 - 2024. All rights reserved.