wake-up-neo.com

Wie erhalte ich einen Feed mit Kommentaren, die während einer YouTube-Live-Übertragung über das Feld "Chat" eingegeben wurden?

Mit der YouTube-API können Benutzer einen Kommentar-Feed abrufen, z. über https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published.

Wenn ich jedoch versuche, genau das mit der Video-ID eines Live-Streams zu tun, ist das Ergebnis immer leer, egal wie viele Kommentare eingereicht wurden. Der einzige Unterschied zwischen einem Live-Video und einem anderen Video (oder der Aufzeichnung eines Live-Streams) besteht darin, dass der Abschnitt "Kommentare" durch ein "Chat" -Feld ersetzt wird, dessen Kommentare scheinbar nicht über die API verfügbar sind.

Wenn der Stream gestoppt wird, verschwinden alle Kommentare, die über das Chat-Feld gesendet werden, vollständig und es kann nicht mehr auf sie zugegriffen werden. Alle Kommentare, die nach der Archivierung der Live-Übertragung eingereicht wurden (d. H. Die Aufzeichnung wurde verfügbar gemacht), werden jedoch im Kommentar-Feed angezeigt.

Für eine Echtzeitanwendung muss ich auf die "Chat" -Kommentare zugreifen, während die Sendung noch live ist, um vom Benutzer eingereichte Fragen abzurufen.

Gibt es eine Möglichkeit, dies zu tun?

10
Marcus Wernicke

Es ist jetzt möglich, Chat-Nachrichten für Ihre eigenen Broadcasts über den Endpunkt LiveChatMessages als Teil der YouTube Live Streaming-API zurückzugeben.

Beim Erstellen eines neuen liveBroadcast-Objekts wird eine liveChatId-Zeichenfolge als Teil der liveBroadcast der snippet zurückgegeben. Übergeben Sie die Chat-ID Ihres Broadcasts an den Parameter liveChatId des LiveChatMessages/list-Endpunkts und id, snippet und authorDetails an den Parameter part.

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

Dies gibt ein Array von liveChatMessage resources zurück. Die eigentliche Chat-Nachricht ist im textMessageDetails-Wörterbuch als Wert für den messageText-Schlüssel enthalten.

"textMessageDetails": {
  "messageText": string
}
6
JAL

Ibrahim Ulukaya , ein Mitglied des Google Developer Relations-Teams, das sich auf die YouTube-API konzentriert, äußerte sich zu einer ähnlichen Frage ( So erhalten Sie Chat-Inhalte von Youtube-Live-Events in Java ):

Die API hat momentan keine Verbindung zum Live-Chat. Wir hoffen, dass der Inhalt bald in die API aufgenommen werden kann.

über https://stackoverflow.com/a/26427743/1085891

3
JSuar

Dafür habe ich ein Basic Script erstellt

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



        }
    }
}

Benötigt mehr Arbeitsstunden, um die Seite lesen zu lassen, während der Kommentarfluss angezeigt wird.

0
DarkPh03n1X