如何在YouTube直播期间获取通过“聊天”框input的评论的提要?

YouTube API使用户可以获取评论供稿,例如,通过https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published

但是,当我尝试使用实时stream的videoID进行处理时,无论提交了多less条评论,结果都是空的。 实时video和其他任何video(或实时stream的录制)之间的唯一区别在于,“评论”部分被replace为“聊天”框,其评论似乎无法通过API获得。

当stream停止时,通过聊天框提交的所有评论“完全消失”,不能再被访问。 然而,现场直播后提交的所有评论已经被存档(即已经提供了录制内容)。

对于实时应用程序,我需要在广播仍然有效时访问“聊天”评论,以检索用户提交的问题。

有没有办法做到这一点?

现在可以使用LiveChatMessages端点作为YouTube直播streamAPI的一部分为您自己的广播返回聊天消息。

当创build一个新的liveBroadcast对象时, liveChatId String将作为liveBroadcastsnippet一部分被返回。 将广播的聊天ID传递给LiveChatMessages/list端点的liveChatId参数,以及idsnippetauthorDetailspart参数中。

 HTTP GET https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId={liveChatId}&part=id%2C+snippet%2C+authorDetails&key={YOUR_API_KEY} 

这将返回一个liveChatMessage资源数组。 实际的聊天消息作为messageText键的值包含在textMessageDetails字典中。

 "textMessageDetails": { "messageText": string } 

谷歌的开发者关系团队成员,关注YouTube API的成员易卜拉欣·乌鲁卡亚 ( Ibrahim Ulukaya)就类似的问题( 如何获得Java中的Youtube直播活动的聊天内容 )说:

这个API现在没有连接到实时聊天。 我们希望尽快将这些内容整合到API中。

通过https://stackoverflow.com/a/26427743/1085891

我为此提出了一个基本脚本

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.IO; using System.Text.RegularExpressions; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace test { public partial class Form1 : Form { public Form1() { InitializeComponent(); Starting(); } public void Starting() { IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://www.youtube.com/watch?v=Yu5Om0SH3No"); Thread.Sleep(10000); //Find Comments IWebElement element = driver.FindElement(By.ClassName("comment-text")); Console.WriteLine("Text: " + element.Text); //Find User names IWebElement element2 = driver.FindElement(By.XPath(".//*[@class='g-hovercard yt-uix-sessionlink yt-user-name']")); Console.WriteLine("Username: " + element2.Text); } } } 

将需要更多小时的工作,使其作为评论stream读取页面。