From eb3a81aa1b45dd5bd2e2374a0ca71621c91e3601 Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Mon, 6 Mar 2017 15:05:36 -0800 Subject: [PATCH] Handle private YouTube channels #10 --- .../Services/Rss/Builders/YouTubeRssBuilder.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Podsync/Services/Rss/Builders/YouTubeRssBuilder.cs b/src/Podsync/Services/Rss/Builders/YouTubeRssBuilder.cs index 41bab99..f95f72b 100644 --- a/src/Podsync/Services/Rss/Builders/YouTubeRssBuilder.cs +++ b/src/Podsync/Services/Rss/Builders/YouTubeRssBuilder.cs @@ -13,6 +13,8 @@ namespace Podsync.Services.Rss.Builders { public class YouTubeRssBuilder : RssBuilderBase { + private static readonly Item[] NoVideos = new Item[0]; + private readonly IYouTubeClient _youTube; public YouTubeRssBuilder(IYouTubeClient youTube, IStorageService storageService) : base(storageService) @@ -59,13 +61,18 @@ namespace Podsync.Services.Rss.Builders throw new ArgumentException("Invalid channel or playlist id"); } + channel.Items = NoVideos; + // Get video ids from this playlist var ids = await _youTube.GetPlaylistItemIds(new PlaylistItemsQuery { PlaylistId = channel.Guid, Count = metadata.PageSize }); - // Get video descriptions - var videos = await _youTube.GetVideos(new VideoQuery { Ids = ids }); + if (ids.Count > 0) + { + // Get video descriptions + var videos = await _youTube.GetVideos(new VideoQuery { Ids = ids }); - channel.Items = videos.Select(youtubeVideo => MakeItem(youtubeVideo, metadata)).ToArray(); + channel.Items = videos.Select(youtubeVideo => MakeItem(youtubeVideo, metadata)).ToArray(); + } var rss = new Feed {