Пример #1
0
        /// <summary>
        /// 点播节目单带节目介绍输出
        /// </summary>
        public static XElement ConLenListRes(VideoNode video, ExFilterBase filter, bool isEx)
        {
            var res  = VideoUtils.FormatStrArray(10, video.Main.VideoWidth, "|", video.Main.VideoHeight);
            var flag = video.Flags.FormatListToStr(SplitArray.Line);
            var v    = new XElement("v",
                                    new XElement("vid", video.Main.ChannelID),
                                    new XElement("playlink", BoxUtils.GetXmlCData(video.PlayLink)),
                                    new XElement("title", video.Language[filter.lang].ChannelName),
                                    new XElement("subtitle", video.Language[filter.lang].SubTitle),
                                    new XElement("type", video.Type),
                                    new XElement("catalog", video.Language[filter.lang].CatalogTags),
                                    new XElement("director", video.Language[filter.lang].Directors),
                                    new XElement("act", video.Language[filter.lang].Actors),
                                    new XElement("year", video.YearTags),
                                    new XElement("area", video.Language[filter.lang].AreaTags),
                                    new XElement("imgurl", video.ResImage),
                                    new XElement("sloturl", ImplUtils.SlogImageJoin(video.SlotImage)),
                                    new XElement("state", video.State),
                                    new XElement("total_state", video.BKInfo.Episode),
                                    new XElement("note", ""),
                                    new XElement("mark", video.BKInfo.Score),
                                    new XElement("hot", ImplUtils.ConvertHot(video.Hot)),
                                    new XElement("pv", video.PV),
                                    new XElement("bitrate", video.Main.BitRate),
                                    new XElement("resolution", res),
                                    new XElement("flag", flag),
                                    new XElement("duration", video.Main.TimeLength / 60),
                                    new XElement("content", BoxUtils.GetXmlCData(video.Language[filter.lang].Introduction.FormateSubStr(filter.conlen))),
                                    new XElement("onlinetime", video.Main.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"))
                                    );

            return(v);
        }
Пример #2
0
        public static List <Func <VideoBase, ExFilterBase, bool> > CommonFilter(ExFilterBase filter)
        {
            var filters = new List <Func <VideoBase, ExFilterBase, bool> >(4);

            FormatForbiddenName(filter);
            if (filter.forbidden)
            {
                filters.Add(FilterFunUtils.CommonForbidden);
            }
            if (filter.ver <= 1)
            {
                filters.Add(FilterFunUtils.ComVer1);
            }
            else
            {
                filters.Add(FilterFunUtils.ComVer2);
                if (filter.screen != "v")
                {
                    filters.Add(FilterFunUtils.ComVirtual);
                }
            }
            if (filter.forbidvip == 1)
            {
                filters.Add(FilterFunUtils.ComForbidVip);
            }
            filters.Add(FilterFunUtils.Common);
            return(filters);
        }
Пример #3
0
 /// <summary>
 /// 点播节目单带节目介绍输出
 /// </summary>
 public static XElement ConLenListRes(VideoNode video, ExFilterBase filter, bool isEx)
 {
     var res = VideoUtils.FormatStrArray(10, video.Main.VideoWidth, "|", video.Main.VideoHeight);
     var flag = video.Flags.FormatListToStr(SplitArray.Line);
     var v = new XElement("v",
             new XElement("vid", video.Main.ChannelID),
             new XElement("playlink", BoxUtils.GetXmlCData(video.PlayLink)),
             new XElement("title", video.Language[filter.lang].ChannelName),
             new XElement("subtitle", video.Language[filter.lang].SubTitle),
             new XElement("type", video.Type),
             new XElement("catalog", video.Language[filter.lang].CatalogTags),
             new XElement("director", video.Language[filter.lang].Directors),
             new XElement("act", video.Language[filter.lang].Actors),
             new XElement("year", video.YearTags),
             new XElement("area", video.Language[filter.lang].AreaTags),
             new XElement("imgurl", video.ResImage),
             new XElement("sloturl", ImplUtils.SlogImageJoin(video.SlotImage)),
             new XElement("state", video.State),
             new XElement("total_state", video.BKInfo.Episode),
             new XElement("note", ""),
             new XElement("mark", video.BKInfo.Score),
             new XElement("hot", ImplUtils.ConvertHot(video.Hot)),
             new XElement("pv", video.PV),
             new XElement("bitrate", video.Main.BitRate),
             new XElement("resolution", res),
             new XElement("flag", flag),
             new XElement("duration", video.Main.TimeLength / 60),
             new XElement("content", BoxUtils.GetXmlCData(video.Language[filter.lang].Introduction.FormateSubStr(filter.conlen))),
             new XElement("onlinetime", video.Main.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"))
             );
     return v;
 }
Пример #4
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;
        }
Пример #5
0
        /// <summary>
        /// 创建二代直播播放串
        /// </summary>
        public static XElement CreateLivePlayLinkVer2(int vid, ExFilterBase filter, bool isEx)
        {
            var video = LiveListCache.Instance.Dictionary[vid];
            var p     = new XElement("playlink2");
            IEnumerable <int> groups = video.Groups;

            if (isEx && video.Groups.Count > 1)
            {
                var filters = VideoNodesUtil.FormateTagFilter(filter);
                groups = video.Groups.Where(v =>
                {
                    var result = true;
                    var gv     = LiveListCache.Instance.Dictionary[v];
                    foreach (var f in filters)     //过滤不符合的子频道
                    {
                        result = result && f(gv, filter);
                    }
                    return(result);
                });
            }
            foreach (var g in groups)
            {
                var gv  = LiveListCache.Instance.Dictionary[g];
                var res = VideoUtils.FormatStrArray(10, gv.Main.VideoWidth, "|", gv.Main.VideoHeight);
                p.Add(new XElement("source",
                                   new XAttribute("mark", gv.Language[filter.lang].Mark),
                                   new XAttribute("bitrate", gv.Main.BitRate),
                                   new XAttribute("resolution", res),
                                   BoxUtils.GetXmlCData(gv.Main.PlayLink)
                                   ));
            }
            return(p);
        }
Пример #6
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]));
 }
Пример #7
0
        /// <summary>
        /// 基于版本的点播通用基本过滤方法集
        /// </summary>
        public static List <Func <VideoBase, ExFilterBase, bool> > FormateVodFilter(ExFilterBase filter)
        {
            var filters = new List <Func <VideoBase, ExFilterBase, bool> >(8);

            FormatForbiddenName(filter);
            if (filter.forbidden)
            {
                filters.Add(FilterFunUtils.CommonForbidden);
            }
            if (filter.ver <= 1)
            {
                filters.Add(FilterFunUtils.ComVer1);
            }
            else
            {
                filters.Add(FilterFunUtils.ComVer2);
                if (filter.screen != "v")
                {
                    filters.Add(FilterFunUtils.ComVirtual);
                }
            }
            if (filter.forbidvip == 1)
            {
                filters.Add(FilterFunUtils.ComForbidVip);
            }
            if (filter.bitratemax != 0)
            {
                filters.Add(FilterFunUtils.ComBitMax);
            }
            if (filter.bitratemin != 0)
            {
                filters.Add(FilterFunUtils.ComBitMin);
            }
            if (filter.hmax != 0)
            {
                filters.Add(FilterFunUtils.ComHMax);
            }
            if (filter.hmin != 0)
            {
                filters.Add(FilterFunUtils.ComHMin);
            }
            if (filter.wmax != 0)
            {
                filters.Add(FilterFunUtils.ComWMax);
            }
            if (filter.wmin != 0)
            {
                filters.Add(FilterFunUtils.ComWMin);
            }
            return(filters);
        }
Пример #8
0
 private static void FormatForbiddenName(ExFilterBase filter)
 {
     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))
             {
                 filter.commonfbcode = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName;
             }
             else
             {
                 filter.forbidden = false;
             }
         }
     }
 }
Пример #9
0
        public static int PageList <T>(this IEnumerable <T> source, ExFilterBase filter, VideoPars pars, XElement root, bool isEx) where T : VideoNode
        {
            var index = (filter.s - 1) * filter.c;
            var max   = index + filter.c;
            int num   = 0;

            using (IEnumerator <T> enumerator = source.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    if (index <= num && num < max)
                    {
                        root.Add(pars.ResponseFun(enumerator.Current, filter, isEx));
                    }
                    num++;
                }
            }
            return(num);
        }
Пример #10
0
        public static int PageList(this IEnumerable <int> source, ExFilterBase filter, VideoPars pars, XElement root, bool isEx)
        {
            var index = (filter.s - 1) * filter.c;
            var max   = index + filter.c;
            int num   = 0;

            using (var enumerator = source.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    if (index <= num && num < max)
                    {
                        root.Add(pars.ResponseFun(ListCache.Instance.Dictionary[enumerator.Current], filter, isEx));
                    }
                    num++;
                }
            }
            return(num);
        }
Пример #11
0
        /// <summary>
        /// 不基于版本的通用扩展接口过滤方法集
        /// </summary>
        public static List <Func <VideoBase, ExFilterBase, bool> > FormateTagFilter(ExFilterBase filter)
        {
            var filters = new List <Func <VideoBase, ExFilterBase, bool> >(7);

            FormatForbiddenName(filter);
            if (filter.forbidden)
            {
                filters.Add(FilterFunUtils.CommonForbidden);
            }
            if (filter.forbidvip == 1)
            {
                filters.Add(FilterFunUtils.ComForbidVip);
            }
            if (filter.bitratemax != 0)
            {
                filters.Add(FilterFunUtils.ComBitMax);
            }
            if (filter.bitratemin != 0)
            {
                filters.Add(FilterFunUtils.ComBitMin);
            }
            if (filter.hmax != 0)
            {
                filters.Add(FilterFunUtils.ComHMax);
            }
            if (filter.hmin != 0)
            {
                filters.Add(FilterFunUtils.ComHMin);
            }
            if (filter.wmax != 0)
            {
                filters.Add(FilterFunUtils.ComWMax);
            }
            if (filter.wmin != 0)
            {
                filters.Add(FilterFunUtils.ComWMin);
            }
            return(filters);
        }
Пример #12
0
        /// <summary>
        /// 创建二代点播播放串,合集只写出首集
        /// </summary>
        public static XElement CreateVodPlayLinkVer2(int vid, ExFilterBase filter, bool isEx)
        {
            var video = ListCache.Instance.Dictionary[vid];
            var p     = new XElement("playlink2",
                                     new XAttribute("duration", video.ViceChannels != null && video.ViceChannels.Count > 0 ? video.ViceChannels[0].Duration : video.Main.TimeLength)
                                     //new XAttribute("start_point", 60.22),
                                     //new XAttribute("end_point", 289.22)
                                     );
            IEnumerable <int> groups = video.Groups;

            if (isEx && video.Groups.Count > 1)
            {
                var filters = VideoNodesUtil.FormateTagFilter(filter);
                groups = video.Groups.Where(v =>
                {
                    var result = true;
                    var gv     = ListCache.Instance.Dictionary[v];
                    foreach (var f in filters)     //过滤不符合的子频道
                    {
                        result = result && f(gv, filter);
                    }
                    return(result);
                });
            }
            foreach (var g in groups)
            {
                var gv  = ListCache.Instance.Dictionary[g];
                var res = VideoUtils.FormatStrArray(10, gv.Main.VideoWidth, "|", gv.Main.VideoHeight);
                p.Add(new XElement("source",
                                   new XAttribute("mark", gv.Language[filter.lang].Mark),
                                   new XAttribute("bitrate", gv.Main.BitRate),
                                   new XAttribute("filelength", gv.ViceChannels != null && gv.ViceChannels.Count > 0 ? gv.ViceChannels[0].Duration * gv.Main.BitRate * (1024 / 8) : gv.Main.TimeLength * gv.Main.BitRate * (1024 / 8)),
                                   new XAttribute("resolution", res),
                                   BoxUtils.GetXmlCData(gv.PlayLink)
                                   ));
            }
            return(p);
        }
Пример #13
0
        /// <summary>
        /// 直播节目单带节目介绍输出
        /// </summary>
        public static XElement CustomLiveListRes(LiveVideoNode video, ExFilterBase filter, int type, bool isEx)
        {
            var res = VideoUtils.FormatStrArray(10, video.Main.VideoWidth, "|", video.Main.VideoHeight);
            var flags = video.Flags.FormatListToStr(SplitArray.Line);
            XElement playlink = null;
            if (filter.ver < 2)
                playlink = new XElement("playlink", BoxUtils.GetXmlCData(video.Main.PlayLink));
            else
                playlink = CreateLivePlayLinkVer2(video.Main.ChannelID, filter, isEx);
            var v = new XElement("v",
                    new XElement("vid", video.Main.ChannelID),
                    playlink,
                    new XElement("title", video.Language[filter.lang].ChannelName),
                    new XElement("type", type),
                    new XElement("imgurl", video.ResImage),
                    new XElement("sloturl", ImplUtils.SlogImageJoin(video.SlotImage)),
                    new XElement("note", ""),
                    new XElement("mark", video.BKInfo.Score),
                    new XElement("hot", ImplUtils.ConvertHot(video.Hot)),
                    new XElement("pv", video.PV),
                    new XElement("bitrate", video.Main.BitRate),
                    new XElement("resolution", res),
                    new XElement("flag", flags),
                    new XElement("content", BoxUtils.GetXmlCData(video.Language[filter.lang].Introduction)),
                    new XElement("onlinetime", video.Main.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"))
                    );
            if (filter.nowplay)
            {
                var flag = false;
                for (var i = 0; i < video.Items.Count; i++)
                {
                    if (video.Items[i].StartTime > DateTime.Now)
                    {
                        if (i != 0)
                        {
                            v.Add(new XElement("nowplay",
                                new XAttribute("begin_time", video.Items[i - 1].StartTime.TimeOfDay.ToString()),
                                video.Items[i - 1].Language[filter.lang].Title)
                                );
                        }
                        v.Add(new XElement("willplay",
                                new XAttribute("begin_time", video.Items[i].StartTime.TimeOfDay.ToString()),
                                video.Items[i].Language[filter.lang].Title)
                                );
                        flag = true;
                        break;
                    }
                }
                if (!flag && video.Items.Count > 0 && video.Items[video.Items.Count - 1].StartTime.Date.Equals(DateTime.Now.Date))
                {

                    v.Add(new XElement("nowplay",
                                new XAttribute("begin_time", video.Items[video.Items.Count - 1].StartTime.TimeOfDay.ToString()),
                                video.Items[video.Items.Count - 1].Language[filter.lang].Title)
                                );
                }
            }
            return v;
        }
Пример #14
0
 /// <summary>
 /// 创建二代点播播放串,合集只写出首集
 /// </summary>
 public static XElement CreateVodPlayLinkVer2(int vid, ExFilterBase filter, bool isEx)
 {
     var video = ListCache.Instance.Dictionary[vid];
     var p = new XElement("playlink2",
                     new XAttribute("duration", video.ViceChannels != null && video.ViceChannels.Count > 0 ? video.ViceChannels[0].Duration : video.Main.TimeLength)
                     //new XAttribute("start_point", 60.22),
                     //new XAttribute("end_point", 289.22)
                 );
     IEnumerable<int> groups = video.Groups;
     if (isEx && video.Groups.Count > 1)
     {
         var filters = VideoNodesUtil.FormateTagFilter(filter);
         groups = video.Groups.Where(v =>
         {
             var result = true;
             var gv = ListCache.Instance.Dictionary[v];
             foreach (var f in filters)     //过滤不符合的子频道
             {
                 result = result && f(gv, filter);
             }
             return result;
         });
     }
     foreach (var g in groups)
     {
         var gv = ListCache.Instance.Dictionary[g];
         var res = VideoUtils.FormatStrArray(10, gv.Main.VideoWidth, "|", gv.Main.VideoHeight);
         p.Add(new XElement("source",
             new XAttribute("mark", gv.Language[filter.lang].Mark),
             new XAttribute("bitrate", gv.Main.BitRate),
             new XAttribute("filelength", gv.ViceChannels != null && gv.ViceChannels.Count > 0 ? gv.ViceChannels[0].Duration * gv.Main.BitRate * (1024 / 8) : gv.Main.TimeLength * gv.Main.BitRate * (1024 / 8)),
             new XAttribute("resolution", res),
             BoxUtils.GetXmlCData(gv.PlayLink)
         ));
     }
     return p;
 }
Пример #15
0
 /// <summary>
 /// 热度、排行榜排序
 /// </summary>
 public static IEnumerable <T> HotSort(IEnumerable <T> query, ExFilterBase filter)
 {
     //if (!string.IsNullOrEmpty(filter.beginletter))
     //    return query.Where(v => v.SpellName.StartsWith(filter.beginletter)).OrderByDescending(v => v.Hot);
     return(query.OrderByDescending(video => video.Hot));
 }
Пример #16
0
 /// <summary>
 /// 创建二代直播播放串
 /// </summary>
 public static XElement CreateLivePlayLinkVer2(int vid, ExFilterBase filter, bool isEx)
 {
     var video = LiveListCache.Instance.Dictionary[vid];
     var p = new XElement("playlink2");
     IEnumerable<int> groups = video.Groups;
     if (isEx && video.Groups.Count > 1)
     {
         var filters = VideoNodesUtil.FormateTagFilter(filter);
         groups = video.Groups.Where(v =>
         {
             var result = true;
             var gv = LiveListCache.Instance.Dictionary[v];
             foreach (var f in filters)     //过滤不符合的子频道
             {
                 result = result && f(gv, filter);
             }
             return result;
         });
     }
     foreach (var g in groups)
     {
         var gv = LiveListCache.Instance.Dictionary[g];
         var res = VideoUtils.FormatStrArray(10, gv.Main.VideoWidth, "|", gv.Main.VideoHeight);
         p.Add(new XElement("source",
             new XAttribute("mark", gv.Language[filter.lang].Mark),
             new XAttribute("bitrate", gv.Main.BitRate),
             new XAttribute("resolution", res),
             BoxUtils.GetXmlCData(gv.Main.PlayLink)
         ));
     }
     return p;
 }
Пример #17
0
        /// <summary>
        /// 二代点播节目单不带节目介绍输出
        /// </summary>
        public static XElement CustomListResVer2(VideoNode video, ExFilterBase filter, bool isEx)
        {
            var flag = video.Flags.FormatListToStr(SplitArray.Line);
            var v    = new XElement("v",
                                    new XElement("vid", video.Main.ChannelID)
                                    );
            var first = ListCache.Instance.Dictionary[video.Groups[0]];
            var p     = new XElement("playlink2",
                                     new XAttribute("duration", first.ViceChannels != null && first.ViceChannels.Count > 0 ? first.ViceChannels[0].Duration : first.Main.TimeLength)
                                     //new XAttribute("start_point", 60.22),
                                     //new XAttribute("end_point", 289.22)
                                     );

            var maxbit = 0;
            var maxres = string.Empty;
            IEnumerable <int> groups = video.Groups;

            if (isEx && video.Groups.Count > 1)
            {
                var filters = VideoNodesUtil.FormateTagFilter(filter);
                groups = video.Groups.Where(vod =>
                {
                    var result = true;
                    var gv     = ListCache.Instance.Dictionary[vod];
                    foreach (var f in filters)     //过滤不符合的子频道
                    {
                        result = result && f(gv, filter);
                    }
                    return(result);
                });
            }
            foreach (var g in groups)
            {
                VideoNode gv  = ListCache.Instance.Dictionary[g];
                var       res = VideoUtils.FormatStrArray(10, gv.Main.VideoWidth, "|", gv.Main.VideoHeight);
                if (maxbit < gv.Main.BitRate)
                {
                    maxbit = gv.Main.BitRate;
                    maxres = res;
                }
                p.Add(new XElement("source",
                                   new XAttribute("mark", gv.Language[filter.lang].Mark),
                                   new XAttribute("bitrate", gv.Main.BitRate),
                                   new XAttribute("filelength", gv.ViceChannels != null && gv.ViceChannels.Count > 0 ? gv.ViceChannels[0].Duration * gv.Main.BitRate * (1024 / 8) : gv.Main.TimeLength * gv.Main.BitRate * (1024 / 8)),
                                   new XAttribute("resolution", res),
                                   BoxUtils.GetXmlCData(gv.PlayLink)
                                   ));
            }
            v.Add(
                p,
                new XElement("title", video.Language[filter.lang].ChannelName),
                new XElement("subtitle", video.Language[filter.lang].SubTitle),
                new XElement("type", video.Type),
                new XElement("catalog", video.Language[filter.lang].CatalogTags),
                new XElement("director", video.Language[filter.lang].Directors),
                new XElement("act", video.Language[filter.lang].Actors),
                new XElement("year", video.YearTags),
                new XElement("area", video.Language[filter.lang].AreaTags),
                new XElement("imgurl", video.ResImage),
                new XElement("sloturl", ImplUtils.SlogImageJoin(video.SlotImage)),
                new XElement("state", video.State),
                new XElement("total_state", video.BKInfo.Episode),
                new XElement("note", ""),
                new XElement("mark", video.BKInfo.Score),
                new XElement("hot", ImplUtils.ConvertHot(video.Hot)),
                new XElement("pv", video.PV),
                new XElement("virtual", video.Virtuals == null ? 0 : 1),
                new XElement("bitrate", maxbit),
                new XElement("resolution", maxres),
                new XElement("flag", flag),
                new XElement("duration", video.Main.TimeLength / 60),
                new XElement("onlinetime", video.Main.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"))
                );
            return(v);
        }
Пример #18
0
 /// <summary>
 /// 基于版本的点播通用基本过滤方法集
 /// </summary>
 public static List<Func<VideoBase, ExFilterBase, bool>> FormateVodFilter(ExFilterBase filter) 
 {
     var filters = new List<Func<VideoBase, ExFilterBase, bool>>(8);
     FormatForbiddenName(filter);
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.CommonForbidden);
     }
     if (filter.ver <= 1)
     {
         filters.Add(FilterFunUtils.ComVer1);
     }
     else
     {
         filters.Add(FilterFunUtils.ComVer2);
         if (filter.screen != "v")
         {
             filters.Add(FilterFunUtils.ComVirtual);
         }
     }
     if (filter.forbidvip == 1)
         filters.Add(FilterFunUtils.ComForbidVip);
     if (filter.bitratemax != 0)
         filters.Add(FilterFunUtils.ComBitMax);
     if (filter.bitratemin != 0)
         filters.Add(FilterFunUtils.ComBitMin);
     if (filter.hmax != 0)
         filters.Add(FilterFunUtils.ComHMax);
     if (filter.hmin != 0)
         filters.Add(FilterFunUtils.ComHMin);
     if (filter.wmax != 0)
         filters.Add(FilterFunUtils.ComWMax);
     if (filter.wmin != 0)
         filters.Add(FilterFunUtils.ComWMin);
     return filters;
 }
Пример #19
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;
 }
Пример #20
0
        /// <summary>
        /// 直播节目单带节目介绍输出
        /// </summary>
        public static XElement CustomLiveListRes(LiveVideoNode video, ExFilterBase filter, int type, bool isEx)
        {
            var      res      = VideoUtils.FormatStrArray(10, video.Main.VideoWidth, "|", video.Main.VideoHeight);
            var      flags    = video.Flags.FormatListToStr(SplitArray.Line);
            XElement playlink = null;

            if (filter.ver < 2)
            {
                playlink = new XElement("playlink", BoxUtils.GetXmlCData(video.Main.PlayLink));
            }
            else
            {
                playlink = CreateLivePlayLinkVer2(video.Main.ChannelID, filter, isEx);
            }
            var v = new XElement("v",
                                 new XElement("vid", video.Main.ChannelID),
                                 playlink,
                                 new XElement("title", video.Language[filter.lang].ChannelName),
                                 new XElement("type", type),
                                 new XElement("imgurl", video.ResImage),
                                 new XElement("sloturl", ImplUtils.SlogImageJoin(video.SlotImage)),
                                 new XElement("note", ""),
                                 new XElement("mark", video.BKInfo.Score),
                                 new XElement("hot", ImplUtils.ConvertHot(video.Hot)),
                                 new XElement("pv", video.PV),
                                 new XElement("bitrate", video.Main.BitRate),
                                 new XElement("resolution", res),
                                 new XElement("flag", flags),
                                 new XElement("content", BoxUtils.GetXmlCData(video.Language[filter.lang].Introduction)),
                                 new XElement("onlinetime", video.Main.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"))
                                 );

            if (filter.nowplay)
            {
                var flag = false;
                for (var i = 0; i < video.Items.Count; i++)
                {
                    if (video.Items[i].StartTime > DateTime.Now)
                    {
                        if (i != 0)
                        {
                            v.Add(new XElement("nowplay",
                                               new XAttribute("begin_time", video.Items[i - 1].StartTime.TimeOfDay.ToString()),
                                               video.Items[i - 1].Language[filter.lang].Title)
                                  );
                        }
                        v.Add(new XElement("willplay",
                                           new XAttribute("begin_time", video.Items[i].StartTime.TimeOfDay.ToString()),
                                           video.Items[i].Language[filter.lang].Title)
                              );
                        flag = true;
                        break;
                    }
                }
                if (!flag && video.Items.Count > 0 && video.Items[video.Items.Count - 1].StartTime.Date.Equals(DateTime.Now.Date))
                {
                    v.Add(new XElement("nowplay",
                                       new XAttribute("begin_time", video.Items[video.Items.Count - 1].StartTime.TimeOfDay.ToString()),
                                       video.Items[video.Items.Count - 1].Language[filter.lang].Title)
                          );
                }
            }
            return(v);
        }
Пример #21
0
 public static List<Func<VideoBase, ExFilterBase, bool>> CommonCustomFilter(ExFilterBase filter)
 {
     var filters = new List<Func<VideoBase, ExFilterBase, bool>>(1);
     FormatForbiddenName(filter);
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.CommonForbidden);
     }
     return filters;
 }
Пример #22
0
 public static List<Func<VideoBase, ExFilterBase, bool>> CommonFilter(ExFilterBase filter)
 {
     var filters = new List<Func<VideoBase, ExFilterBase, bool>>(4);
     FormatForbiddenName(filter);
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.CommonForbidden);
     }
     if (filter.ver <= 1)
     {
         filters.Add(FilterFunUtils.ComVer1);
     }
     else
     {
         filters.Add(FilterFunUtils.ComVer2);
         if (filter.screen != "v")
         {
             filters.Add(FilterFunUtils.ComVirtual);
         }
     }
     if (filter.forbidvip == 1)
         filters.Add(FilterFunUtils.ComForbidVip);
     filters.Add(FilterFunUtils.Common);
     return filters;
 }
Пример #23
0
        public static List <Func <VideoBase, ExFilterBase, bool> > CommonCustomFilter(ExFilterBase filter)
        {
            var filters = new List <Func <VideoBase, ExFilterBase, bool> >(1);

            FormatForbiddenName(filter);
            if (filter.forbidden)
            {
                filters.Add(FilterFunUtils.CommonForbidden);
            }
            return(filters);
        }
Пример #24
0
 /// <summary>
 /// 二代点播节目单不带节目介绍输出
 /// </summary>
 public static XElement CustomListResVer2(VideoNode video, ExFilterBase filter, bool isEx)
 {
     var flag = video.Flags.FormatListToStr(SplitArray.Line);
     var v = new XElement("v",
                 new XElement("vid", video.Main.ChannelID)
             );
     var first = ListCache.Instance.Dictionary[video.Groups[0]];
     var p = new XElement("playlink2",
                 new XAttribute("duration", first.ViceChannels != null && first.ViceChannels.Count > 0 ? first.ViceChannels[0].Duration : first.Main.TimeLength)
                 //new XAttribute("start_point", 60.22),
                 //new XAttribute("end_point", 289.22)
             );
     
     var maxbit = 0;
     var maxres = string.Empty;
     IEnumerable<int> groups = video.Groups;
     if (isEx && video.Groups.Count > 1)
     {
         var filters = VideoNodesUtil.FormateTagFilter(filter);
         groups = video.Groups.Where(vod =>
         {
             var result = true;
             var gv = ListCache.Instance.Dictionary[vod];
             foreach (var f in filters)     //过滤不符合的子频道
             {
                 result = result && f(gv, filter);
             }
             return result;
         });
     }
     foreach (var g in groups)
     {
         VideoNode gv = ListCache.Instance.Dictionary[g];
         var res = VideoUtils.FormatStrArray(10, gv.Main.VideoWidth, "|", gv.Main.VideoHeight);
         if (maxbit < gv.Main.BitRate)
         {
             maxbit = gv.Main.BitRate;
             maxres = res;
         }
         p.Add(new XElement("source",
             new XAttribute("mark", gv.Language[filter.lang].Mark),
             new XAttribute("bitrate", gv.Main.BitRate),
             new XAttribute("filelength", gv.ViceChannels != null && gv.ViceChannels.Count > 0 ? gv.ViceChannels[0].Duration * gv.Main.BitRate * (1024 / 8) : gv.Main.TimeLength * gv.Main.BitRate * (1024 / 8)),
             new XAttribute("resolution", res),
             BoxUtils.GetXmlCData(gv.PlayLink)
         ));
     }
     v.Add(
         p,
      new XElement("title", video.Language[filter.lang].ChannelName),
      new XElement("subtitle", video.Language[filter.lang].SubTitle),
      new XElement("type", video.Type),
      new XElement("catalog", video.Language[filter.lang].CatalogTags),
      new XElement("director", video.Language[filter.lang].Directors),
      new XElement("act", video.Language[filter.lang].Actors),
      new XElement("year", video.YearTags),
      new XElement("area", video.Language[filter.lang].AreaTags),
      new XElement("imgurl", video.ResImage),
      new XElement("sloturl", ImplUtils.SlogImageJoin(video.SlotImage)),
      new XElement("state", video.State),
      new XElement("total_state", video.BKInfo.Episode),
      new XElement("note", ""),
      new XElement("mark", video.BKInfo.Score),
      new XElement("hot", ImplUtils.ConvertHot(video.Hot)),
      new XElement("pv", video.PV),
      new XElement("virtual", video.Virtuals == null ? 0 : 1),
      new XElement("bitrate", maxbit),
      new XElement("resolution", maxres),
      new XElement("flag", flag),
      new XElement("duration", video.Main.TimeLength / 60),
      new XElement("onlinetime", video.Main.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"))
      );
     return v;
 }
Пример #25
0
 private static void FormatForbiddenName(ExFilterBase filter)
 {
     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))
             {
                 filter.commonfbcode = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName;
             }
             else
             {
                 filter.forbidden = false;
             }
         }
     }
 }
Пример #26
0
 /// <summary>
 /// 不基于版本的通用扩展接口过滤方法集
 /// </summary>
 public static List<Func<VideoBase, ExFilterBase, bool>> FormateTagFilter(ExFilterBase filter)
 {
     var filters = new List<Func<VideoBase, ExFilterBase, bool>>(7);
     FormatForbiddenName(filter);
     if (filter.forbidden)
     {
         filters.Add(FilterFunUtils.CommonForbidden);
     }
     if (filter.forbidvip == 1)
         filters.Add(FilterFunUtils.ComForbidVip);
     if (filter.bitratemax != 0)
         filters.Add(FilterFunUtils.ComBitMax);
     if (filter.bitratemin != 0)
         filters.Add(FilterFunUtils.ComBitMin);
     if (filter.hmax != 0)
         filters.Add(FilterFunUtils.ComHMax);
     if (filter.hmin != 0)
         filters.Add(FilterFunUtils.ComHMin);
     if (filter.wmax != 0)
         filters.Add(FilterFunUtils.ComWMax);
     if (filter.wmin != 0)
         filters.Add(FilterFunUtils.ComWMin);
     return filters;
 }