Ejemplo n.º 1
0
        public async Task UpdateVideoDescriptionAsync()
        {
            if (Video == null)
            {
                return;
            }

            using var descriptionBuilder = new StringWriter();
            foreach (var item in Items)
            {
                var tc = item.VideoTimeCode;
                descriptionBuilder.WriteLine($"{tc.Hours:00}:{tc.Minutes:00}:{tc.Seconds:00} - {item.Feedback.FeedbackStatus}: {item.Feedback.IssueTitle} {item.Feedback.FeedbackUrl}");
            }

            var description = descriptionBuilder.ToString()
                              .Replace("<", "(")
                              .Replace(">", ")");

            var service = await YouTubeServiceFactory.CreateAsync();

            var listRequest = service.Videos.List("snippet");

            listRequest.Id = Video.Id;
            var listResponse = await listRequest.ExecuteAsync();

            var video = listResponse.Items[0];

            video.Snippet.Description = description;

            var updateRequest = service.Videos.Update(video, "snippet");
            await updateRequest.ExecuteAsync();
        }
Ejemplo n.º 2
0
        public static async Task <ApiReviewVideo> GetAsync(string channelId, DateTimeOffset start, DateTimeOffset end)
        {
            var service = await YouTubeServiceFactory.CreateAsync();

            var result        = new List <Video>();
            var nextPageToken = "";

            var searchRequest = service.Search.List("snippet");

            searchRequest.ChannelId       = channelId;
            searchRequest.Type            = "video";
            searchRequest.EventType       = EventTypeEnum.Completed;
            searchRequest.PublishedAfter  = start.DateTime;
            searchRequest.PublishedBefore = end.DateTime;
            searchRequest.MaxResults      = 25;

            while (nextPageToken != null)
            {
                searchRequest.PageToken = nextPageToken;
                var response = await searchRequest.ExecuteAsync();

                var ids      = response.Items.Select(i => i.Id.VideoId);
                var idString = string.Join(",", ids);

                var videoRequest = service.Videos.List("snippet,liveStreamingDetails");
                videoRequest.Id = idString;
                var videoResponse = await videoRequest.ExecuteAsync();

                result.AddRange(videoResponse.Items);

                nextPageToken = response.NextPageToken;
            }

            var videos = result.Where(v => v.LiveStreamingDetails != null &&
                                      v.LiveStreamingDetails.ActualStartTime != null &&
                                      v.LiveStreamingDetails.ActualEndTime != null)
                         .Select(CreateVideo)
                         .OrderByDescending(v => v.Duration);

            return(videos.FirstOrDefault());
        }