コード例 #1
0
ファイル: LiveNav.cs プロジェクト: redscarf2/MyProjects
        /// <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));
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
ファイル: LiveList.cs プロジェクト: redscarf2/MyProjects
        /// <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));
        }
コード例 #5
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);
        }
コード例 #6
0
        /// <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));
        }