python - 从 YouTube、SoundCloud 和其他平台获取元数据和 MRL
问题描述
目前我正在使用 LibVLC 来获取在线视频和音乐的元数据和MRL。
但这只是为了获取这些信息而产生的很多愚蠢的开销。
...
from vlc import Instance as vlcInstance, MediaList, MediaListPlayer, Event, EventType, State
...
self.player = MediaListPlayer(vlcInstance(options))
...
self.list = MediaList(self._mrls)
self.player.set_media_list(self.list)
...
media = self.player.get_media_player().get_media()
if media.get_meta(1) is not None and self.trackChangedEventCallback is not None:
self.trackChangedEventCallback(
media.get_meta(0), # Title
media.get_meta(1), # Artist
media.get_meta(6), # Description
media.get_meta(10), # URL
media.get_meta(15) # Artlink
)
print(media.get_mrl()) # MRL
...
当然,有针对不同平台的包,但我不想用另一种替换一个愚蠢的开销。我快速浏览了 VLC 的 youtube.lua 脚本,但我没有找到一个好主意。LibVLC 如何进行这种解析以获取元数据和 mrl?
网络抓取是另一个想法,但在这一点上对我来说似乎不是很可靠。
那么如何在不使用巨大开销的情况下做与我的 LibVLC 代码相同的操作呢?希望有一个urllib
基于工作的解决方案或其他东西。
解决方案
经过一些测试,我决定使用youtube_dl,因为它非常易于使用并且支持很多平台:http: //ytdl-org.github.io/youtube-dl/supportedsites.html
这是我的示例代码:
#!/usr/bin/env python3
import youtube_dl as ydl
url = "https://www.youtube.com/watch?v=6qEzh3wKVJc"
with ydl.YoutubeDL(
{
"forcejson": True,
"noplaylist": True,
"format": "bestaudio"
}
) as parser:
meta = parser.extract_info(
url,
download=False
)
print(meta['thumbnail'])
print(meta['title'])
print(meta['url'])
推荐阅读
- html - 有没有办法在 Rails 上混合纯文本和 HTML 电子邮件?
- java - 泛型参数的实例
- saxon - Download of Saxonica for .NET has .jar files
- json - 角料表行点击可在同一页面的表下显示更多信息
- python - 熊猫数据框将列识别为具有特定格式的日期
- python - python中函数名的长度有限制吗?
- mysql - 如何将 Google Cloud SQL 数据库连接到 Minecraft 的 CoreProtect 插件?
- sql - 完全外部自我加入不同日期的数据
- matlab - 在 MATLAB 中保存大量数据的最佳方法
- excel - Excel 使用数据模型补充我的跟踪表