Come ottenere un feed di commenti inseriti attraverso la casella “chat” durante una trasmissione live di YouTube?

L’API di YouTube consente agli utenti di ottenere un feed di commenti, ad esempio tramite https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published .

Tuttavia, quando provo a farlo con l’ID video di uno streaming live, il risultato è sempre vuoto, indipendentemente dal numero di commenti inviati. L’unica differenza tra un video live e qualsiasi altro video (o la registrazione di un live stream) è che la sezione “commenti” viene sostituita con una casella “chat”, i cui commenti sembrano non essere disponibili tramite l’API.

Quando il stream viene interrotto, tutti i commenti inviati tramite la casella di chat “scompaiono” completamente e non è più ansible accedervi. Tuttavia, tutti i commenti inviati dopo che la trasmissione dal vivo è stata archiviata (ovvero la registrazione è stata resa disponibile) appaiono nel feed dei commenti.

Per un’applicazione in tempo reale ho bisogno di accedere ai commenti della chat mentre la trasmissione è ancora in diretta, per recuperare le domande inviate dagli utenti.

C’è un modo per fare questo?

    Ora è ansible restituire messaggi di chat per le proprie trasmissioni utilizzando l’endpoint LiveChatMessages come parte dell’API di YouTube Live Streaming.

    Quando si crea un nuovo object liveBroadcast , una stringa liveChatId verrà restituita come parte dello snippet di tale liveBroadcast . Passa l’ID della chat della tua trasmissione a LiveChatMessages/list il parametro liveChatId dell’endpoint e id , snippet e authorDetails nel parametro della part .

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

    Ciò restituirà una matrice di risorse liveChatMessage . Il messaggio chat effettivo è contenuto nel dizionario textMessageDetails come valore per la chiave messageText .

     "textMessageDetails": { "messageText": string } 

    Ibrahim Ulukaya , un membro del team di Relazioni con gli sviluppatori di Google che si concentra sull’API di YouTube, ha dichiarato quanto segue in un quesito simile ( Come ottenere il contenuto della chat dell’evento live di YouTube in Java ):

    L’API non ha connessione alla live chat in questo momento. Speriamo di ottenere presto il contenuto incorporato nell’API.

    tramite https://stackoverflow.com/a/26427743/1085891

    Mi sono inventato uno script base per questo

     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); } } } 

    Avrà bisogno di più ore di lavoro per fargli leggere la pagina come stream di commenti.