从开发者控制台创建项目后,您可以尝试关注this tutorial(法语),底部有完整的功能,用于报告来自 Youtube API 分析的所有内容。
这是从 Youtube API 和 Youtube 分析 API 获取数据的函数
不要忘记将你的 client_secrets.json 添加到你的 \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);
}
}