web-dev-qa-db-fra.com

Comment obtenir un flux de commentaires saisis via la "boîte de dialogue" lors d'une diffusion en direct sur YouTube?

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?

10
Marcus Wernicke

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
}
6
JAL

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.

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

3
JSuar

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.

0
DarkPh03n1X