/// <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); }
/// <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); }
/// <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); }