Ejemplo n.º 1
0
        /// <summary>
        /// 获取视频流的信息,从VideoPage返回
        /// </summary>
        /// <param name="page"></param>
        public void GetVideoStream(ViewModels.PageViewModels.VideoPage page)
        {
            var playUrl = VideoStream.GetVideoPlayUrl(page.Avid, page.Bvid, page.Cid);

            Utils.VideoPageInfo(playUrl, page);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取视频剧集
        /// </summary>
        /// <returns></returns>
        public List <ViewModels.PageViewModels.VideoPage> GetVideoPages()
        {
            if (videoView == null)
            {
                return(null);
            }
            if (videoView.Pages == null)
            {
                return(null);
            }
            if (videoView.Pages.Count == 0)
            {
                return(null);
            }

            List <ViewModels.PageViewModels.VideoPage> videoPages = new List <ViewModels.PageViewModels.VideoPage>();

            int order = 0;

            foreach (var page in videoView.Pages)
            {
                order++;

                // 标题
                string name;
                if (videoView.Pages.Count == 1)
                {
                    name = videoView.Title;
                }
                else
                {
                    //name = page.part;
                    if (page.Part == "")
                    {
                        // 如果page.part为空字符串
                        name = $"{videoView.Title}-P{order}";
                    }
                    else
                    {
                        name = page.Part;
                    }
                }

                ViewModels.PageViewModels.VideoPage videoPage = new ViewModels.PageViewModels.VideoPage
                {
                    Avid       = videoView.Aid,
                    Bvid       = videoView.Bvid,
                    Cid        = page.Cid,
                    EpisodeId  = -1,
                    FirstFrame = page.FirstFrame,
                    Order      = order,
                    Name       = name,
                    Duration   = "N/A"
                };

                // UP主信息
                videoPage.Owner = videoView.Owner;
                if (videoPage.Owner == null)
                {
                    videoPage.Owner = new Core.BiliApi.Models.VideoOwner
                    {
                        Name = "",
                        Face = "",
                        Mid  = -1,
                    };
                }

                // 文件命名中的时间格式
                string timeFormat = SettingsManager.GetInstance().GetFileNamePartTimeFormat();
                // 视频发布时间
                DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区
                DateTime dateTime  = startTime.AddSeconds(videoView.Pubdate);
                videoPage.PublishTime = dateTime.ToString(timeFormat);

                videoPages.Add(videoPage);
            }

            return(videoPages);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取视频章节与剧集
        /// </summary>
        /// <returns></returns>
        public List <VideoSection> GetVideoSections(bool noUgc = false)
        {
            if (videoView == null)
            {
                return(null);
            }

            List <VideoSection> videoSections = new List <VideoSection>();

            // 不需要ugc内容
            if (noUgc)
            {
                videoSections.Add(new VideoSection
                {
                    Id         = 0,
                    Title      = "default",
                    IsSelected = true,
                    VideoPages = GetVideoPages()
                });

                return(videoSections);
            }

            if (videoView.UgcSeason == null)
            {
                return(null);
            }
            if (videoView.UgcSeason.Sections == null)
            {
                return(null);
            }
            if (videoView.UgcSeason.Sections.Count == 0)
            {
                return(null);
            }

            foreach (UgcSection section in videoView.UgcSeason.Sections)
            {
                List <ViewModels.PageViewModels.VideoPage> pages = new List <ViewModels.PageViewModels.VideoPage>();
                int order = 0;
                foreach (var episode in section.Episodes)
                {
                    order++;
                    ViewModels.PageViewModels.VideoPage page = new ViewModels.PageViewModels.VideoPage
                    {
                        Avid       = episode.Aid,
                        Bvid       = episode.Bvid,
                        Cid        = episode.Cid,
                        EpisodeId  = -1,
                        FirstFrame = episode.Page.FirstFrame,
                        Order      = order,
                        Name       = episode.Title,
                        Duration   = "N/A"
                    };

                    // UP主信息
                    page.Owner = videoView.Owner;
                    if (page.Owner == null)
                    {
                        page.Owner = new Core.BiliApi.Models.VideoOwner
                        {
                            Name = "",
                            Face = "",
                            Mid  = -1,
                        };
                    }

                    // 文件命名中的时间格式
                    string timeFormat = SettingsManager.GetInstance().GetFileNamePartTimeFormat();
                    // 视频发布时间
                    DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区
                    DateTime dateTime  = startTime.AddSeconds(videoView.Pubdate);
                    page.PublishTime = dateTime.ToString(timeFormat);
                    // 这里的发布时间有问题,
                    // 如果是合集,也会执行这里,
                    // 但是发布时间是入口视频的,不是所有视频的
                    // TODO 修复

                    pages.Add(page);
                }

                VideoSection videoSection = new VideoSection
                {
                    Id         = section.Id,
                    Title      = section.Title,
                    VideoPages = pages
                };
                videoSections.Add(videoSection);
            }

            videoSections[0].IsSelected = true;

            return(videoSections);
        }