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 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 #3
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;
 }
Exemple #4
0
 /// <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;
 }
 /// <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 #6
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);
 }
Exemple #7
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 #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
 /// <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 #10
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);
     }
 }