Exemple #1
0
 /// <summary>
 /// 直播分类信息扩展接口
 /// </summary>
 public string LiveTypesEx(LiveFilter filter)
 {
     try
     {
         var key     = new VideoNodeKey(filter.platform, filter.type, filter.auth);
         var root    = new XElement("types");
         var filters = VideoNodesUtil.FormateTagFilter(filter);
         root.Add(from livetype in LiveTypeDicCache.Instance.Items
                  where livetype.Channels.ContainsKey(key)
                  let count = GetChannelCount(livetype, key, filter, filters)
                              where count > 0
                              select new XElement("type",
                                                  new XElement("tid", livetype.ID),
                                                  new XElement("name", livetype.Language[filter.lang].Title),
                                                  new XElement("count", count),
                                                  new XElement("image", livetype.PicLink)
                                                  ));
         return(root.ToString(SaveOptions.DisableFormatting));
     }
     catch (KeyNotFoundException)
     {
         return(NoPlatLive());
     }
     catch (Exception ex)
     {
         return(BoxUtils.FormatErrorMsg(ex));
     }
 }
Exemple #2
0
 /// <summary>
 /// 直播节目预告输出
 /// </summary>
 public static XElement LiveListParade(ChannelLiveItemsNode parade, LiveFilter filter)
 {
     return(new XElement("parade",
                         new XAttribute("begin_time", parade.StartTime.TimeOfDay.ToString()),
                         parade.Language[filter.lang].Title
                         ));
 }
Exemple #3
0
 /// <summary>
 /// 获取节目信息扩展接口
 /// </summary>
 public string LiveListsEx(LiveFilter filter)
 {
     try
     {
         var pars    = VideoParsUtils.FormatLiveVideoPars(filter);
         var filters = VideoNodesUtil.FormateLiveVideoExFilter(filter, pars);
         var key     = new VideoNodeKey(filter.platform, filter.type, filter.auth);
         var query   = LiveListCache.Instance.Items[key].Where(v =>
         {
             bool result = true;
             foreach (var f in filters)
             {
                 result = result && f(v, pars, filter);
             }
             return(result);
         });
         return(CreatePageList(VideoSortUtils <LiveVideoNode> .SortLiveVideos(query, filter, pars), filter, pars, key, true));
     }
     catch (KeyNotFoundException)
     {
         return(NoPlatLive());
     }
     catch (Exception ex)
     {
         return(BoxUtils.FormatErrorMsg(ex));
     }
 }
        /// <summary>
        /// 直播节目请求参数处理
        /// </summary>
        public static VideoPars FormatLiveVideoPars(LiveFilter filter)
        {
            VideoPars vp = new VideoPars();

            if (filter.type != 0)
            {
                vp.SortTag = filter.type.ToString();
            }
            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);
        }
Exemple #5
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));
        }
Exemple #6
0
 /// <summary>
 /// 获取节目预告列表
 /// </summary>
 public string LiveParade(LiveFilter filter)
 {
     try
     {
         var video   = LiveListCache.Instance.Dictionary[filter.vid];
         var parades = video.Items.Where(p => p.StartTime.Date.Equals(filter.date.Date)).OrderBy(p => p.StartTime);
         return(CreateParades(video, parades, filter));
     }
     catch (KeyNotFoundException)
     {
         return(NoPlatLive());
     }
     catch (Exception ex)
     {
         return(BoxUtils.FormatErrorMsg(ex));
     }
 }
Exemple #7
0
        public static int PageList <T>(this IEnumerable <T> source, LiveFilter filter, VideoPars pars, XElement root, bool isEx) where T : LiveVideoNode
        {
            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(VideoResponseUtils.CustomLiveListRes(enumerator.Current, filter, filter.type, isEx));
                    }
                    num++;
                }
            }
            return(num);
        }
Exemple #8
0
        private int GetChannelCount(LiveTypeNode node, VideoNodeKey key, LiveFilter filter, List <Func <VideoBase, ExFilterBase, bool> > filters)
        {
            int count = 0;

            if (node.Channels.ContainsKey(key))
            {
                var cs = node.Channels[key];
                foreach (var c in cs)
                {
                    var result = true;
                    foreach (var f in filters)
                    {
                        result = result && f(LiveListCache.Instance.Dictionary[c], filter);
                    }
                    if (result)
                    {
                        count++;
                    }
                }
            }
            return(count);
        }
Exemple #9
0
        private void ConvertFilterEnumToIFilter(LiveFilter liveFilter)
        {
            switch (liveFilter)
            {
            case LiveFilter.None:
                activeFilter = null;
                break;

            case LiveFilter.Antique:
                activeFilter = new AntiqueFilter();
                break;

            case LiveFilter.AutoEnhance:
                activeFilter = new AutoEnhanceFilter();
                break;

            case LiveFilter.AutoLevels:
                activeFilter = new AutoLevelsFilter();
                break;

            case LiveFilter.Cartoon:
                activeFilter = new CartoonFilter();
                break;

            case LiveFilter.ColorBoost:
                activeFilter = new ColorBoostFilter();
                break;

            case LiveFilter.Grayscale:
                activeFilter = new GrayscaleFilter();
                break;

            case LiveFilter.Lomo:
                activeFilter = new LomoFilter();
                break;

            case LiveFilter.MagicPen:
                activeFilter = new MagicPenFilter();
                break;

            case LiveFilter.Negative:
                activeFilter = new NegativeFilter();
                break;

            case LiveFilter.Noise:
                activeFilter = new NoiseFilter();
                break;

            case LiveFilter.Oily:
                activeFilter = new OilyFilter();
                break;

            case LiveFilter.Paint:
                activeFilter = new PaintFilter();
                break;

            case LiveFilter.Sketch:
                activeFilter = new SketchFilter();
                break;

            case LiveFilter.Vignetting:
                activeFilter = new VignettingFilter();
                break;

            case LiveFilter.WhiteboardEnhancement:
                activeFilter = new WhiteboardEnhancementFilter();
                break;

            default:
                activeFilter = null;
                break;
            }
        }
Exemple #10
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);
        }
Exemple #11
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);
        }
 /// <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]));
 }
 /// <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);
 }
Exemple #14
0
        /// <summary>
        /// 输出频道预告列表
        /// </summary>
        private string CreateParades(LiveVideoNode video, IEnumerable <ChannelLiveItemsNode> parades, LiveFilter filter)
        {
            var root = new XElement("v",
                                    new XElement("vid", video.Main.ChannelID),
                                    new XElement("title", video.Language[filter.lang].ChannelName),
                                    new XElement("parade-date", filter.date.ToString("yyyy-MM-dd"))
                                    );
            var paradelist = new XElement("parade_list");

            paradelist.Add(from parade in parades select VideoResponseUtils.LiveListParade(parade, filter));
            root.Add(paradelist);
            return(root.ToString(SaveOptions.DisableFormatting));
        }