The YouTube API enables users to obtain a comments feed, e.g. via https://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?orderby=published
.
Howeve
Ibrahim Ulukaya, a member of Google's Developer Relations team focusing on the YouTube API, stated the following on a similar quesiton (How to get chat content of Youtube live event in Java):
The API doesn't have connection to live chat at this moment. We are hoping to get that content incorporated into API soon.
via https://stackoverflow.com/a/26427743/1085891
I came Up with a Basic Script for this
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);
}
}
}
Will Need More Hours Of Work To Make It Read the Page as The Comments Flow.
It is now possible to return chat messages for your own broadcasts using the LiveChatMessages endpoint as part of the YouTube Live Streaming API.
When creating a new liveBroadcast
object, a liveChatId
String will be returned as part of that liveBroadcast
's snippet
. Pass your broadcast's chat ID to LiveChatMessages/list
endpoint's liveChatId
parameter, and id
, snippet
, and authorDetails
into the part
parameter.
HTTP GET https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId={liveChatId}&part=id%2C+snippet%2C+authorDetails&key={YOUR_API_KEY}
This will return an array of liveChatMessage resources. The actual chat message is contained in the textMessageDetails
dictionary as the value for the messageText
key.
"textMessageDetails": {
"messageText": string
}