Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        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);
            }
        }