Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }