/// <summary> /// The meat. Hier wird Youtube aufgerufen. /// </summary> /// <returns></returns> private async Task <ShowList> GetShowsList() { //YoutubeService ist eine .NET Youtube API um mit Youtube arbeiten zu können using (var client = new YouTubeService(new BaseClientService.Initializer { ApplicationName = _appSettings.YouTubeApplicationName, //_appSettings.YouTubeApiKey kommt von den Secrets oder der Environment //Populated vom Configurationsystem und das widerum kann von der Environment oder den Appsettings konfiguriert sein. ApiKey = _appSettings.YouTubeApiKey })) { var listRequest = client.PlaylistItems.List("snippet"); //alles was ich über eine Youtubeliste wissen will listRequest.PlaylistId = _appSettings.YouTubePlaylistId; //Nichts secret, das sieht man in der URL listRequest.MaxResults = 3 * 8; var requestStart = DateTimeOffset.UtcNow; var playlistItems = await listRequest.ExecuteAsync(); //Wie lange dauert der Aufruf nach Youtube.. _telemetry.TrackDependency("YouTube.PlayListItemsApi", "List", requestStart, DateTimeOffset.UtcNow - requestStart, true); var result = new ShowList(); //This is a Projection: //Hier wird vom Youtub Datatyp in den eigenen Show Datatype projeziert. result.Shows = playlistItems.Items.Select(item => new Show { Provider = "YouTube", ProviderId = item.Snippet.ResourceId.VideoId, Title = GetUsefulBitsFromTitle(item.Snippet.Title), Description = item.Snippet.Description, ShowDate = DateTimeOffset.Parse(item.Snippet.PublishedAtRaw, null, DateTimeStyles.RoundtripKind), ThumbnailUrl = item.Snippet.Thumbnails.High.Url, Url = GetVideoUrl(item.Snippet.ResourceId.VideoId, item.Snippet.PlaylistId, item.Snippet.Position ?? 0) }).ToList(); if (!string.IsNullOrEmpty(playlistItems.NextPageToken)) { result.MoreShowsUrl = GetPlaylistUrl(_appSettings.YouTubePlaylistId); } return(result); } }
private async Task <ShowList> GetShowsList() { using (var client = new YouTubeService(new BaseClientService.Initializer { ApplicationName = _appSettings.YouTubeApplicationName, ApiKey = _appSettings.YouTubeApiKey })) { var listRequest = client.PlaylistItems.List("snippet"); listRequest.PlaylistId = _appSettings.YouTubePlaylistId; listRequest.MaxResults = 5 * 3; // 5 rows of 3 episodes PlaylistItemListResponse playlistItems = null; var started = Timing.GetTimestamp(); try { playlistItems = await listRequest.ExecuteAsync(); } finally { TrackDependency(client.BaseUri, listRequest, playlistItems, started); } var result = new ShowList(); result.PreviousShows = playlistItems.Items.Select(item => new Show { Provider = "YouTube", ProviderId = item.Snippet.ResourceId.VideoId, Title = item.Snippet.Title,//GetUsefulBitsFromTitle(item.Snippet.Title), Description = item.Snippet.Description, ShowDate = DateTimeOffset.Parse(item.Snippet.PublishedAtRaw, null, DateTimeStyles.RoundtripKind), ThumbnailUrl = item.Snippet.Thumbnails.High.Url, Url = GetVideoUrl(item.Snippet.ResourceId.VideoId, item.Snippet.PlaylistId, item.Snippet.Position ?? 0) }).ToList(); if (!string.IsNullOrEmpty(playlistItems.NextPageToken)) { result.MoreShowsUrl = GetPlaylistUrl(_appSettings.YouTubePlaylistId); } return(result); } }
private async Task <ShowList> GetShowsList() { using (var client = new YouTubeService(new BaseClientService.Initializer { ApplicationName = _appSettings.YouTubeApplicationName, ApiKey = _appSettings.YouTubeApiKey })) { var listRequest = client.PlaylistItems.List("snippet"); listRequest.PlaylistId = _appSettings.YouTubePlaylistId; listRequest.MaxResults = 5 * 3; // 5 rows of 3 episodes var playlistItems = await listRequest.ExecuteAsync(); var result = new ShowList { PreviousShows = playlistItems.Items.Select(item => new Show { Provider = "YouTube", ProviderId = item.Snippet.ResourceId.VideoId, Title = GetUsefulBitsFromTitle(item.Snippet.Title), Description = item.Snippet.Description, ThumbnailUrl = item.Snippet.Thumbnails.High.Url, Url = GetVideoUrl(item.Snippet.ResourceId.VideoId, item.Snippet.PlaylistId, item.Snippet.Position ?? 0) }).ToList() }; foreach (var show in result.PreviousShows) { show.ShowDate = await GetVideoPublishDate(client, show.ProviderId); } if (!string.IsNullOrEmpty(playlistItems.NextPageToken)) { result.MoreShowsUrl = GetPlaylistUrl(_appSettings.YouTubePlaylistId); } return(result); } }
private async Task <ShowList> GetShowsList() { using (var client = new YouTubeService(new BaseClientService.Initializer { ApplicationName = _appSettings.YouTubeApplicationName, ApiKey = _appSettings.YouTubeApiKey })) { var listRequest = client.PlaylistItems.List("snippet"); listRequest.PlaylistId = _appSettings.YouTubePlaylistId; listRequest.MaxResults = 3 * 8; var requestStart = DateTimeOffset.UtcNow; var playlistItems = await listRequest.ExecuteAsync(); _telemetry.TrackDependency("YouTube.PlayListItemsApi", "List", requestStart, DateTimeOffset.UtcNow - requestStart, true); var result = new ShowList(); result.Shows = playlistItems.Items.Select(item => new Show { Provider = "YouTube", ProviderId = item.Snippet.ResourceId.VideoId, Title = GetUsefulBitsFromTitle(item.Snippet.Title), Description = item.Snippet.Description, ShowDate = DateTimeOffset.Parse(item.Snippet.PublishedAtRaw, null, DateTimeStyles.RoundtripKind), ThumbnailUrl = item.Snippet.Thumbnails.High.Url, Url = GetVideoUrl(item.Snippet.ResourceId.VideoId, item.Snippet.PlaylistId, item.Snippet.Position ?? 0) }).ToList(); if (!string.IsNullOrEmpty(playlistItems.NextPageToken)) { result.MoreShowsUrl = GetPlaylistUrl(_appSettings.YouTubePlaylistId); } return(result); } }
private async Task <ShowList> GetShowsList() { var videoCount = 5 * 3; // 5 rows of 3 episodes using (var client = new YouTubeService(new BaseClientService.Initializer { ApplicationName = _appSettings.YouTubeApplicationName, ApiKey = _appSettings.YouTubeApiKey })) { // Get playlist items var listRequest = client.PlaylistItems.List("snippet"); listRequest.PlaylistId = _appSettings.YouTubePlaylistId; listRequest.MaxResults = videoCount; var listResponse = await listRequest.ExecuteAsync(); // Get video details for items in the playlist var videoIds = string.Join(',', listResponse.Items.Select(i => i.Snippet.ResourceId.VideoId)); var videosRequest = client.Videos.List("snippet,liveStreamingDetails"); videosRequest.Id = videoIds; videosRequest.MaxResults = videoCount; var videosResponse = await videosRequest.ExecuteAsync(); // Build list of shows from video details var showList = new ShowList(); var index = 0; foreach (var video in videosResponse.Items) { var show = new Show { Provider = "YouTube", ProviderId = video.Id, Title = GetUsefulBitsFromTitle(video.Snippet.Title), Description = video.Snippet.Description, ThumbnailUrl = video.Snippet.Thumbnails.High.Url, Url = GetVideoUrl(video.Id, _appSettings.YouTubePlaylistId, listResponse.Items[index].Snippet.Position ?? 0) }; if (string.Equals(video.Snippet.LiveBroadcastContent, "upcoming", StringComparison.OrdinalIgnoreCase)) { show.ShowDate = DateTimeOffset.Parse(video.LiveStreamingDetails.ScheduledStartTimeRaw, null, DateTimeStyles.RoundtripKind); showList.UpcomingShows.Add(show); } else { show.ShowDate = DateTimeOffset.Parse(video.LiveStreamingDetails.ActualStartTimeRaw, null, DateTimeStyles.RoundtripKind); showList.PreviousShows.Add(show); } index++; } // If there are more shows in the playlist than the count requested, set the URL to the playlist to see them if (!string.IsNullOrEmpty(listResponse.NextPageToken)) { showList.MoreShowsUrl = GetPlaylistUrl(_appSettings.YouTubePlaylistId); } return(showList); } }