有什么方法可以获取YouTube流视频的实时聊天重播日志/历史记录?

时间:2019-04-22 05:15:49

标签: youtube-api chat live-streaming livechat

最近,我正在研究在线聊天消息模式。我选择YouTube和Twitch.tv作为聊天消息的来源。

因此,我找到了用于实时实时流的聊天记录器,但是我还需要已播出的实时流的日志/历史记录,以允许实时聊天重播。 (如https://www.youtube.com/watch?v=1JfohG5a8y8

有用于Twitch.tv(RechatTool from jdpurcell)的工具,但我在YouTube上找不到类似的工具。

因此,我检查了 YouTube API for livestream messages,但找不到实时聊天重播的任何说明或提示。有没有可能的解决方案?

1 个答案:

答案 0 :(得分:11)

我知道这是一个很晚的回应,但它可能会对其他人有所帮助。我开发了一种工具,可以检索YouTube / Twitch聊天消息以获取过去的广播/ VOD。这是源代码的链接:

https://github.com/xenova/chat-replay-downloader

可以从命令行或python中的模块访问程序。 我还提供了指定开始时间和/或结束时间的功能-如果您不想下载整个聊天记录,该功能很有用。

对于每个消息,将检索以下数据:timestamp(unix微秒,例如1590865172190236),time_text(人类可读文本,例如4:00:00),time_in_seconds(时间(以秒为单位,例如14400),author(发送方的用户名)和message(实际消息)。


这是我的用法示例:

从命令行:

(1)给定URL的所有聊天消息的输出文件

python chat_replay_downloader.py <video_url> -output <file_name>

如果文件名以.json结尾,则数组将以JSON格式写入文件。否则,聊天消息将以以下格式输出到文件: [<time>] <author>: <message>

(2)聊天消息的输出文件,从一定时间(以秒为单位)开始直到结束

python chat_replay_downloader.py <video_url> -start_time <time_in_seconds> -output <file_name>

(3)聊天消息的输出文件,从开始到特定时间(以秒为单位)结束

python chat_replay_downloader.py <video_url> -end_time <time_in_seconds> -output <file_name>

(4)聊天消息的输出文件,在某些时间(以秒为单位)开始和结束

python chat_replay_downloader.py <video_url> -start_time <time_in_seconds> -end_time <time_in_seconds> -output <file_name>

示例输出:

JSON Example

python chat_replay_downloader.py https://www.youtube.com/watch?v=pMsvr55cTZ0 -start_time 14400 -end_time 15000 -output example.json

CSV Example

python chat_replay_downloader.py https://www.youtube.com/watch?v=pMsvr55cTZ0 -start_time 14400 -end_time 15000 -output example.csv

Text Example

python chat_replay_downloader.py https://www.youtube.com/watch?v=pMsvr55cTZ0 -start_time 14400 -end_time 15000 -output example.txt

Python模块

导入模块:

import chat_replay_downloader

from chat_replay_downloader import get_chat_replay, get_youtube_messages, get_twitch_messages

以下示例将使用第二种导入方式。

示例:

(1)返回给定视频URL的所有聊天消息的列表:

youtube_messages = get_chat_replay('https://www.youtube.com/watch?v=xxxxxxxxxxx')
twitch_messages = get_chat_replay('https://www.twitch.tv/videos/xxxxxxxxx')

(2)返回给定视频ID的所有聊天消息的列表

youtube_messages = get_youtube_messages('xxxxxxxxxxx')
twitch_messages = get_twitch_messages('xxxxxxxxx')

以下示例使用了所有三种方法(get_chat_replay, get_youtube_messages,get_twitch_messages)。以下两个参数都是可选的:

  • start_time:以秒为单位的开始时间(默认为0,即开始时间 的视频)
  • end_time:结束时间(以秒为单位)(默认为None,该值为 表示它将一直持续到视频结束)

(3)返回从特定时间(以秒为单位)开始的聊天消息列表

messages = get_chat_replay('video_url', start_time = 60) # Start at 60 seconds and continue until the end

(4)返回聊天消息列表,该列表在特定时间(以秒为单位)结束

messages = get_chat_replay('video_url', end_time = 60) # Start at 0 seconds (beginning) and end at 60 seconds

(5)返回聊天消息列表,在某些时间(以秒为单位)开始和结束

messages = get_chat_replay('video_url', start_time = 60, end_time = 120) # Start at 60 seconds and end at 120 seconds