L'API YouTube permet aux utilisateurs d'obtenir un flux de commentaires, par exemple. via https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published
.
Cependant, lorsque j'essaie justement de faire cela avec l'ID vidéo d'un flux en direct, le résultat est toujours vide, quel que soit le nombre de commentaires soumis. La seule différence entre une vidéo en direct et toute autre vidéo (ou l'enregistrement d'un flux en direct) est que la section "commentaires" est remplacée par une zone de "discussion", dont les commentaires ne semblent pas être disponibles via l'API.
Lorsque le flux est arrêté, tous les commentaires soumis via la boîte de discussion "disparaissent" entièrement et ne sont plus accessibles. Cependant, tous les commentaires soumis après l’archivage de la diffusion en direct (c’est-à-dire que l’enregistrement est disponible) apparaissent dans le fil des commentaires.
Pour une application en temps réel, je dois accéder aux commentaires de "discussion" pendant la diffusion en direct, afin de récupérer les questions soumises par les utilisateurs.
Y a-t-il un moyen de faire ça?
Il est maintenant possible de renvoyer des messages de discussion pour vos propres émissions à l'aide du LiveChatMessages
endpoint dans le cadre de l'API YouTube Live Streaming.
Lors de la création d'un nouvel objet liveBroadcast
, une chaîne liveChatId
sera renvoyée dans le cadre de liveBroadcast
's snippet
. Transmettez l'ID de discussion de votre diffusion au paramètre liveChatId
du LiveChatMessages/list
endpoint et aux id
, snippet
et authorDetails
au paramètre part
.
HTTP GET https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId={liveChatId}&part=id%2C+snippet%2C+authorDetails&key={YOUR_API_KEY}
Cela retournera un tableau de liveChatMessage
resources. Le message de discussion réel est contenu dans le dictionnaire textMessageDetails
en tant que valeur de la clé messageText
.
"textMessageDetails": {
"messageText": string
}
Ibrahim Ulukaya , membre de l’équipe des relations avec les développeurs de Google spécialisée dans l’API YouTube, a déclaré ce qui suit sur une question similaire ( Comment obtenir le contenu du chat d’un événement Youtube en direct ):
L'API n'a pas de connexion pour discuter en direct en ce moment. Nous espérons que ce contenu sera bientôt intégré à l'API.
Je suis venu avec un script de base pour cette
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);
}
}
}
Il faudra plus d’heures de travail pour le faire lire la page sous forme de flux de commentaires.