当youtube上有直播时,视频播放器右侧总是有一个聊天窗口。我正试图从聊天下载消息到我的PHP页面,以便通过他们过滤,因为他们滚动得很快,我无法赶上他们。
我注意到,当你打开youtube页面与实时聊天它运行GET到这个URL每10秒
https://www.youtube.com/live_comments?action_get_comments=1&video_id=<video_id><=<timestamp of last recorded message>&format=proto&pd=10000&rc=26&scr=true&comment_version=1
如果我做了
$xml= file_get_contents('https://www.youtube.com/live_comments?action_get_comments=1&video_id=<video_id><=<timestamp of last recorded message>&format=proto&pd=10000&rc=26&scr=true&comment_version=1');
echo "<textarea>{$xml}</textarea>";
我得到以下
<?xml version="1.0" encoding="utf-8"?>
<root>
<latest_time>
<![CDATA[1445398692]]>
</latest_time>
<return_code>
<![CDATA[0]]>
</return_code>
<likes_data>
<![CDATA[{"percent_dislikes":7,"num_likes":"1,383","num_dislikes":"91","percent_likes":93}]]>
</likes_data>
<comments>
<![CDATA[EOcKGFsgkE4=]]>
</comments>
</root>
我认为这会让我出现新的消息,但我目前正在测试聊天,没有人在它,我不能确认。
也有POST请求每10秒,但我不试图张贴只是下载。
我的问题是我如何下载PHP现有的消息,显示在聊天,当你打开页面最初?
这不是一个足够的答案(没有PHP,没有代码…),但如果您对一个肮脏和简单的解决方案(抓取Youtube Live视频聊天作为JSON)感兴趣,您可以使用浏览器来完成。在Firefox:
- 在Firefox浏览器中加载视频url,在视频聊天窗口顶部。
- 选择"实时聊天回放",可以获得所有聊天信息。
- 暂停视频。 在FF菜单中选择"Web Developer Tools",然后选择"Network"。
- 标记"持久寄存器"复选框(可选)
- 只选择"XHR"并通过"live_chat_replay"过滤结果。
- 播放视频,让它行…
- 最后,再次暂停视频,在"网络"控制台的右上方找到并点击"HAR"选择器。
- 选择"Save all as HAR"
- 选择文件目的地并保存
- 在文本/代码编辑器中打开"HAR"文件(这是JSON的JSON) 用你喜欢的语言解析它。
- 干杯!