/// <summary> /// 分页输出 /// </summary> private string CreatePageList(LiveRecommandNode recommand, List <LiveVideoNode> videos, LiveNavFilter filter, VideoPars pars, bool isEx) { var vkey = new VideoNodeKey(filter.platform, 0, filter.auth); var xml = new XElement("vlist"); xml.Add(new XElement("nav_id", recommand.ID)); xml.Add(new XElement("nav_name", recommand.Language[filter.lang].Title)); xml.Add(new XElement("count", videos.Count)); xml.Add(new XElement("page_count", PageUtils.PageCount(videos.Count, filter.c))); if (filter.c != 0 && filter.s != 0) { //currentVideos = videos.Skip(filter.c * (filter.s - 1)).Take(filter.c).ToList(); xml.Add(new XElement("countInPage", filter.c)); xml.Add(new XElement("page", filter.s)); var index = (filter.s - 1) * filter.c; var max = index + filter.c; if (max > videos.Count) { max = videos.Count; } for (var i = index; i < max; i++) { xml.Add(VideoResponseUtils.CustomLiveListRes(videos[i], filter, 0, isEx)); } } else { xml.Add(from v in videos select VideoResponseUtils.CustomLiveListRes(v, filter, 0, isEx)); } return(xml.ToString(SaveOptions.DisableFormatting)); }
/// <summary> /// 分页输出 /// </summary> private string CreatePageList(CoverNavNode node, CoverFilter filter, VideoPars pars, List <Func <VideoBase, ExFilterBase, bool> > filters, bool isEx) { var key = new VideoNodeKey(filter.platform, 0, filter.auth); var xml = new XElement("cover_list"); int all = 0; var images = node.Images[key]; for (var i = 0; i < images.Count && all < filter.c; i++) { var image = CoverImageCache.Instance.Items[images[i]]; bool result = true; VideoBase video = null; if (image.ChannelType == 3) { video = ListCache.Instance.Dictionary[image.ChannelId]; } else { video = LiveListCache.Instance.Dictionary[image.ChannelId]; } foreach (var f in filters) { result = result && f(video, filter); } if (!result) { continue; } all++; XElement playlink; if (image.ChannelType == 3) { playlink = VideoResponseUtils.CreateVodPlayLinkVer2(image.ChannelId, filter, isEx); } else { playlink = VideoResponseUtils.CreateLivePlayLinkVer2(image.ChannelId, filter, isEx); } var subttitle = image.Language[filter.lang].SubTitle; if (filter.conlen != 0) { subttitle = subttitle.FormateSubStr(filter.conlen); } xml.Add(new XElement("c", new XElement("title", image.Language[filter.lang].Title), new XElement("note", subttitle), new XElement("vid", image.ChannelId), new XElement("vtype", image.ChannelType == 3 ? "vod" : "live"), playlink, new XElement("cover_imgurl", image.ImageUrl), new XElement("onlinetime", image.OnlineTime.ToString("yyyy-MM-dd HH:mm:ss")) )); } return(xml.ToString(SaveOptions.DisableFormatting)); }
/// <summary> /// LuceneNet分页输出 /// </summary> private string CreateSmarkPageList(LuceneResultNode result, LiveSearchFilter filter, bool isEx) { var key = new VideoNodeKey(filter.platform, 0, filter.auth); var xml = new XElement("vlist"); xml.Add(new XElement("count", result.AllCount)); xml.Add(new XElement("page_count", PageUtils.PageCount(result.AllCount, filter.c))); xml.Add(new XElement("countInPage", filter.c)); xml.Add(new XElement("page", filter.s)); xml.Add(from v in result.Result select VideoResponseUtils.CustomLiveListRes(LiveListCache.Instance.Dictionary[int.Parse(v)], filter, 0, isEx)); return(xml.ToString(SaveOptions.DisableFormatting)); }
/// <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)); }
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); }
/// <summary> /// LuceneNet节目预告分页输出 /// </summary> private string CreateParadeSmarkPageList(LuceneResultNode result, LiveSearchFilter filter, bool isEx) { var vkey = new VideoNodeKey(filter.platform, 0, filter.auth); var parades = from parade in result.Result select ChannelLiveItemsCache.Instance.Items[int.Parse(parade)]; var query = from parade in parades group parade by parade.ChannelID; var list = query.ToList(); //var groupquery = query.Skip(filter.c * (filter.s - 1)).Take(filter.c); //var count = groupquery.Count(); var index = (filter.s - 1) * filter.c; var max = index + filter.c; if (max > list.Count) { max = list.Count; } var count = max - index; var xml = new XElement("vlist"); xml.Add(new XElement("count", count)); xml.Add(new XElement("page_count", PageUtils.PageCount(count, filter.c))); xml.Add(new XElement("countInPage", filter.c)); xml.Add(new XElement("page", filter.s)); for (var i = index; i < max; i++) { var group = list[i]; var v = VideoResponseUtils.CustomLiveListRes(LiveListCache.Instance.Dictionary[group.Key], filter, 0, isEx); var paraderoot = new XElement("parade_list"); foreach (var key in group) { paraderoot.Add(VideoResponseUtils.LiveListSearchParade(key, filter)); } v.Add(paraderoot); xml.Add(v); } return(xml.ToString(SaveOptions.DisableFormatting)); }