PHP提取youtube实时聊天


PHP Extract youtube live chat

当youtube上有直播时,视频播放器右侧总是有一个聊天窗口。我正试图从聊天下载消息到我的PHP页面,以便通过他们过滤,因为他们滚动得很快,我无法赶上他们。

我注意到,当你打开youtube页面与实时聊天它运行GET到这个URL每10秒

https://www.youtube.com/live_comments?action_get_comments=1&video_id=<video_id>&lt=<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>&lt=<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:

  1. 在Firefox浏览器中加载视频url,在视频聊天窗口顶部。
  2. 选择"实时聊天回放",可以获得所有聊天信息。
  3. 暂停视频。
  4. 在FF菜单中选择"Web Developer Tools",然后选择"Network"。
  5. 标记"持久寄存器"复选框(可选)
  6. 只选择"XHR"并通过"live_chat_replay"过滤结果。
  7. 播放视频,让它行…
  8. 最后,再次暂停视频,在"网络"控制台的右上方找到并点击"HAR"选择器。
  9. 选择"Save all as HAR"
  10. 选择文件目的地并保存
  11. 在文本/代码编辑器中打开"HAR"文件(这是JSON的JSON)
  12. 用你喜欢的语言解析它。
  13. 干杯!