Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
 }
Ejemplo n.º 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;
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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]));
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
             }
         }
     }
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 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;
 }
Ejemplo n.º 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));
 }
Ejemplo n.º 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;
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
 }
Ejemplo n.º 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;
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
 }
Ejemplo n.º 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;
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 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;
 }
Ejemplo n.º 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;
             }
         }
     }
 }
Ejemplo n.º 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;
 }