Ejemplo n.º 1
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);
     }
 }
Ejemplo n.º 2
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);
     }
 }
Ejemplo n.º 3
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);
 }
Ejemplo n.º 4
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;
 }