Exemplo n.º 1
0
 /// <summary>
 /// 单维度扩展接口
 /// </summary>
 public string TagsEx(TagsFilter filter)
 {
     try
     {
         var tags = TagCache.Instance.Items[new TagNodeKey() { Dimension = filter.dimension, Type = filter.type }];
         var key = new VideoNodeKey(filter.platform, filter.type, filter.auth);
         var xml = new XElement("tags");
         var filters = VideoNodesUtil.FormateVodFilter(filter);
         xml.Add(from tag in tags
                 where tag.Channels.ContainsKey(key)
                 let count = GetChannelCount(tag, key, filter, filters)
                 where count > 0
                 select new XElement("tag",
                     new XElement("name", tag.Language[filter.lang].Title),
                     new XElement("count", count)
             ));
         return xml.ToString(SaveOptions.DisableFormatting);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// 单维度基本接口
 /// </summary>
 public string VideoTags(TagsFilter filter)
 {
     try
     {
         var tags = TagCache.Instance.Items[new TagNodeKey() { Dimension = filter.dimension, Type = filter.type }];
         var key = new VideoNodeKey(filter.platform, filter.type, filter.auth);
         var filters = VideoNodesUtil.CommonCustomFilter(filter);
         IEnumerable<string> query = null;
         if (filters.Count <= 0)
         {
             query = from tag in tags where tag.Channels.ContainsKey(key) select tag.Language[filter.lang].Title;
         }
         else
         {
             query = from tag in tags
                     where tag.Channels.ContainsKey(key)
                     let count = GetChannelCount(tag, key, filter, filters)
                     where count > 0
                     select tag.Language[filter.lang].Title;
         }
         var xml = new XElement("tags",
                 new XElement("info", BoxUtils.GetXmlCData(query.FormatListToStr(SplitArray.Line, 100)))
             );
         return xml.ToString(SaveOptions.DisableFormatting);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }
Exemplo n.º 3
0
 private int GetChannelCount(TagNode node, VideoNodeKey key, TagsFilter filter, List<Func<VideoBase, ExFilterBase, bool>> filters)
 {
     int count = 0;
     var cs = node.Channels[key];
     foreach (var c in cs)
     {
         var result = true;
         var v = ListCache.Instance.Dictionary[c];
         foreach (var f in filters)
         {
             result = result && f(v, filter);
         }
         if (result)
             count++;
     }
     return count;
 }
Exemplo n.º 4
0
 /// <summary>
 /// 分类扩展接口
 /// </summary>
 public string VideoTypesEx(TagsFilter filter)
 {
     try
     {
         var types = BoxTypeCache.Instance.Items;
         var filters = VideoNodesUtil.CommonFilter(filter);
         var root = new XElement("types");
         foreach (var boxtype in types)
         {
             var videos = ListCache.Instance.Items[new VideoNodeKey(filter.platform, boxtype.Key, filter.auth)].OrderArray;
             int count = 0;
             for (var i = 0; i < videos.Count; i++)
             {
                 bool result = true;
                 var v = ListCache.Instance.Dictionary[videos[i]];
                 foreach (var f in filters)
                     result = result && f(v, filter);
                 if (result)
                 {
                     count++;
                 }
             }
             root.Add(new XElement("type",
                        new XElement("tid", boxtype.Value.TypeID),
                        new XElement("name", boxtype.Value.Language[filter.lang].Title),
                        new XElement("count", count),
                        new XElement("image", boxtype.Value.PicLink),
                        new XElement("tag_dimesion", boxtype.Value.ResponseDimension),
                        new XElement("treeleft_support", boxtype.Value.TreeSupport)
                     ));
         }
         return root.ToString(SaveOptions.DisableFormatting);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }
Exemplo n.º 5
0
 /// <summary>
 /// 分类基本接口
 /// </summary>
 public string VideoTypes(TagsFilter filter)
 {
     try
     {
         var xml = new XElement("types");
         xml.Add(from boxtype in BoxTypeCache.Instance.Items.Values
                 select new XElement("type",
                     new XElement("tid", boxtype.TypeID),
                     new XElement("name", boxtype.Language[filter.lang].Title),
                     new XElement("image", boxtype.PicLink),
                     new XElement("tag_dimesion", boxtype.ResponseDimension),
                     new XElement("treeleft_support", boxtype.TreeSupport)
                 ));
         return xml.ToString(SaveOptions.DisableFormatting);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// 多维度扩展接口
 /// </summary>
 public string MultiTagsEx(TagsFilter filter)
 {
     try
     {
         var dimensions = filter.dimension.Split(SplitArray.LineArray, StringSplitOptions.RemoveEmptyEntries).Distinct();
         var xml = new XElement("tags");
         foreach (var dimension in dimensions)
         {
             var tags = TagCache.Instance.Items[new TagNodeKey() { Dimension = dimension, Type = filter.type }];
             var key = new VideoNodeKey(filter.platform, filter.type, filter.auth);
             var dimensionxml = new XElement("dimension", new XAttribute("name", dimension));
             var filters = VideoNodesUtil.FormateVodFilter(filter);
             dimensionxml.Add(from tag in tags
                     where tag.Channels.ContainsKey(key)
                     let count = GetChannelCount(tag, key, filter, filters)
                     where count > 0
                     select new XElement("tag",
                         new XElement("name", tag.Language[filter.lang].Title),
                         new XElement("count", count)
                     ));
             xml.Add(dimensionxml);
         }
         return xml.ToString(SaveOptions.DisableFormatting);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }