我正在尝试创建一个电报机器人,并且正在使用一个将视频下载为 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.")
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.")