Как получить фид комментариев, введенных через поле "чат" во время прямой трансляции YouTube?
API YouTube позволяет пользователям получать фид комментариев, например. через https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published
.
Однако, когда я пытаюсь сделать именно это с идентификатором видео в реальном времени, результат всегда пуст, независимо от того, сколько комментариев было отправлено. Единственное различие между живым видео и любым другим видео (или записью в прямом эфире) заключается в том, что раздел "комментарии" заменяется полем "чат", комментарии которого, похоже, не доступны через API.
Когда поток остановлен, все комментарии, отправленные через окно чата, полностью исчезают и больше не могут быть доступны. Тем не менее, все комментарии, представленные после прямой трансляции, были заархивированы (т.е. Запись была доступна) отображаются в фиде комментариев.
Для приложения в реальном времени мне нужно получить доступ к комментариям чата, пока трансляция по-прежнему в прямом эфире, чтобы получить ответы на вопросы пользователей.
Есть ли способ сделать это?
Ответы
Ответ 1
Теперь можно возвращать сообщения чата для своих собственных трансляций, используя конечную точку LiveChatMessages
в рамках YouTube Live Streaming API.
При создании нового liveBroadcast
объекта, то liveChatId
строка будет возвращена как часть этого liveBroadcast
snippet
. Передайте свой идентификатор широковещательного чата в параметр LiveChatMessages/list
endpoint liveChatId
и id
, snippet
и authorDetails
в параметр part
.
HTTP GET https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId={liveChatId}&part=id%2C+snippet%2C+authorDetails&key={YOUR_API_KEY}
Это вернет массив ресурсов liveChatMessage
. Фактическое сообщение чата содержится в словаре textMessageDetails
в качестве значения для ключа messageText
.
"textMessageDetails": {
"messageText": string
}
Ответ 2
Ибрагим Улукая, член команды разработчиков Google Developer Relations, посвященной YouTube API, заявил следующее по аналогичному quesiton (Как получить содержимое чата в прямом эфире Youtube в Java):
В настоящее время API не имеет подключения к чату. Мы надеясь вскоре получить этот контент, включенный в API.
через fooobar.com/questions/616192/...
Ответ 3
Я пришел с базовым Script для этого
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);
}
}
}
Потребуется больше часов работы, чтобы заставить его читать страницу как поток комментариев.