public override int DiscoverSubCategories(Category parentCategory) { parentCategory.SubCategories = new List <Category>(); if (parentCategory is RssLink) { YouTubeQuery ytq = new YouTubeQuery((parentCategory as RssLink).Url) { NumberToRetrieve = pageSize }; YouTubeFeed feed = service.Query(ytq); GetPlaylistEntriesAsCategories(parentCategory, feed); } else { Login(); if (parentCategory.Name.EndsWith(Translation.Instance.Playlists)) { // authenticated user's playlists YouTubeQuery query = new YouTubeQuery() { Uri = new Uri(YouTubeQuery.CreatePlaylistsUri(accountname)), StartIndex = 1, NumberToRetrieve = pageSize }; YouTubeFeed feed = null; try { feed = service.Query(query); } catch (Google.GData.Client.GDataRequestException queryEx) { HandleGDataErrorMessage(queryEx); } GetPlaylistEntriesAsCategories(parentCategory, feed); } else { // authenticated user's subscriptions RssLink newVidsLink = new RssLink(); newVidsLink.Name = Translation.Instance.NewVideos; newVidsLink.Url = USER_NEWSUBSCRIPTIONS_FEED; parentCategory.SubCategories.Add(newVidsLink); newVidsLink.ParentCategory = parentCategory; YouTubeQuery query = new YouTubeQuery() { Uri = new Uri(YouTubeQuery.CreateSubscriptionUri(accountname)), StartIndex = 1, NumberToRetrieve = pageSize }; YouTubeFeed feed = null; try { feed = service.Query(query); } catch (Google.GData.Client.GDataRequestException queryEx) { HandleGDataErrorMessage(queryEx); } foreach (SubscriptionEntry subScr in feed.Entries) { RssLink subScrLink = new RssLink(); subScrLink.Name = subScr.UserName; subScrLink.Url = YouTubeQuery.CreateUserUri(subScr.UserName); parentCategory.SubCategories.Add(subScrLink); subScrLink.ParentCategory = parentCategory; } // if there are more results add a new NextPageCategory if (feed.NextChunk != null) { parentCategory.SubCategories.Add(new NextPageCategory() { ParentCategory = parentCategory, Url = feed.NextChunk }); } } } parentCategory.SubCategoriesDiscovered = true; return(parentCategory.SubCategories.Count); }
/// <summary> /// returns a Feed of subscriptions for a given username /// </summary> /// <param name="user">the username</param> /// <returns>a feed of Videos</returns> public Feed <Subscription> GetSubscriptionsFeed(string user) { YouTubeQuery q = PrepareQuery <YouTubeQuery>(YouTubeQuery.CreateSubscriptionUri(user)); return(PrepareFeed <Subscription>(q)); }