使用 youtube-dl 搜索 Youtube 视频

Posted

技术标签:

【中文标题】使用 youtube-dl 搜索 Youtube 视频【英文标题】:Searching Youtube videos using youtube-dl 【发布时间】:2020-08-13 04:54:33 【问题描述】:

我正在尝试构建一个 Discord 音乐机器人,我需要使用用户提供的关键字搜索 YouTube。目前我知道如何从 url 播放。

       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)

【问题讨论】:

【参考方案1】:

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'],

【讨论】:

【参考方案2】:

我不确定 youtube-dl 是否适合使用关键字搜索 youtube 网址。你应该看看youtube-search。

【讨论】:

以上是关于使用 youtube-dl 搜索 Youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章

youtube-dl是否仍然可以使用(最新版本youtube-dl-2020.2.16)?

youtube-dl 使用小记

如何使用 ffplay 和 youtube-dl 在终端中播放 youtube 歌曲

通过 php 使用 youtube-dl 时出现 Python ImportError

使用youtube-dl和yt-dlp下载视频!

sh youtube-dl使用shadowsocks