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); }
public override List <VideoInfo> GetVideos(Category category) { List <VideoInfo> vids = new List <VideoInfo>(); NaviXMediaItem item = category.Other as NaviXMediaItem; if (item == null) { return(vids); } if (item.Type == "video") { VideoInfo vid = new VideoInfo(); vid.Title = category.Name; vid.Description = category.Description; vid.Thumb = category.Thumb; vid.Airdate = item.Date; vid.Other = item; vids.Add(vid); } else if (item.Type.StartsWith("rss")) { string url = item.URL; if (url.StartsWith("rss://")) { url = "http://" + url.Substring(6); } RssToolkit.Rss.RssDocument doc = GetWebData <RssToolkit.Rss.RssDocument>(url); if (doc != null) { foreach (RssToolkit.Rss.RssItem rssItem in doc.Channel.Items) { VideoInfo vid = Helpers.RssUtils.VideoInfoFromRssItem(rssItem, true, new Predicate <string>(IsPossibleVideo)); if (vid != null) { vids.Add(vid); } } } } return(vids); }
public override string GetVideoUrl(VideoInfo video) { NaviXMediaItem item = video.Other as NaviXMediaItem; if (item == null) { return(video.VideoUrl); } string urlStr = item.URL; if (item.Type == "video" && !string.IsNullOrEmpty(item.Processor)) { NaviXProcessor proc = new NaviXProcessor(item.Processor, item.URL, item.Version, nxId); if (proc.Process()) { urlStr = proc.Data; } else { string message = string.IsNullOrEmpty(proc.LastError) ? "Error retrieving url" : proc.LastError; throw new OnlineVideosException("Navi-X says: " + message); } } if (urlStr != null && urlStr.ToLower().StartsWith("rtmp")) { MPUrlSourceFilter.RtmpUrl url = getRTMPUrl(urlStr); return(url.ToString()); } if (item.Player == "default") { Settings.Player = PlayerType.Internal; } else { Settings.Player = PlayerType.Auto; } return(urlStr); }