private static BiliVideoMaster GetVideoMaster(dynamic json) { var master = new BiliVideoMaster() { Av = json.data.aid, Bv = json.data.bvid, Title = json.data.title, CoverUrl = json.data.pic, VideoCount = json.data.videos }; var list = new List <BiliVideo>(); foreach (var video in json.data.pages) { list.Add(new BiliVideo() { Av = json.data.aid, Bv = json.data.bvid, Cid = video.cid, Name = video.part, Title = json.data.title, Order = video.page }); } master.Videos = list.ToArray(); return(master); }
public static async Task <BiliVideoMaster> GetVideoMasterInfoAsync(long av, string sESSDATA) { List <(string, string)> cookies = null; if (!string.IsNullOrWhiteSpace(sESSDATA)) { cookies = new List <(string, string)>(); cookies.Add(("SESSDATA", sESSDATA)); } var json = JsonConvert.DeserializeObject <VideoInfoJson>(await NetHelper.HttpGet("http://api.bilibili.com/x/web-interface/view", cookies, $"aid={av}")); var videoList = new List <BiliVideo>(); //此处并未请求视频流 json.data.pages.ForEach(v => { videoList.Add(new BiliVideo() { Bv = json.data.bvid, Cid = v.cid, Name = v.part, P = v.page, Title = json.data.title, Cover = json.data.pic }); }); var master = new BiliVideoMaster() { Bv = json.data.bvid, Picture = json.data.pic, Title = json.data.title, VideoList = videoList }; return(master); }
protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); _master = (BiliVideoMaster)e.Parameter; Title = _master.Title; videoListView.ItemsSource = _master.Videos; try { CoverImage.Source = new BitmapImage(new Uri(_master.CoverUrl)); } catch (Exception ex) { _logger.Info(ex, $"获取封面图片失败:{_master.CoverUrl}"); } }
public static async Task <MasteredVideoDialog> CreateAsync(BiliVideoMaster master, XamlRoot xamlRoot) { var model = new MasteredVideoDialogViewModel(); model.VideoTitle = master.Title; //var stream = await NetHelper.HttpGetStreamAsync(master.Picture, null, null); //var file = await ApplicationData.Current.LocalCacheFolder.CreateFileAsync("videocovercache", CreationCollisionOption.GenerateUniqueName); //var fileStream = await file.OpenStreamForWriteAsync(); //await stream.CopyToAsync(fileStream); //stream.Close(); //fileStream.Close(); //var img = new BitmapImage(); //await img.SetSourceAsync((await file.OpenStreamForReadAsync()).AsRandomAccessStream()); var img = new BitmapImage(new Uri(master.Picture)); model.VideoCover = img; var list = master.VideoList.Select(v => new VideoInfo() { Info = new BiliVideoInfo() { Bv = v.Bv, Cid = v.Cid, Name = v.Name, CoverUrl = master.Picture }, ToDownload = false, BackGroundColorBrush = master.VideoList.IndexOf(v) % 2 == 0 ? new SolidColorBrush(Colors.WhiteSmoke) : new SolidColorBrush(Colors.White) }).ToList(); model.VideoList = new ObservableCollection <VideoInfo>(list); var dialog = new MasteredVideoDialog(model, xamlRoot); return(dialog); }