2014-10-07 3 views
9

Mit der YouTube-API können Nutzer einen Kommentar-Feed erhalten, z. über https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published.Wie erhält man einen Feed mit Kommentaren, die während einer YouTube-Liveübertragung über das Feld "Chat" eingegeben wurden?

Wenn ich jedoch genau das mit der Video-ID eines Livestreams versuche, ist das Ergebnis immer leer, egal wie viele Kommentare gesendet wurden. Der einzige Unterschied zwischen einem Live-Video und einem anderen Video (oder der Aufnahme eines Livestreams) besteht darin, dass der Bereich "Kommentare" durch ein "Chat" -Box ersetzt wird, dessen Kommentare nicht über die API verfügbar zu sein scheinen.

Wenn der Stream angehalten wird, verschwinden alle Kommentare, die über die Chat-Box gesendet werden, vollständig und können nicht mehr aufgerufen werden. Alle Kommentare, die nach 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 Übertragung noch aktiv ist, um vom Benutzer gestellte Fragen abzurufen.

Gibt es eine Möglichkeit, dies zu tun?

+0

Für kurze Zeit können Sie https://www.youtube.com/live_chat?v=VID_ID&embed_domain=www.example.com verwenden Es funktioniert für eine Weile, aber am nächsten Tag wurden sie – netdragon

Antwort

4

Es ist jetzt möglich, Chatnachrichten für Ihre eigenen Übertragungen über den Endpunkt LiveChatMessages als Teil der YouTube Live Streaming API zurückzugeben.

Wenn ein neues Objekt zu erzeugen liveBroadcast, ein liveChatId String wird als Teil dieser liveBroadcast ‚s snippet zurückgegeben werden. Übergeben Sie die Chat-ID Ihres Broadcasts an den liveChatId-Endpunkt des LiveChatMessages/list, 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 wird eine Reihe von liveChatMessage Ressourcen zurück. Die eigentliche Chat-Nachricht ist im textMessageDetails Wörterbuch als Wert für den Schlüssel messageText enthalten.

"textMessageDetails": { 
    "messageText": string 
} 
+0

Könnten Sie bitte geben Sie eine C# -Methode dafür? – DarkPh03n1X

+0

@ DarkPh03n1X mit was hast du probleme? Die Webanfrage? Vielleicht solltest du eine neue Frage stellen. – JAL

+1

Warum sind nicht alle Sendungen verfügbar? Es gibt keine privaten Sendungen, oder? – DJV

0

kam ich mit einem Basic Script Für dieses

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



     } 
    } 
} 

Wird mehr Stunden arbeiten müssen, um es die Seite als die Kommentare Fluss Lesen zu machen.

+0

gegangen Warum sind Sie schreiben im Satzfall wie Jaden Smith? –

+0

Aber im Ernst, das ist wirklich nicht die beste Methode, dies zu tun. Es ist langsam, es ist sehr wahrscheinlich zu brechen, wenn sie ein Markup ändern, es wird nicht alle Kommentare erhalten, nur die sichtbaren, etc. –

+0

Ich tat dies tatsächlich mit googles API. als google's api es vor ein paar monaten unterstützt hat.Wie für Ihre erste Frage habe ich keine Idee, worüber Sie sprechen. – DarkPh03n1X

Verwandte Themen