能否用yt-dlp/youtube-dl搜索music.youtube.com?Python实现问询
解决方案
一、Shell命令直接实现
1. 直接搜索YouTube Music
yt-dlp原生支持YouTube Music的搜索,只需将搜索前缀从ytsearch:替换为ytmsearch:,命令如下:
yt-dlp ytmsearch:"your song query"
该命令会直接在music.youtube.com上检索内容,返回结果均为官方音乐视频、专辑曲目等音乐类资源。
2. 在YouTube.com上筛选音乐视频
如果想在普通YouTube搜索中仅获取音乐类视频,可在搜索关键词后添加filter:music筛选参数:
yt-dlp ytsearch:"your song query filter:music"
YouTube会自动过滤出标记为音乐的视频内容,结果更偏向官方发布的音乐资源。
二、Python代码实现(适配Discord机器人开发)
若需在Python项目中集成该功能,直接调用yt-dlp的Python API即可,步骤如下:
1. 安装依赖
先确保安装yt-dlp的Python包:
pip install yt-dlp
2. 搜索YouTube Music的示例代码
import yt_dlp def search_youtube_music(query): ydl_opts = { 'quiet': True, # 关闭冗余日志输出 'skip_download': True, # 仅获取资源信息不下载 'format': 'bestaudio/best', # 优先获取音频格式资源 } with yt_dlp.YoutubeDL(ydl_opts) as ydl: # 使用ytmsearch前缀指定搜索源为YouTube Music info = ydl.extract_info(f'ytmsearch:{query}', download=False) # 提取第一个搜索结果的关键信息 if 'entries' in info: first_result = info['entries'][0] return { 'title': first_result['title'], 'webpage_url': first_result['webpage_url'], 'audio_url': first_result['url'] } return None # 调用示例 result = search_youtube_music("your song query") if result: print(f"找到歌曲:{result['title']},音频链接:{result['audio_url']}")
3. 在YouTube上筛选音乐视频的示例代码
只需将搜索前缀改为ytsearch:并添加filter:music参数:
import yt_dlp def search_youtube_filter_music(query): ydl_opts = { 'quiet': True, 'skip_download': True, 'format': 'bestaudio/best', } with yt_dlp.YoutubeDL(ydl_opts) as ydl: # 添加filter:music参数筛选音乐视频 info = ydl.extract_info(f'ytsearch:{query} filter:music', download=False) if 'entries' in info: first_result = info['entries'][0] return { 'title': first_result['title'], 'webpage_url': first_result['webpage_url'], 'audio_url': first_result['url'] } return None # 调用示例 result = search_youtube_filter_music("your song query") if result: print(f"找到音乐视频:{result['title']},音频链接:{result['audio_url']}")
注意事项
- 可根据Discord机器人需求调整
ydl_opts参数,比如添加postprocessors配置将音频转成mp3格式。 - 建议增加异常捕获逻辑,避免因网络问题或无搜索结果导致机器人崩溃。
内容的提问来源于stack exchange,提问作者berinaniesh
相关产品推荐
相关产品推荐

