Exemple #1
0
 /// <summary>
 /// 点播基本接口条件过滤方法集
 /// </summary>
 public static List<Func<VideoNode, VideoPars, ListFilter, bool>> FormateVideoFilter(ListFilter filter, VideoPars pars)
 {
     var filters = new List<Func<VideoNode, VideoPars, ListFilter, bool>>(4);
     if (!string.IsNullOrEmpty(filter.beginletter))
         filters.Add(FilterFunUtils.BeginLetter);
     if (pars.Flags != null)
         filters.Add(FilterFunUtils.Flags);
     if (pars.Tags != null)
         filters.Add(FilterFunUtils.Tags);
     if (filter.ver <= 1)
     {
         filters.Add(FilterFunUtils.Ver1);
     }
     else
     {
         filters.Add(FilterFunUtils.Ver2);
         if (filter.screen != "v")
         {
             filters.Add(FilterFunUtils.Virtual);
         }
     }
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.Forbidden);  
     }
     return filters;
 }
Exemple #2
0
 /// <summary>
 /// 频道名拼音扩展搜索
 /// </summary>
 public string VideoSearchCHEx(ListFilter filter)
 {
     try
     {
         return CreateSmarkPageList(LuceneNetUtil.SearchEx(filter, EpgIndexNode.CnNameField, EpgIndexNode.NameOccurs, Searcher.SegmentChWord(filter.k), false), filter, VideoParsUtils.FormateSearchVideoPars(filter), true);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }
Exemple #3
0
 public string ListByTags(ListFilter filter)
 {
     try
     {
         var pindex = VideoNodeKeyArray.Instance.Items[new VideoNodeKey(filter.platform, 0, filter.auth)];
         var pars = VideoParsUtils.FormatListByTags(filter);
         var filters = VideoNodesUtil.FormateVideoFilter(filter, pars);
         var tag = pars.SortTag.Substring(0, pars.SortTag.LastIndexOf(":"));
         var dimension = pars.SortTag.Substring(pars.SortTag.LastIndexOf(":") + 1);
         IEnumerable<int> channels = new List<int>();
         foreach (var type in BoxTypeCache.Instance.Items.Values)
         {
             var key = new TagNodeKey() { Dimension = dimension, Type = type.TypeID };
             if (TagCache.Instance.Items.ContainsKey(key))
             {
                 var vkey = new VideoNodeKey(filter.platform, type.TypeID, filter.auth);
                 var node = TagCache.Instance.Items[key].FirstOrDefault(v => v.Language[CustomArray.LanguageArray[0]].Title == tag);
                 if (node != null && node.Channels.ContainsKey(vkey))
                     channels = channels.Union(node.Channels[vkey]);
             }
         }
         var query = channels.Where(v =>
             {
                 bool result = true;
                 var video = ListCache.Instance.Dictionary[v];
                 foreach (var f in filters)
                 {
                     result = result && f(video, pars, filter);
                 }
                 return result;
             }
         );
         return CreatePageList(query, filter, pars, false);
     }
     catch (KeyNotFoundException)
     {
         return NoPlatForm();
     }
     catch (Exception ex)
     {
         return BoxUtils.FormatErrorMsg(ex);
     }
 }
Exemple #4
0
 /// <summary>
 /// 点播扩展接口条件过滤方法集
 /// </summary>
 public static List<Func<VideoNode, VideoPars, ListFilter, bool>> FormateVideoExFilter(ListFilter filter, VideoPars pars)
 {
     var filters = new List<Func<VideoNode, VideoPars, ListFilter, bool>>(10);
     if (!string.IsNullOrEmpty(filter.beginletter))
         filters.Add(FilterFunUtils.BeginLetter);
     if (pars.Flags != null)
         filters.Add(FilterFunUtils.Flags);
     if (pars.Tags != null)
         filters.Add(FilterFunUtils.Tags);
     if (filter.ver <= 1)
     {
         filters.Add(FilterFunUtils.Ver1);
     }
     else
     {
         filters.Add(FilterFunUtils.Ver2);
         if (filter.screen != "v")
         {
             filters.Add(FilterFunUtils.Virtual);
         }
     }
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.Forbidden);
     }
     if (filter.forbidvip == 1)
         filters.Add(FilterFunUtils.ForbidVip);
     if (filter.bitratemin != 0)
         filters.Add(FilterFunUtils.BitMin);
     if (filter.bitratemax != 0)
         filters.Add(FilterFunUtils.BitMax);
     if (filter.wmin != 0)
         filters.Add(FilterFunUtils.WMin);
     if (filter.wmax != 0)
         filters.Add(FilterFunUtils.WMax);
     if (filter.hmin != 0)
         filters.Add(FilterFunUtils.HMin);
     if (filter.hmax != 0)
         filters.Add(FilterFunUtils.HMax);
     return filters;
 }
Exemple #5
0
 /// <summary>
 /// 点播节目请求参数处理
 /// </summary>
 public static VideoPars FormatVideoPars(ListFilter filter)
 {
     var vp = new VideoPars();
     if (filter.ver <= 1)
     {
         if (!string.IsNullOrEmpty(filter.tag))
         {
             var tags = filter.tag.FormatStrToArrayEmpty(SplitArray.LineArray);
             var dimensiontags = new List<string>(tags.Length);
             for (int i = 0; i < tags.Length; i++)
             {
                 var childetags = tags[i].FormatStrToArray(SplitArray.DHArray);
                 if (i == 0 && childetags.Length > 0)
                 {
                     dimensiontags.AddEnumerator(childetags.Select(v => VideoUtils.FormatStrArray(v.Length + 8, v, ":", CustomArray.CatalogDimension)));
                 }
                 else if (i == 1 && childetags.Length > 0)
                 {
                     dimensiontags.AddEnumerator(childetags.Select(v => VideoUtils.FormatStrArray(v.Length + 8, v, ":", CustomArray.AreaDimension)));
                 }
                 else if (i == 2 && childetags.Length > 0)
                 {
                     dimensiontags.AddEnumerator(childetags.Select(v => VideoUtils.FormatStrArray(v.Length + 8, v, ":", CustomArray.YearDimension)));
                 }
                 else if (i == 3 && childetags.Length > 0)
                 {
                     dimensiontags.AddEnumerator(childetags.Select(v => VideoUtils.FormatStrArray(v.Length + 8, v, ":", CustomArray.ActDimension)));
                 }
                 else if (i == 4 && childetags.Length > 0)
                 {
                     dimensiontags.AddEnumerator(childetags.Select(v => VideoUtils.FormatStrArray(v.Length + 12, v, ":", CustomArray.DirectorDimension)));
                 }
             }
             if (dimensiontags.Count > 0 && filter.order == "s")
             {
                 vp.SortTag = dimensiontags[0];
                 dimensiontags.RemoveAt(0);
             }
             vp.Tags = dimensiontags;
         }
     }
     else
     {
         if (!string.IsNullOrEmpty(filter.ntags))
         {
             var ntags = filter.ntags.FormatStrToArray(SplitArray.LineArray);
             if (ntags.Length > 0 && filter.order == "s")
             {
                 vp.SortTag = ntags[0];
             }
             vp.Tags = ntags;
         }
     }
     if (!string.IsNullOrEmpty(filter.flag))
     {
         vp.Flags = filter.flag.FormatStrToArray(SplitArray.LineArray);
     }
     if (filter.conlen == 0)
     {
         if (filter.ver <= 1)
             vp.ResponseFun = VideoResponseUtils.CustomListRes;
         else
             vp.ResponseFun = VideoResponseUtils.CustomListResVer2;
     }
     else
     {
         if (filter.ver <= 1)
             vp.ResponseFun = VideoResponseUtils.ConLenListRes;
         else
             vp.ResponseFun = VideoResponseUtils.ConLenListResVer2;
     }
     if (filter.forbidden)
     {
         filter.forbidden = VideoNodeKeyArray.Instance.Forbidden[new VideoNodeKey(filter.platform, 0, filter.auth)];
         if (filter.forbidden)
         {
             if (ForbiddenAreaCache.Instance.Items.ContainsKey(filter.fbcode))
             {
                 vp.ForbiddenName = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName;
             }
             else
             {
                 filter.forbidden = false;
             }
         }
     }
     return vp;
 }
Exemple #6
0
 public static VideoPars FormatListByTags(ListFilter filter)
 {
     var vp = new VideoPars();
     var ntags = filter.ntags.FormatStrToArray(SplitArray.LineArray);
     if (ntags.Length > 0 )
     {
         vp.SortTag = ntags[0];
     }
     vp.Tags = ntags.Skip(1);
     if (!string.IsNullOrEmpty(filter.flag))
     {
         vp.Flags = filter.flag.FormatStrToArray(SplitArray.LineArray);
     }
     if (filter.conlen == 0)
     {
         vp.ResponseFun = VideoResponseUtils.CustomListResVer2;
     }
     else
     {
         vp.ResponseFun = VideoResponseUtils.ConLenListResVer2;
     }
     if (filter.forbidden)
     {
         filter.forbidden = VideoNodeKeyArray.Instance.Forbidden[new VideoNodeKey(filter.platform, 0, filter.auth)];
         if (filter.forbidden)
         {
             if (ForbiddenAreaCache.Instance.Items.ContainsKey(filter.fbcode))
             {
                 vp.ForbiddenName = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName;
             }
             else
             {
                 filter.forbidden = false;
             }
         }
     }
     return vp;
 }
Exemple #7
0
 /// <summary>
 /// 搜索请求参数处理
 /// </summary>
 public static VideoPars FormatSearchVideoPars(ListFilter filter)
 {
     VideoPars vp = new VideoPars();
     if (!string.IsNullOrEmpty(filter.flag))
     {
         vp.Flags = filter.flag.FormatStrToArray(SplitArray.LineArray);
     }
     if (filter.conlen == 0)
         vp.ResponseFun = VideoResponseUtils.CustomListRes;
     else
         vp.ResponseFun = VideoResponseUtils.ConLenListRes;
     if (filter.forbidden)
     {
         filter.forbidden = VideoNodeKeyArray.Instance.Forbidden[new VideoNodeKey(filter.platform, 0, filter.auth)];
         if (filter.forbidden)
         {
             if (ForbiddenAreaCache.Instance.Items.ContainsKey(filter.fbcode))
             {
                 vp.ForbiddenName = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName;
             }
             else
             {
                 filter.forbidden = false;
             }
         }
     }
     return vp;
 }
Exemple #8
0
 /// <summary>
 /// 分页输出
 /// </summary>
 private static string CreatePageList(IEnumerable<int> list, ListFilter filter, VideoPars pars, bool isEx)
 {
     if (filter.order != "s")
         list = VideoSortUtils<VideoNode>.Sort(list, filter);
     var xml = new XElement("vlist");
     xml.Add(new XElement("countInPage", filter.c), new XElement("page", filter.s));
     var count = list.PageList(filter, pars, xml, isEx);
     xml.AddFirst(new XElement("count", count), new XElement("page_count", PageUtils.PageCount(count, filter.c)));
     return xml.ToString(SaveOptions.DisableFormatting);
 }
Exemple #9
0
 /// <summary>
 /// LuceneNet分页输出
 /// </summary>
 private static string CreateSmarkPageList(LuceneResultNode result, ListFilter filter, VideoPars pars, bool isEx)
 {
     var xml = new XElement("vlist");
     xml.Add(new XElement("count", result.AllCount));
     xml.Add(new XElement("page_count", PageUtils.PageCount(result.AllCount, filter.c)));
     xml.Add(new XElement("countInPage", filter.c));
     xml.Add(new XElement("page", filter.s));
     if (filter.shownav == 1)
     {
         xml.Add(new XElement("nav",
             from type in result.Types
             select
                 new XElement("type",
                 new XAttribute("id", type.Key),
                 new XAttribute("name", BoxTypeCache.Instance.Items[type.Key].Language[filter.lang].Title),
                 new XAttribute("count", type.Value)
             )));
     }
     xml.Add(from v in result.Result select pars.ResponseFun(ListCache.Instance.Dictionary[int.Parse(v)], filter, isEx));
     return xml.ToString(SaveOptions.DisableFormatting);
 }
Exemple #10
0
 /// <summary>
 /// 点播基本搜索
 /// </summary>
 public static LuceneResultNode Search(ListFilter filter, string[] fields, Lucene.Net.Search.BooleanClause.Occur[] occurs, string query, bool isStat)
 {
     var fkey = new VideoNodeKey(filter.platform, 0, filter.auth);
     var containfilters = new List<ContainFilterNode>();
     var fbname = string.Empty;
     if (filter.forbidden)
     {
         filter.forbidden = VideoNodeKeyArray.Instance.Forbidden[fkey];
         if (filter.forbidden)
         {
             if (ForbiddenAreaCache.Instance.Items.ContainsKey(filter.fbcode))
             {
                 fbname = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName;
             }
             else
             {
                 filter.forbidden = false;
             }
         }
     }
     if (filter.forbidden)
     {
         containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.ForbiddenCode, Text = fbname.ToLower() });
     }
     var pindx = VideoNodeKeyArray.Instance.Items[fkey].ToString();
     containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.PlatformIndex, Text = pindx });
     if (!string.IsNullOrEmpty(filter.flag))
     {
         containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.Flags, Text = VideoParsUtils.OrderAscFlags(filter.flag) });
     }
     if (filter.ver <= 1)
     {
         containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.TableType, Text = "0" });
     }
     else
     {
         if (filter.screen == "v")
         {
             containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.IsGroup, Text = "0" });
         }
         else
         {
             containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.Screen, Text = "0" });
             containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.IsGroup, Text = "0" });
         }
     }
     //if (filter.type != 0)
     //{
     //    containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.Type, Text = filter.type.ToString() });
     //}
     var node = new SearchNode();
     node.Key = filter.k;
     node.Pindex = pindx;
     node.Queries = query;//Searcher.SegmentKeyWord(filter.k);
     node.Fields = fields;
     node.Occurs = occurs;
     //node.SortFields = EpgIndexNode.SortFields;
     node.ContainFilters = containfilters;
     node.LongRnageFilters = new List<LongRangeNode>();
     node.Start = filter.s;
     node.Limit = filter.c;
     node.IndexValue = EpgIndexNode.IndexValue;
     node.IsStat = isStat;
     node.VodType = filter.type;
     node.ShowNav = filter.shownav;
     node.TotalTypes = BoxTypeCache.Instance.Items.Count;
     return Searcher.Search(EpgLuceneNet.Instance.IndexDic, node);
 }