After creating a project from developer console you can try to following this tutorial (in french), at the bottom there is the complete fuction for reporting everything from the Youtube API analytics.
here is the function to get data from both Youtube API and Youtube analytics API
don't forget to add your client_secrets.json to your \bin\Debug\netcoreapp3.1
public async void FetchYoutubeAnalyticsAPI()
{
UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { YouTubeService.Scope.YoutubeReadonly },
"user",
CancellationToken.None
);
}
var youTubeAnalyticsService = new YouTubeAnalyticsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
var request = youTubeAnalyticsService.Reports.Query();
request.StartDate = ("2019-01-01");
request.EndDate = ("2020-09-30");
request.Ids = ("channel==UCmLQ3sdAd6CypJIne5ZANaA");
request.Metrics = ("views,comments,likes,dislikes,estimatedMinutesWatched,averageViewDuration");
QueryResponse requestquery = request.Execute();
List<int> myChannelDataList = new List<int>();
int listsize = 0;
foreach (object obj in requestquery.Rows[0])
{
int value = Convert.ToInt32(obj);
myChannelDataList.Add(value);
/* Debug.WriteLine("Value : " + value);
Debug.WriteLine("LISTE / " + myChannelDataList[0]);
Debug.WriteLine("Count : " + myChannelDataList.Count);*/
listsize = myChannelDataList.Count;
}
List<string> metrics = new List<string> { "Vues", "Commentaires", "Likes", "Dislike", "Minutes", "MoyenneTemps" };
for (int i = 0; i < listsize; i++)
{
Label labels = new Label();
labels.Top = (i + 4) * 20;
labels.Left = 100;
labels.AutoSize = true;
labels.TextAlign = ContentAlignment.MiddleLeft;
labels.Text = metrics[i] + " :" + myChannelDataList[i].ToString();
this.Controls.Add(labels);
}
// https://developers.google.com/youtube/v3/docs/channels/list
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
var requestSub = youtubeService.Channels.List("statistics");
requestSub.Mine = (true);
ChannelListResponse responsesub = requestSub.Execute();
foreach (var sresults in responsesub.Items)
{
var substats = sresults.Statistics;
var subcount = substats.SubscriberCount;
var viewCount = substats.ViewCount;
var videoCount = substats.VideoCount;
var commentsCount = substats.CommentCount;
Debug.WriteLine("SubCount : " + subcount);
Label labels = new Label();
labels.Top = 16;
labels.Left = 280;
labels.AutoSize = true;
labels.TextAlign = ContentAlignment.MiddleLeft;
labels.Text = "Subs :" + subcount;
this.Controls.Add(labels);
}
}
