2014-10-07 28 views
9

Interfejs API serwisu YouTube umożliwia użytkownikom uzyskanie kanału komentarzy, np. przez https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published.Jak uzyskać kanał z komentarzami wpisanymi w polu "czat" podczas transmisji na żywo w YouTube?

Jednak gdy próbuję to zrobić za pomocą identyfikatora wideo transmisji na żywo, wynik jest zawsze pusty, niezależnie od liczby przesłanych komentarzy. Jedyną różnicą między filmem na żywo i jakimkolwiek innym (lub nagrywaniem transmisji na żywo) jest zastąpienie sekcji "komentarze" polem "czat", którego komentarze wydają się nie być dostępne za pośrednictwem interfejsu API.

Po zatrzymaniu strumienia wszystkie komentarze przesłane za pośrednictwem czatu "znikają" całkowicie i nie można już uzyskać do nich dostępu. Jednak wszystkie komentarze przesłane po zakończeniu transmisji na żywo zostały zarchiwizowane (tzn. Nagranie zostało udostępnione) pojawią się w kanale komentarzy.

Dla aplikacji działającej w czasie rzeczywistym muszę uzyskać dostęp do komentarzy "czatu", gdy transmisja jest nadal dostępna, w celu pobrania pytań przesłanych przez użytkowników.

Czy jest jakiś sposób to zrobić?

+0

Przez krótki czas, można użyć https://www.youtube.com/live_chat?v=VID_ID&embed_domain=www.example.com Działa on przez jakiś czas, ale następnego dnia wyszli – netdragon

Odpowiedz

4

Możliwe jest obecnie zwracanie wiadomości na czacie za własnych emisji przy użyciu punktu końcowego LiveChatMessages w ramach interfejsu YouTube Live Streaming API.

Podczas tworzenia nowego liveBroadcast obiekt, o liveChatId String zostaną zwrócone w ramach że liveBroadcast „s snippet. Przekaż identyfikator czatu swojej transmisji do parametru LiveChatMessages/list punktu końcowego: liveChatId i id, snippet i authorDetails do parametru part.

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

Spowoduje to wyświetlenie tablicy zasobów liveChatMessage. Rzeczywisty komunikat na czacie znajduje się w słowniku textMessageDetails jako wartość klucza messageText.

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

Czy możesz podać metodę C#? – DarkPh03n1X

+0

@ DarkPh03n1X z czym masz problem? Żądanie internetowe? Może powinieneś zadać nowe pytanie. – JAL

+1

Dlaczego nie wszystkie transmisje są dostępne? Threre nie są prywatnymi transmisjami, prawda? – DJV

0

wymyśliłem ze scenariuszem podstawowym dla tej

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



     } 
    } 
} 

będą potrzebowały więcej godzin pracy, aby go przeczytać stronę jako komentarzach Flow.

+0

Dlaczego Are Piszesz w zdaniu podobnie jak Jaden Smith? –

+0

Ale tak naprawdę to nie jest najlepsza metoda. Jest powolny, bardzo prawdopodobne, że się zepsuje, gdy zmieni dowolny znacznik, nie będzie zawierał wszystkich komentarzy, tylko te widoczne, itp. –

+0

Tak naprawdę zrobiłem to za pomocą apelu Google. gdy aplet google obsługiwał to kilka miesięcy temu.Jak na Twoje pierwsze pytanie nie mam pojęcia, o czym mówisz. – DarkPh03n1X