Exemplo n.º 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;
 }
Exemplo n.º 2
0
        /// <summary>
        /// LuceneNet搜索请求参数处理
        /// </summary>
        public static VideoPars FormateSearchVideoPars(ExFilterBase filter)
        {
            var vp = new VideoPars();

            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;
                }
            }
            return(vp);
            //var vp = new VideoPars();
            //if (filter.conlen == 0)
            //    vp.ResponseFun = VideoResponseUtils.CustomListRes;
            //else
            //    vp.ResponseFun = VideoResponseUtils.ConLenListRes;
            //return vp;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 直播搜索请求参数处理
        /// </summary>
        public static VideoPars FormatLiveSearchVideoPars(LiveSearchFilter filter)
        {
            var vp = new VideoPars();

            if (!string.IsNullOrEmpty(filter.flag))
            {
                vp.Flags = filter.flag.FormatStrToArray(SplitArray.LineArray);
            }
            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);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 分页输出
        /// </summary>
        private string CreatePageList(CoverNavNode node, CoverFilter filter, VideoPars pars, List <Func <VideoBase, ExFilterBase, bool> > filters, bool isEx)
        {
            var key    = new VideoNodeKey(filter.platform, 0, filter.auth);
            var xml    = new XElement("cover_list");
            int all    = 0;
            var images = node.Images[key];

            for (var i = 0; i < images.Count && all < filter.c; i++)
            {
                var       image  = CoverImageCache.Instance.Items[images[i]];
                bool      result = true;
                VideoBase video  = null;
                if (image.ChannelType == 3)
                {
                    video = ListCache.Instance.Dictionary[image.ChannelId];
                }
                else
                {
                    video = LiveListCache.Instance.Dictionary[image.ChannelId];
                }
                foreach (var f in filters)
                {
                    result = result && f(video, filter);
                }
                if (!result)
                {
                    continue;
                }
                all++;

                XElement playlink;
                if (image.ChannelType == 3)
                {
                    playlink = VideoResponseUtils.CreateVodPlayLinkVer2(image.ChannelId, filter, isEx);
                }
                else
                {
                    playlink = VideoResponseUtils.CreateLivePlayLinkVer2(image.ChannelId, filter, isEx);
                }
                var subttitle = image.Language[filter.lang].SubTitle;
                if (filter.conlen != 0)
                {
                    subttitle = subttitle.FormateSubStr(filter.conlen);
                }
                xml.Add(new XElement("c",
                                     new XElement("title", image.Language[filter.lang].Title),
                                     new XElement("note", subttitle),
                                     new XElement("vid", image.ChannelId),
                                     new XElement("vtype", image.ChannelType == 3 ? "vod" : "live"),
                                     playlink,
                                     new XElement("cover_imgurl", image.ImageUrl),
                                     new XElement("onlinetime", image.OnlineTime.ToString("yyyy-MM-dd HH:mm:ss"))
                                     ));
            }
            return(xml.ToString(SaveOptions.DisableFormatting));
        }
Exemplo n.º 6
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;
 }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
0
        /// <summary>
        /// 直播基本接口条件过滤方法集
        /// </summary>
        public static List <Func <LiveVideoNode, VideoPars, LiveFilter, bool> > FormateLiveVideoFilter(LiveFilter filter, VideoPars pars)
        {
            var filters = new List <Func <LiveVideoNode, VideoPars, LiveFilter, bool> >(4);

            filters.Add(FilterFunUtils.LiveHiddenFlag);
            if (filter.forbidden)
            {
                filters.Add(FilterFunUtils.LiveForbidden);
            }
            if (!string.IsNullOrEmpty(filter.beginletter))
            {
                filters.Add(FilterFunUtils.LiveBeginLetter);
            }
            if (pars.Flags != null)
            {
                filters.Add(FilterFunUtils.LiveFlags);
            }
            if (filter.ver <= 1)
            {
                filters.Add(FilterFunUtils.LiveVer1);
            }
            else
            {
                filters.Add(FilterFunUtils.LiveVer2);
            }
            return(filters);
        }
Exemplo n.º 10
0
 /// <summary>
 /// 直播标准排序
 /// </summary>
 public static IEnumerable <LiveVideoNode> StandardLiveSort(IEnumerable <LiveVideoNode> query, LiveFilter filter, VideoPars pars)
 {
     if (string.IsNullOrEmpty(pars.SortTag))
     {
         //AuthKey key = new AuthKey() { Auth = filter.auth, PlatForm = filter.platform };
         //if (PlatFormCache.Instance.AuthItems.ContainsKey(key))
         //{
         //    return query.OrderBy(v => { if (v.MainRank.ContainsKey(key))return v.MainRank[key]; return 0; });
         //}
         //key.Auth = null;
         //return query.OrderBy(v => { if (v.MainRank.ContainsKey(key))return v.MainRank[key]; return 0; });
         //return query.OrderByDescending(video => video.Hot);
         return(query.OrderBy(v => v.Rank));
     }
     return(query.OrderBy(video => video.TagsRank[pars.SortTag]));
 }
Exemplo n.º 11
0
 /// <summary>
 /// 频道排序,节目获取接口使用
 /// </summary>
 public static IEnumerable <T> SortVideos(IEnumerable <T> query, ListFilter filter, VideoPars pars)
 {
     if (!string.IsNullOrEmpty(filter.order))
     {
         if (filter.order == "t")   //热度、排行榜
         {
             query = HotSort(query, filter);
         }
         else if (filter.order == "n")  //更新时间
         {
             query = query.OrderByDescending(video => video.Main.ModifyTime);
         }
         else            //标准
         {
             query = StandardSort(query, filter, pars);
         }
     }
     else            //标准
     {
         query = StandardSort(query, filter, pars);
     }
     return(query);
 }
Exemplo n.º 12
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));
        }
Exemplo n.º 13
0
 /// <summary>
 /// 直播基本接口条件过滤方法集
 /// </summary>
 public static List<Func<LiveVideoNode, VideoPars, LiveFilter, bool>> FormateLiveVideoFilter(LiveFilter filter, VideoPars pars)
 {
     var filters = new List<Func<LiveVideoNode, VideoPars, LiveFilter, bool>>(4);
     filters.Add(FilterFunUtils.LiveHiddenFlag);
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.LiveForbidden);
     }
     if (!string.IsNullOrEmpty(filter.beginletter))
         filters.Add(FilterFunUtils.LiveBeginLetter);
     if (pars.Flags != null)
         filters.Add(FilterFunUtils.LiveFlags);
     if (filter.ver <= 1)
         filters.Add(FilterFunUtils.LiveVer1);
     else
         filters.Add(FilterFunUtils.LiveVer2);
     return filters;
 }
Exemplo n.º 14
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));
        }
Exemplo n.º 15
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);
        }
Exemplo n.º 16
0
        /// <summary>
        /// 分页输出
        /// </summary>
        private string CreatePageList(LiveRecommandNode recommand, List<LiveVideoNode> videos, LiveNavFilter filter, VideoPars pars, bool isEx)
        {
            var vkey = new VideoNodeKey(filter.platform, 0, filter.auth);
            var xml = new XElement("vlist");
            xml.Add(new XElement("nav_id", recommand.ID));
            xml.Add(new XElement("nav_name", recommand.Language[filter.lang].Title));
            xml.Add(new XElement("count", videos.Count));
            xml.Add(new XElement("page_count", PageUtils.PageCount(videos.Count, filter.c)));
            if (filter.c != 0 && filter.s != 0)
            {
                //currentVideos = videos.Skip(filter.c * (filter.s - 1)).Take(filter.c).ToList();
                xml.Add(new XElement("countInPage", filter.c));
                xml.Add(new XElement("page", filter.s));

                var index = (filter.s - 1) * filter.c;
                var max = index + filter.c;
                if (max > videos.Count)
                    max = videos.Count;
                for (var i = index; i < max; i++)
                {
                    xml.Add(VideoResponseUtils.CustomLiveListRes(videos[i], filter, 0, isEx));
                }
            }
            else
            {
                xml.Add(from v in videos select VideoResponseUtils.CustomLiveListRes(v, filter, 0, isEx));
            }
            return xml.ToString(SaveOptions.DisableFormatting);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 分页输出频道列表
        /// </summary>
        private string CreatePageList(IEnumerable <LiveVideoNode> list, LiveFilter filter, VideoPars pars, VideoNodeKey key, bool isEx)
        {
            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));
        }
Exemplo n.º 18
0
 /// <summary>
 /// 直播扩展接口条件过滤方法集
 /// </summary>
 public static List<Func<LiveVideoNode, VideoPars, LiveFilter, bool>> FormateLiveVideoExFilter(LiveFilter filter, VideoPars pars)
 {
     var filters = new List<Func<LiveVideoNode, VideoPars, LiveFilter, bool>>(11);
     filters.Add(FilterFunUtils.LiveHiddenFlag);
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.LiveForbidden);
     }
     if (!string.IsNullOrEmpty(filter.beginletter))
         filters.Add(FilterFunUtils.LiveBeginLetter);
     if (pars.Flags != null)
         filters.Add(FilterFunUtils.LiveFlags);
     if (filter.ver <= 1)
         filters.Add(FilterFunUtils.LiveVer1);
     else
         filters.Add(FilterFunUtils.LiveVer2);
     if (filter.forbidvip == 1)
         filters.Add(FilterFunUtils.LiveForbidVip);
     if (filter.bitratemin != 0)
         filters.Add(FilterFunUtils.LiveBitMin);
     if (filter.bitratemax != 0)
         filters.Add(FilterFunUtils.LiveBitMax);
     if (filter.wmin != 0)
         filters.Add(FilterFunUtils.LiveWMin);
     if (filter.wmax != 0)
         filters.Add(FilterFunUtils.LiveWMax);
     if (filter.hmin != 0)
         filters.Add(FilterFunUtils.LiveHMin);
     if (filter.hmax != 0)
         filters.Add(FilterFunUtils.LiveHMax);
     return filters;
 }
Exemplo n.º 19
0
        /// <summary>
        /// 分页输出
        /// </summary>
        private string CreatePageList(LiveRecommandNode recommand, List <LiveVideoNode> videos, LiveNavFilter filter, VideoPars pars, bool isEx)
        {
            var vkey = new VideoNodeKey(filter.platform, 0, filter.auth);
            var xml  = new XElement("vlist");

            xml.Add(new XElement("nav_id", recommand.ID));
            xml.Add(new XElement("nav_name", recommand.Language[filter.lang].Title));
            xml.Add(new XElement("count", videos.Count));
            xml.Add(new XElement("page_count", PageUtils.PageCount(videos.Count, filter.c)));
            if (filter.c != 0 && filter.s != 0)
            {
                //currentVideos = videos.Skip(filter.c * (filter.s - 1)).Take(filter.c).ToList();
                xml.Add(new XElement("countInPage", filter.c));
                xml.Add(new XElement("page", filter.s));

                var index = (filter.s - 1) * filter.c;
                var max   = index + filter.c;
                if (max > videos.Count)
                {
                    max = videos.Count;
                }
                for (var i = index; i < max; i++)
                {
                    xml.Add(VideoResponseUtils.CustomLiveListRes(videos[i], filter, 0, isEx));
                }
            }
            else
            {
                xml.Add(from v in videos select VideoResponseUtils.CustomLiveListRes(v, filter, 0, isEx));
            }
            return(xml.ToString(SaveOptions.DisableFormatting));
        }
Exemplo n.º 20
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);
 }
Exemplo n.º 21
0
 /// <summary>
 /// LuceneNet分页输出
 /// </summary>
 private static string CreateSmarkPageList(LuceneResultNode result, RelevanceFilter filter, VideoPars pars, bool isEx)
 {
     var xml = new XElement("vlist");
     var count = result.AllCount - 1;
     if (count < 0)
         count = 0;
     xml.Add(new XElement("count", count));
     //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));
     for (var i = 1; i < result.AllCount; i++)
     {
         xml.Add(pars.ResponseFun(ListCache.Instance.Dictionary[int.Parse(result.Result[i])], filter, isEx));
     }
     return xml.ToString(SaveOptions.DisableFormatting);
 }
Exemplo n.º 22
0
 /// <summary>
 /// 标准排序
 /// </summary>
 public static IEnumerable <T> StandardSort(IEnumerable <T> query, ExFilterBase filter, VideoPars pars)
 {
     if (string.IsNullOrEmpty(pars.SortTag))
     {
         //return query.OrderByDescending(video => video.Main.CreateTime);
         return(query.OrderByDescending(video => video.Main.Rank).ThenByDescending(video => video.Main.CreateTime));
     }
     return(query.OrderBy(video => video.TagsRank[pars.SortTag]));
 }
Exemplo n.º 23
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);
 }
Exemplo n.º 24
0
 /// <summary>
 /// 直播频道排序,节目获取接口使用
 /// </summary>
 public static IEnumerable <LiveVideoNode> SortLiveVideos(IEnumerable <LiveVideoNode> query, LiveFilter filter, VideoPars pars)
 {
     if (!string.IsNullOrEmpty(filter.order))
     {
         if (filter.order == "t")   //热度、排行榜
         {
             query = HotLiveSort(query, filter);
         }
         else if (filter.order == "n")  //更新时间
         {
             query = query.OrderByDescending(video => video.Main.ModifyTime);
         }
         else if (filter.order == "a")
         {
             query = query.OrderBy(video => video.ChannelName);
         }
         else if (filter.order == "g")
         {
             query = query.OrderByDescending(video => video.BKInfo.Score);
         }
         else            //标准
         {
             query = StandardLiveSort(query, filter, pars);
         }
     }
     else            //标准
     {
         query = StandardLiveSort(query, filter, pars);
     }
     return(query);
 }
Exemplo n.º 25
0
        /// <summary>
        /// 分页输出
        /// </summary>
        private string CreatePageList(CoverNavNode node, CoverFilter filter, VideoPars pars, List<Func<VideoBase, ExFilterBase, bool>> filters, bool isEx)
        {
            var key = new VideoNodeKey(filter.platform, 0, filter.auth);
            var xml = new XElement("cover_list");
            int all = 0;
            var images = node.Images[key];
            for (var i = 0; i < images.Count && all < filter.c; i++)
            {
                var image = CoverImageCache.Instance.Items[images[i]];
                bool result = true;
                VideoBase video = null;
                if (image.ChannelType == 3)
                    video = ListCache.Instance.Dictionary[image.ChannelId];
                else
                    video = LiveListCache.Instance.Dictionary[image.ChannelId];
                foreach (var f in filters)
                {
                    result = result && f(video, filter);
                }
                if (!result)
                    continue;
                all++;

                XElement playlink;
                if (image.ChannelType == 3)
                    playlink = VideoResponseUtils.CreateVodPlayLinkVer2(image.ChannelId, filter, isEx);
                else
                    playlink = VideoResponseUtils.CreateLivePlayLinkVer2(image.ChannelId, filter, isEx);
                var subttitle = image.Language[filter.lang].SubTitle;
                if (filter.conlen != 0)
                    subttitle = subttitle.FormateSubStr(filter.conlen);
                xml.Add(new XElement("c",
                        new XElement("title", image.Language[filter.lang].Title),
                        new XElement("note", subttitle),
                        new XElement("vid", image.ChannelId),
                        new XElement("vtype", image.ChannelType == 3 ? "vod" : "live"),
                        playlink,
                        new XElement("cover_imgurl", image.ImageUrl),
                        new XElement("onlinetime", image.OnlineTime.ToString("yyyy-MM-dd HH:mm:ss"))
                    ));
            }
            return xml.ToString(SaveOptions.DisableFormatting);
        }
Exemplo n.º 26
0
        /// <summary>
        /// LuceneNet分页输出
        /// </summary>
        private static string CreateSmarkPageList(LuceneResultNode result, RelevanceFilter filter, VideoPars pars, bool isEx)
        {
            var xml   = new XElement("vlist");
            var count = result.AllCount - 1;

            if (count < 0)
            {
                count = 0;
            }
            xml.Add(new XElement("count", count));
            //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));
            for (var i = 1; i < result.AllCount; i++)
            {
                xml.Add(pars.ResponseFun(ListCache.Instance.Dictionary[int.Parse(result.Result[i])], filter, isEx));
            }
            return(xml.ToString(SaveOptions.DisableFormatting));
        }
Exemplo n.º 27
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));
        }
Exemplo n.º 28
0
        /// <summary>
        /// 直播扩展接口条件过滤方法集
        /// </summary>
        public static List <Func <LiveVideoNode, VideoPars, LiveFilter, bool> > FormateLiveVideoExFilter(LiveFilter filter, VideoPars pars)
        {
            var filters = new List <Func <LiveVideoNode, VideoPars, LiveFilter, bool> >(11);

            filters.Add(FilterFunUtils.LiveHiddenFlag);
            if (filter.forbidden)
            {
                filters.Add(FilterFunUtils.LiveForbidden);
            }
            if (!string.IsNullOrEmpty(filter.beginletter))
            {
                filters.Add(FilterFunUtils.LiveBeginLetter);
            }
            if (pars.Flags != null)
            {
                filters.Add(FilterFunUtils.LiveFlags);
            }
            if (filter.ver <= 1)
            {
                filters.Add(FilterFunUtils.LiveVer1);
            }
            else
            {
                filters.Add(FilterFunUtils.LiveVer2);
            }
            if (filter.forbidvip == 1)
            {
                filters.Add(FilterFunUtils.LiveForbidVip);
            }
            if (filter.bitratemin != 0)
            {
                filters.Add(FilterFunUtils.LiveBitMin);
            }
            if (filter.bitratemax != 0)
            {
                filters.Add(FilterFunUtils.LiveBitMax);
            }
            if (filter.wmin != 0)
            {
                filters.Add(FilterFunUtils.LiveWMin);
            }
            if (filter.wmax != 0)
            {
                filters.Add(FilterFunUtils.LiveWMax);
            }
            if (filter.hmin != 0)
            {
                filters.Add(FilterFunUtils.LiveHMin);
            }
            if (filter.hmax != 0)
            {
                filters.Add(FilterFunUtils.LiveHMax);
            }
            return(filters);
        }
Exemplo n.º 29
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);
 }
Exemplo n.º 30
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);
        }
Exemplo n.º 31
0
 /// <summary>
 /// 分页输出频道列表
 /// </summary>
 private string CreatePageList(IEnumerable<LiveVideoNode> list, LiveFilter filter, VideoPars pars, VideoNodeKey key, bool isEx)
 {
     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);
 }