Ejemplo n.º 1
0
        private static async Task <BiliBangumiMaster> GetBangumiMasterAsync(string url, string sessdata)
        {
            var json = await HttpHelper.GetJsonAsync(url, sessdata);

            if (json.code != 0)
            {
                throw new ParsingVideoException();
            }

            var list = new List <BiliBangumi>();
            int i    = 1;

            foreach (var b in json.result.episodes)
            {
                var video = new BiliVideo()
                {
                    Av    = b.aid,
                    Bv    = b.bvid,
                    Cid   = b.cid,
                    Title = json.result.season_title,
                    Name  = b.long_title,
                    Order = i
                };
                var bangumi = new BiliBangumi()
                {
                    EpisodeId = b.id,
                    Title     = video.Title,
                    Name      = video.Name,
                    Order     = i,
                    CoverUrl  = b.cover,
                    Video     = video
                };
                list.Add(bangumi);
                i++;
            }
            var master = new BiliBangumiMaster()
            {
                SeasonId       = json.result.season_id,
                MediaId        = json.result.media_id,
                Title          = json.result.season_title,
                Evaluate       = json.result.evaluate,
                CoverUrl       = json.result.cover,
                BGCoverUrl     = json.result.bkg_cover,
                SquareCoverUrl = json.result.square_cover,
                MediaType      = (MediaType)(int)json.result.type,
                EpisodeList    = list.ToArray()
            };

            return(master);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取番剧信息
        /// </summary>
        /// <param name="eporss"></param>
        /// <param name="type">0是ep,其他随便一个数字是ss</param>
        /// <param name="sESSDATA"></param>
        /// <returns></returns>
        public static async Task <BiliBangumi> GetBangumiInfoAsync(int eporss, int type, string sESSDATA)
        {
            List <(string, string)> cookies = null;

            if (!string.IsNullOrWhiteSpace(sESSDATA))
            {
                cookies = new List <(string, string)>();
                cookies.Add(("SESSDATA", sESSDATA));
            }
            BiliBangumiInfoJson json;

            if (type == 0)
            {
                json = JsonConvert.DeserializeObject <BiliBangumiInfoJson>
                           (await NetHelper.HttpGet("http://api.bilibili.com/pgc/view/web/season", cookies, $"ep_id={eporss}"));
            }
            else
            {
                json = JsonConvert.DeserializeObject <BiliBangumiInfoJson>
                           (await NetHelper.HttpGet("http://api.bilibili.com/pgc/view/web/season", cookies, $"season_id={eporss}"));
            }

            var videoList = new List <BiliVideo>();

            json.result.episodes.ForEach(v =>
            {
                videoList.Add(new BiliVideo()
                {
                    Bv    = v.bvid,
                    Cid   = v.cid,
                    Name  = v.long_title,
                    Title = json.result.season_title,
                    P     = 1,
                    Cover = v.cover
                });
            });
            var bangumi = new BiliBangumi()
            {
                Title       = json.result.season_title,
                Cover       = json.result.cover,
                MediaId     = json.result.media_id,
                SeasonId    = json.result.season_id,
                EpisodeList = videoList
            };

            return(bangumi);
        }
        public static async Task <BangumiDialog> CreateAsync(BiliBangumi bangumi, XamlRoot xamlRoot)
        {
            var model = new BangumiDialogViewModel();

            model.VideoTitle = bangumi.Title;

            //var stream = await NetHelper.HttpGetStreamAsync(bangumi.Cover, 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(bangumi.Cover));

            model.VideoCover = img;

            var list = bangumi.EpisodeList.Select(v => new VideoInfo()
            {
                Info = new BiliVideoInfo()
                {
                    Bv       = v.Bv,
                    Cid      = v.Cid,
                    Name     = v.Name,
                    CoverUrl = v.Cover
                },
                ToDownload           = false,
                BackGroundColorBrush = bangumi.EpisodeList.IndexOf(v) % 2 == 0
                ? new SolidColorBrush(Colors.WhiteSmoke) : new SolidColorBrush(Colors.White)
            }).ToList();
            var i = 1;

            foreach (var video in list)//添加序号
            {
                video.Info.Name = i + "." + video.Info.Name;
                i++;
            }
            model.VideoList = new ObservableCollection <VideoInfo>(list);

            return(new BangumiDialog(model, xamlRoot));
        }