问题描述
目前我正在使用 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 是怎么做这个解析得到Meta和mrl的?
那么如何在不使用巨大开销的情况下执行与我的 LibVLC-Code 相同的操作?
希望有基于 urllib
的工作解决方案或其他解决方案。
非常感谢! :-)
可能重复:How to parse YouTube and Soundcloud with python and LibVLC?
解决方法
经过一些测试,我决定使用 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'])