public override int DiscoverSubCategories(Category parentCategory) { SubCatHolder holder = parentCategory.Other as SubCatHolder; if (holder != null) { if (holder.SubCategories != null && holder.SubCategories.Count > 0) { parentCategory.SubCategories = holder.SubCategories; searchableCats = holder.SearchableCategories; return(holder.SubCategories.Count); } } else { NaviXMediaItem naviXItem = parentCategory.Other as NaviXMediaItem; if (naviXItem != null) { if (naviXItem.Type == "search") { throw new OnlineVideosException("To search specify search category and use OnlineVideos search feature"); } } } string plUrl = (parentCategory as RssLink).Url; holder = getCats(plUrl, parentCategory); parentCategory.SubCategories = holder.SubCategories; searchableCats = holder.SearchableCategories; parentCategory.Other = holder; return(holder.SubCategories.Count); }
SubCatHolder getCats(string playlistUrl, Category parentCategory = null) { SubCatHolder holder = new SubCatHolder(); holder.SubCategories = new List <Category>(); holder.SearchableCategories = new Dictionary <string, string>(); if (playlistUrl.StartsWith("http://www.navixtreme.com")) { login(); } NaviXPlaylist pl = NaviXPlaylist.Load(playlistUrl, nxId); if (pl != null) { foreach (NaviXMediaItem item in pl.Items) { RssLink cat; if (!string.IsNullOrEmpty(item.URL) && System.Text.RegularExpressions.Regex.IsMatch(item.URL, @"[?&]page=\d+")) { cat = new NextPageCategory(); } else { cat = new RssLink(); } cat.Name = item.Name; if (!string.IsNullOrEmpty(item.InfoTag)) { cat.Name += string.Format(" ({0})", item.InfoTag); } cat.Description = string.IsNullOrEmpty(item.Description) ? pl.Description : item.Description; cat.Url = item.URL; if (!string.IsNullOrEmpty(item.Thumb)) { cat.Thumb = item.Thumb; } else if (!string.IsNullOrEmpty(item.Icon)) { cat.Thumb = item.Icon; } else { cat.Thumb = pl.Logo; } cat.HasSubCategories = item.Type == "playlist" || item.Type == "search"; cat.ParentCategory = parentCategory; cat.Other = item; holder.SubCategories.Add(cat); if (item.Type == "search") { holder.SearchableCategories[cat.Name] = cat.Url; } } } return(holder); }
public override int DiscoverNextPageCategories(NextPageCategory category) { SubCatHolder holder = category.ParentCategory.Other as SubCatHolder; if (holder == null) { return(category.ParentCategory.SubCategories.Count); } holder.SubCategories.Remove(category); holder.SubCategories.AddRange(getCats((category as RssLink).Url, category.ParentCategory).SubCategories); category.ParentCategory.SubCategories = holder.SubCategories; return(holder.SubCategories.Count); }