Пример #1
0
 public string NavLists(NavFilter filter)
 {
     try
     {
         var key     = new VideoNodeKey(filter.platform, 0, filter.auth);
         var pars    = VideoParsUtils.FormateSearchVideoPars(filter);
         var filters = VideoNodesUtil.FormateVodFilter(filter);
         var rel     = RecommandCache.Instance.Dictionary[filter.navid];
         var query   = rel.Channels[key].Where(v =>
         {
             bool result = true;
             var video   = ListCache.Instance.Dictionary[v];
             foreach (var f in filters)
             {
                 result = result && f(video, filter);
             }
             return(result);
         });
         return(CreatePageList(rel, query, filter, pars, false));
     }
     catch (KeyNotFoundException)
     {
         return(NoPlatformNav());
     }
     catch (Exception ex)
     {
         return(BoxUtils.FormatErrorMsg(ex));
     }
 }
Пример #2
0
 public string NavEx(NavFilter filter)
 {
     try
     {
         var res     = RecommandCache.Instance.Items[filter.mode];
         var xml     = new XElement("navs");
         var key     = new VideoNodeKey(filter.platform, 0, filter.auth);
         var filters = VideoNodesUtil.FormateVodFilter(filter);
         xml.Add(from re in res
                 let count = GetChannelCount(re, key, filter, filters)
                             where count > 0
                             select new XElement("nav",
                                                 new XElement("navid", re.Id),
                                                 new XElement("name", re.Language[filter.lang].Title),
                                                 new XElement("count", count),
                                                 new XElement("image", re.PicLink)
                                                 ));
         return(xml.ToString(SaveOptions.DisableFormatting));
     }
     catch (KeyNotFoundException)
     {
         return(NoModeNav());
     }
     catch (Exception ex)
     {
         return(BoxUtils.FormatErrorMsg(ex));
     }
 }
Пример #3
0
        /// <summary>
        /// 得到该推荐分类下的频道数
        /// </summary>
        private int GetChannelCount(RecommandNode node, VideoNodeKey key, NavFilter filter, List <Func <VideoBase, ExFilterBase, bool> > filters)
        {
            int count = 0;

            if (node.Channels.ContainsKey(key))
            {
                var cs = node.Channels[key];
                foreach (var c in cs)
                {
                    var result = true;
                    foreach (var f in filters)
                    {
                        result = result && f(ListCache.Instance.Dictionary[c], filter);
                    }
                    if (result)
                    {
                        count++;
                    }
                }
            }
            return(count);
        }
Пример #4
0
        /// <summary>
        /// 分页输出
        /// </summary>
        private string CreatePageList(RecommandNode recommand, IEnumerable <int> videos, NavFilter filter, VideoPars pars, bool isEx)
        {
            var xml = new XElement("vlist");

            xml.Add(new XElement("nav_id", recommand.Id),
                    new XElement("nav_name", recommand.Language[filter.lang].Title),
                    new XElement("count", 0),
                    new XElement("page_count", 0)
                    );
            var count = videos.PageList(filter, pars, xml, isEx);

            xml.Element("count").SetValue(count);
            xml.Element("page_count").SetValue(PageUtils.PageCount(count, filter.c));
            return(xml.ToString(SaveOptions.DisableFormatting));
        }