YouTube API可让用户获取评论Feed,例如通过https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published
。
但是,当我尝试使用实时流的视频ID时,无论提交了多少条评论,结果始终为空。实时视频和任何其他视频(或直播视频的录制)之间的唯一区别是“评论”部分被“聊天”框替换,其评论似乎无法通过API获得。
当流停止时,通过聊天框提交的所有评论都会“完全消失”,无法再访问。但是,在现场直播之后提交的所有评论都已存档(即录音已经可用)显示在评论摘要中。
对于实时应用程序,我需要在广播仍然有效时访问“聊天”评论,以检索用户提交的问题。
有没有办法做到这一点?
答案 0 :(得分:6)
现在可以使用LiveChatMessages
端点作为YouTube直播API的一部分,返回您自己的广播的聊天消息。
创建新的liveBroadcast
对象时,liveChatId
字符串将作为liveBroadcast
snippet
的一部分返回。将您广播的聊天ID传递到LiveChatMessages/list
端点的liveChatId
参数,将id
,snippet
和authorDetails
传递到{{ 1}}参数。
part
这将返回liveChatMessage
个资源的数组。实际的聊天消息包含在HTTP GET https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId={liveChatId}&part=id%2C+snippet%2C+authorDetails&key={YOUR_API_KEY}
字典中,作为textMessageDetails
密钥的值。
messageText
答案 1 :(得分:3)
Ibrahim Ulukaya是Google开发者关系团队的成员,专注于YouTube API,在类似的问题(How to get chat content of Youtube live event in Java)上说明如下:
此时API尚未与实时聊天建立联系。我们是 希望尽快将这些内容纳入API。
答案 2 :(得分:0)
我想出了一个基本脚本
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);
}
}
}
需要更多时间工作才能使其作为评论流程阅读页面。