如何解决使用youtube-dl搜索YouTube视频
我正在尝试构建Discord Music Bot,并且需要使用用户指定的关键字搜索YouTube。目前,我知道如何通过网址播放。
loop = loop or asyncio.get_event_loop()
data = await loop.run_in_executor( None,lambda: ytdl.extract_info(url,download=not stream))
if "entries" in data:
data = data["entries"][0]
filename = data["url"] if stream else ytdl.prepare_filename(data)
return cls(discord.FFmpegPCMAudio(filename,**ffmpeg_options),data=data)
解决方法
Youtube_DL具有可以使用的extract_info
方法。不必给它链接,您只需像这样传递ytsearch:args
:
from requests import get
from youtube_dl import YoutubeDL
YDL_OPTIONS = {'format': 'bestaudio','noplaylist':'True'}
def search(arg):
with YoutubeDL(YDL_OPTIONS) as ydl:
try:
get(arg)
except:
video = ydl.extract_info(f"ytsearch:{arg}",download=False)['entries'][0]
else:
video = ydl.extract_info(arg,download=False)
return video
此功能的一些重要事项:
- 它同时适用于单词和网址
- 如果您进行youtube搜索,输出将是字典列表。在这种情况下,它将返回第一个结果
- 它将返回一个包含以下信息的字典:
video_infos = search("30 sec video") #Doesn't contain all the data,some keys are not very important cleared_data = { 'channel': video['uploader'],'channel_url': video['uploader_url'],'title': video['title'],'description': video['description'],'video_url': video['webpage_url'],'duration': video['duration'],#in seconds 'upload_date': video['upload_data'],#YYYYDDMM 'thumbnail': video['thumbnail'],'audio_source': video['formats'][0]['url'],'view_count': video['view_count'],'like_count': video['like_count'],'dislike_count': video['dislike_count'],}
我不确定youtube-dl是否适合使用关键字搜索youtube网址。为此,您可能应该看看youtube-search。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。