Как получить фид комментариев, введенных через поле "чат" во время прямой трансляции YouTube?

API YouTube позволяет пользователям получать фид комментариев, например. через https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published.

Однако, когда я пытаюсь сделать именно это с идентификатором видео в реальном времени, результат всегда пуст, независимо от того, сколько комментариев было отправлено. Единственное различие между живым видео и любым другим видео (или записью в прямом эфире) заключается в том, что раздел "комментарии" заменяется полем "чат", комментарии которого, похоже, не доступны через API.

Когда поток остановлен, все комментарии, отправленные через окно чата, полностью исчезают и больше не могут быть доступны. Тем не менее, все комментарии, представленные после прямой трансляции, были заархивированы (т.е. Запись была доступна) отображаются в фиде комментариев.

Для приложения в реальном времени мне нужно получить доступ к комментариям чата, пока трансляция по-прежнему в прямом эфире, чтобы получить ответы на вопросы пользователей.

Есть ли способ сделать это?

Ответ 1

Теперь можно возвращать сообщения чата для своих собственных трансляций, используя конечную точку LiveChatMessages в рамках YouTube Live Streaming API.

При создании нового liveBroadcast объекта, то liveChatId строка будет возвращена как часть этого liveBroadcast snippet. Передайте свой идентификатор широковещательного чата в параметр LiveChatMessages/list endpoint liveChatId и id, snippet и authorDetails в параметр part.

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

Это вернет массив ресурсов liveChatMessage. Фактическое сообщение чата содержится в словаре textMessageDetails в качестве значения для ключа messageText.

"textMessageDetails": {
  "messageText": string
}

Ответ 2

Ибрагим Улукая, член команды разработчиков Google Developer Relations, посвященной YouTube API, заявил следующее по аналогичному quesiton (Как получить содержимое чата в прямом эфире Youtube в Java):

В настоящее время API не имеет подключения к чату. Мы надеясь вскоре получить этот контент, включенный в API.

через fooobar.com/questions/616192/...

Ответ 3

Я пришел с базовым Script для этого

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



        }
    }
}

Потребуется больше часов работы, чтобы заставить его читать страницу как поток комментариев.