/// <summary> /// LiveChat mesajlarını al /// </summary> /// <param name="liveChatId"></param> /// <param name="videoId"></param> /// <param name="cancellationToken"></param> /// <param name="progress"></param> /// <returns></returns> public async Task GetLiveChatsAsync(string liveChatId, string videoId, CancellationToken cancellationToken, IProgress <ReportChatModel> progress) { try { var isOnline = true; while (isOnline) { var nextPage = ""; var requestList = "id,snippet,authorDetails"; while (nextPage != null) { var report = new ReportChatModel(); var output = new LinkedList <LiveChatModel>(); var request = _service.LiveChatMessages.List(liveChatId, requestList); request.MaxResults = 1000; request.PageToken = nextPage; var response = await request.ExecuteAsync(cancellationToken); foreach (LiveChatMessage item in response.Items) { try { cancellationToken.ThrowIfCancellationRequested(); } catch (OperationCanceledException e) { //MessageBox.Show(e.Message); } var chat = new LiveChatModel { MessageId = item.Id, PublishedAt = item.Snippet.PublishedAt?.ToString() ?? "", PublishedTime = item.Snippet.PublishedAt, AuthorChannelUrl = item.AuthorDetails.ChannelUrl, DisplayMessage = item.Snippet.DisplayMessage, AuthorDisplayName = item.AuthorDetails.DisplayName, IsVerified = item.AuthorDetails.IsVerified ?? false, IsChatModerator = item.AuthorDetails.IsChatModerator ?? false, IsChatOwner = item.AuthorDetails.IsChatOwner ?? false, IsChatSponsor = item.AuthorDetails.IsChatSponsor ?? false, AuthorChannelId = item.Snippet.AuthorChannelId, LiveChatId = item.Snippet.LiveChatId, VideoId = videoId }; output.AddLast(chat); } report.LiveChats = output; report.PollingIntervalMillis = response.PollingIntervalMillis; progress.Report(report); nextPage = response.NextPageToken; isOnline = !response.OfflineAt.HasValue; var wait = Convert.ToInt32(response.PollingIntervalMillis ?? 10000); await Task.Delay(wait, cancellationToken); } } } catch (Exception ex) { if (!ex.Message.Contains("iptal")) { MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private async void ReportProgress2(object sender, ReportChatModel e) { RequestCount++; await SaveChatsToDatabase2(e.LiveChats, e.PollingIntervalMillis); }