我一直想找到一种方法来获取youtube视频时长而不使用API。检查他们的HTML源代码,我看到有一个名为ytplayer.config的javascript var(带有关于视频的信息的JSON)。如何在脚本中解析JSON?
谢谢
编辑。这是var
ytplayer.config = {
"assets": {
"js": "\/\/s.ytimg.com\/yts\/jsbin\/player-es_MX-vfl0Fpy-X\/base.js",
"css": "\/\/s.ytimg.com\/yts\/cssbin\/www-player-2x-webp-vflCn1Mkc.css"
},
...
...
"args": {
"vm": "CAEQAA",
"cl": "115273808",
"iv_invideo_url": "https:\/\/www.youtube.com\/annotations_invideo?cap_hist=1\u0026video_id=tRY6WtFVtVY",
"tmi": "1",
"no_get_video_log": "1",
"host_language": "es-419",
"keywords": "Jorge,Lanata,TN,periodismo",
"author": "Tribuna de Periodistas",
...
"length_seconds": "130",
...
}
};
答案 0 :(得分:1)
你非常接近。你可以通过两种方式来做到这一点:
使用配置对象:
ytplayer.config.args.length_seconds
它以秒为单位提供视频时间,然后可以除以60以获得以分钟为单位的时间
第二种方式,使用jquery:
$('.ytp-time-duration').innerHTML
上述解决方案可以在客户端使用,如果您正在寻找服务器端解决方案,请告诉我们
用户输入URL后,将URL发送到您的服务器..使用任何后端语言,我用python告诉你。
import urllib
link = "https:<youtube url>"
f = urllib.urlopen(link)
myfile = f.read()
myfile包含所有html内容,你可以使用任何解析器来获取
的值YTP时间持续时间
希望有所帮助......