private async void GetList(string name) { try { pr_Load.Visibility = Visibility.Visible; wc = new WebClientClass(); string url = string.Format("http://www.dilidili.com{0}", name); string results = await wc.GetResultsUTF8Encode(new Uri(url)); MatchCollection mc = Regex.Matches(results, @"<li><a href=""(.*?)"" target=""_self""><em><span>(.*?)</span>(.*?)</em></a></li>", RegexOptions.Multiline); List<DModel> listModel = new List<DModel>(); foreach (Match item in mc) { listModel.Add(new DModel() { url = item.Groups[1].Value, num=item.Groups[2].Value, desc=item.Groups[3].Value }); } list_Video.ItemsSource = listModel; } catch (Exception) { messShow.Show("读取失败", 3000); } finally { pr_Load.Visibility = Visibility.Collapsed; } }
public async Task GetQZRank() { try { WebClientClass wc = new WebClientClass(); string results = await wc.GetResults(new Uri("http://api.bilibili.cn/list?appkey=84b739484c36d653&order=hot&original=0&page=1&pagesize=20")); InfoModel model = new InfoModel(); model = JsonConvert.DeserializeObject<InfoModel>(results); JObject json = JObject.Parse(model.list.ToString()); QQ_Rank_QZ.Items.Clear(); List<InfoModel> ReList = new List<InfoModel>(); for (int i = 0; i < 20; i++) { ReList.Add(new InfoModel { aid = (string)json[i.ToString()]["aid"], title = (string)json[i.ToString()]["title"], pic = (string)json[i.ToString()]["pic"], author = (string)json[i.ToString()]["author"], play = (string)json[i.ToString()]["play"], video_review = (string)json[i.ToString()]["video_review"], num = i + 1 }); } QQ_Rank_QZ.ItemsSource = ReList; } catch (Exception ex) { MessageDialog md = new MessageDialog(ex.Message); await md.ShowAsync(); } }
protected override void OnNavigatedFrom(NavigationEventArgs e) { if (wc!=null) { wc =null; } }
public static List<string> Downloaded = new List<string>();//保存已经下载过的CID数据 public void Dispose() { if (wc != null) { wc = null; } }
public async Task<string> GetVideoUri(string cid, int quality) { //http://interface.bilibili.com/playurl?platform=android&cid=5883400&quality=2&otype=json&appkey=422fd9d7289a1dd9&type=mp4 try { wc = new WebClientClass(); string results = await wc.GetResults(new Uri("http://interface.bilibili.com/playurl?platform=android&cid=" + cid + "&quality=" + quality + "&otype=json&appkey=422fd9d7289a1dd9&type=mp4")); VideoUriModel model = JsonConvert.DeserializeObject<VideoUriModel>(results); List<VideoUriModel> model1 = JsonConvert.DeserializeObject<List<VideoUriModel>>(model.durl.ToString()); return model1[0].url; } catch (Exception) { return null; } }
public async void GetPlayInfo(string mid, int quality) { //http://interface.bilibili.com/playurl?platform=android&cid=5883400&quality=2&otype=json&appkey=422fd9d7289a1dd9&type=mp4 try { WebClientClass wc = new WebClientClass(); string results = await wc.GetResults(new Uri("http://interface.bilibili.com/playurl?platform=android&cid=" + mid + "&quality=" + 2 + "&otype=json&appkey=422fd9d7289a1dd9&type=mp4")); VideoUriModel model = JsonConvert.DeserializeObject<VideoUriModel>(results); List<VideoUriModel> model1 = JsonConvert.DeserializeObject<List<VideoUriModel>>(model.durl.ToString()); mediaElment.Source = new Uri(model1[0].url); } catch (Exception) { MessageDialog md = new MessageDialog("视频地址获取失败!", "错误"); await md.ShowAsync(); } }
public async void DownDanMu(string cid, StorageFolder folder) { try { wc = new WebClientClass(); string results = await wc.GetResults(new Uri("http://comment.bilibili.com/" + cid + ".xml")); //将弹幕存在在应用文件夹 //StorageFolder folder = ApplicationData.Current.LocalFolder; //StorageFolder DowFolder = await KnownFolders.VideosLibrary.CreateFolderAsync("Bili-Download", CreationCollisionOption.OpenIfExists); StorageFile fileWrite = await folder.CreateFileAsync(cid + ".xml", CreationCollisionOption.ReplaceExisting); await FileIO.WriteTextAsync(fileWrite, results); } catch (Exception) { //return null; } }
private async void GetTopic() { try { pr_Load.Visibility = Visibility.Visible; WebClientClass wc = new WebClientClass(); string results = await wc.GetResults(new Uri("http://www.bilibili.com/index/slideshow.json")); TopicModel model = JsonConvert.DeserializeObject<TopicModel>(results); list_Topic.ItemsSource = JsonConvert.DeserializeObject<List<TopicModel>>(model.list.ToString()); } catch (Exception ex) { messShow.Show("读取话题失败\r\n" + ex.Message, 3000); } finally { pr_Load.Visibility = Visibility.Collapsed; } }
private async Task GetTagInfo(int page, string tid, int type) { try { WebClientClass wc = new WebClientClass(); string results = await wc.GetResults(new Uri(String.Format("http://bangumi.bilibili.com/api/get_season_by_tag?indexType={0}&page={1}&pagesize=20&tag_id={2}", type, page, tid))); BanSeasonTagModel model = JsonConvert.DeserializeObject<BanSeasonTagModel>(results); List<BanSeasonTagModel> ls = JsonConvert.DeserializeObject<List<BanSeasonTagModel>>(model.result.ToString()); foreach (BanSeasonTagModel item in ls) { ls_Tag.Items.Add(item); } getPage++; if (model.pages < getPage) { btn_LoadMore.IsEnabled = false; btn_LoadMore.Content = "加载完了..."; } } catch (Exception) { messShow.Show("读取失败,请重试",3000); } }
private async void GetListInfo(string date) { try { pr_load.Visibility = Visibility.Visible; wc = new WebClientClass(); string url = string.Format("http://www.dilidili.com/anime/{0}/", date); string results = await wc.GetResultsUTF8Encode(new Uri(url)); MatchCollection mc = Regex.Matches(results, @"<div class=""item"">.*?<div class=""content"">.*?<div class=""title"">.*?<a href=""(.*?)"" target=""_blank"">(.*?)</a>.*?<span class=""data""><b>年代:</b>(.*?)</span>.*?</div>.*?<p><b>地区:</b>(.*?)</p>.*?<p><b>类型:</b>(.*?)</p>.*?<p><b>看点:</b>(.*?)</p>.*?<p><b>简介:</b>(.*?)</p>.*?</div>.*?<div class=""cover"">.*?<a href=""(.*?)"" target=""_blank"">.*?<img src=""(.*?)"">.*?</a>.*?</div>", RegexOptions.Singleline); List<DiliModel> listModel = new List<DiliModel>(); foreach (Match item in mc) { listModel.Add(new DiliModel() { url = item.Groups[1].Value, title = item.Groups[2].Value, date = item.Groups[3].Value, area = item.Groups[4].Value, tag = item.Groups[5].Value, shortDesc = item.Groups[6].Value, desc = item.Groups[7].Value, img = item.Groups[9].Value }); } list_Info.ItemsSource = listModel; } catch (Exception) { messShow.Show("读取失败",3000); } finally { pr_load.Visibility = Visibility.Collapsed; } }
private async void SendRepost() { var ctrl = "[]"; var at_uids = ""; atlist.Clear(); var txt = txt_Comment.Text; if (atDisplaylist.Count != 0) { foreach (var item in atDisplaylist) { if (txt.Contains(item.text)) { atlist.Add(new AtModel() { data = item.data.ToString(), length = item.length - 2, location = txt.IndexOf(item.text), type = 1 }); var d = item.text.Replace("[", "").Replace("]", ""); txt = txt.Replace(item.text, d); at_uids += item.data.ToString() + ","; } } ctrl = JsonConvert.SerializeObject(atlist); at_uids = at_uids.Remove(at_uids.Length - 1, 1); atDisplaylist.Clear(); } if (txt == "") { txt = "转发动态"; } try { string url = "https://api.live.bilibili.com/dynamic_repost/v1/dynamic_repost/repost?access_key={0}&appkey={1}&build=5250000&platform=android&ts={2}"; url = string.Format(url, ApiHelper.access_key, ApiHelper.AndroidKey.Appkey, ApiHelper.GetTimeSpan_2); url += "&sign" + ApiHelper.GetSign(url); string content = "uid={0}&dynamic_id={1}&content={2}&at_uids={3}&ctrl={4}"; content = string.Format(content, ApiHelper.GetUserId(), _dynamicCardsModel.desc.dynamic_id, Uri.EscapeDataString(txt), at_uids, Uri.EscapeDataString(ctrl)); var re = await WebClientClass.PostResultsUtf8(new Uri(url), content); Newtonsoft.Json.Linq.JObject obj = JObject.Parse(re); if (obj["code"].ToInt32() == 0) { _dynamicCardsModel.desc.repost += 1; Utils.ShowMessageToast("转发成功"); this.Hide(); } else { Utils.ShowMessageToast("转发失败" + obj["message"].ToString()); } } catch (Exception) { Utils.ShowMessageToast("转发发生错误"); } }
public async void GetLiveInfo() { try { pr_Load.Visibility = Visibility.Visible; //gridview_SJ.ItemsSource=null; //gridview_DJ.Items.Clear(); //gridview_FY.Items.Clear(); //gridview_HH.Items.Clear(); //gridview_JJ.Items.Clear(); ////gridview_SH.Items.Clear(); //gridview_WL.Items.Clear(); //gridview_YZ.Items.Clear(); //gridview_CW.Items.Clear(); string url = string.Format("http://live.bilibili.com/AppNewIndex/common?_device=android&platform=android&scale=xxhdpi"); string results = await WebClientClass.GetResults_Live(new Uri(url)); HomeLiveModel model = JsonConvert.DeserializeObject <HomeLiveModel>(results); if (model.code == 0) { HomeLiveModel dataModel = JsonConvert.DeserializeObject <HomeLiveModel>(model.data.ToString()); List <HomeLiveModel> bannerModel = JsonConvert.DeserializeObject <List <HomeLiveModel> >(dataModel.banner.ToString()); List <HomeLiveModel> partModel = JsonConvert.DeserializeObject <List <HomeLiveModel> >(dataModel.partitions.ToString()); home_flipView.ItemsSource = bannerModel; foreach (HomeLiveModel item in partModel) { HomeLiveModel partitionModel = JsonConvert.DeserializeObject <HomeLiveModel>(item.partition.ToString()); List <HomeLiveModel> livesModel = JsonConvert.DeserializeObject <List <HomeLiveModel> >(item.lives.ToString()); switch (partitionModel.name) { //case "热门直播": // //for (int i = 0; i < 12; i++) // //{ // // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // // livesModel[i].src = coverModel.src; // // livesModel[i].name = ownerModel.name; // // livesModel[i].mid = ownerModel.mid; // // livesModel[i].face = ownerModel.face; // // gridview_Hot.Items.Add(livesModel[i]); // //} // gridview_Hot.ItemsSource = livesModel; // break; case "手机直播": //for (int i = 0; i < livesModel.Count - 1; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_SJ.Items.Add(livesModel[i]); //} gridview_SJ.ItemsSource = livesModel; break; case "唱见舞见": //for (int i = 0; i < livesModel.Count - 1; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_CW.Items.Add(livesModel[i]); //} gridview_CW.ItemsSource = livesModel; break; //case "萌宅推荐": // //for (int i = 0; i < livesModel.Count - 1; i++) // //{ // // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // // livesModel[i].src = coverModel.src; // // livesModel[i].name = ownerModel.name; // // livesModel[i].mid = ownerModel.mid; // // livesModel[i].face = ownerModel.face; // // gridview_MZ.Items.Add(livesModel[i]); // //} // gridview_MZ.ItemsSource = livesModel; // break; case "绘画专区": //for (int i = 0; i < livesModel.Count-1; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_HH.Items.Add(livesModel[i]); //} gridview_HH.ItemsSource = livesModel; break; case "御宅文化": //for (int i = 0; i < 12; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_YZ.Items.Add(livesModel[i]); //} gridview_YZ.ItemsSource = livesModel; break; case "单机联机": //for (int i = 0; i < 12; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_DJ.Items.Add(livesModel[i]); //} gridview_DJ.ItemsSource = livesModel; break; case "网络游戏": //for (int i = 0; i < 12; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_WL.Items.Add(livesModel[i]); //} gridview_WL.ItemsSource = livesModel; break; case "电子竞技": //for (int i = 0; i < 12; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_JJ.Items.Add(livesModel[i]); //} gridview_JJ.ItemsSource = livesModel; break; case "放映厅": //for (int i = 0; i < 12; i++) //{ // HomeLiveModel ownerModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].owner.ToString()); // HomeLiveModel coverModel = JsonConvert.DeserializeObject<HomeLiveModel>(livesModel[i].cover.ToString()); // livesModel[i].src = coverModel.src; // livesModel[i].name = ownerModel.name; // livesModel[i].mid = ownerModel.mid; // livesModel[i].face = ownerModel.face; // gridview_FY.Items.Add(livesModel[i]); //} gridview_FY.ItemsSource = livesModel; break; default: break; } } isLoaded = true; } else { messShow.Show("读取直播失败" + model.message, 3000); isLoaded = false; } } catch (Exception ex) { if (ex.HResult == -2147012867 || ex.HResult == -2147012889) { messShow.Show("无法连接服务器,请检查你的网络连接", 3000); } else { messShow.Show("读取直播失败" + ex.Message, 3000); } //ErrorEvent("读取直播失败" + ex.Message); isLoaded = false; } finally { pr_Load.Visibility = Visibility.Collapsed; } }
private async void LoadMusic(string id) { try { string url = string.Format("https://api.bilibili.com/audio/music-service-c/songs/playing?access_key={0}&appkey={1}&build=5250000&mid={2}&mobi_app=android&platform=android&song_id={3}&ts={4}", ApiHelper.access_key, ApiHelper.AndroidKey.Appkey, ApiHelper.GetUserId(), id, ApiHelper.GetTimeSpan); url += "&sign=" + ApiHelper.GetSign(url); string re = await WebClientClass.GetResults(new Uri(url)); SongInfoModel obj = JsonConvert.DeserializeObject <SongInfoModel>(re); if (obj.code == 0) { if (obj.data.mid == 0) { user.Visibility = Visibility.Collapsed; intro.Visibility = Visibility.Collapsed; } else { user.Visibility = Visibility.Visible; intro.Visibility = Visibility.Visible; } if (obj.data.pgc_info != null) { btn_OpenPcMenu.Visibility = Visibility.Visible; } else { btn_OpenPcMenu.Visibility = Visibility.Collapsed; } this.DataContext = obj.data; //if (obj.data.is_collect==0) //{ // btn_Collect.Visibility = Visibility.Visible; // btn_CancelCollect.Visibility = Visibility.Collapsed; //} //else //{ // btn_Collect.Visibility = Visibility.Collapsed; // btn_CancelCollect.Visibility = Visibility.Visible; //} if (obj.data.up_is_follow == 0) { btn_FollowUser.Visibility = Visibility.Visible; btn_CancelFollowUser.Visibility = Visibility.Collapsed; } else { btn_FollowUser.Visibility = Visibility.Collapsed; btn_CancelFollowUser.Visibility = Visibility.Visible; } if (MusicHelper.playList.Find(x => x.songid == _songId) == null) { var m = await MusicHelper.GetMusicUri(_songId); if (m != null) { MusicHelper.AddToPlay(new MusicPlayModel() { url = m, artist = obj.data.author, pic = obj.data.cover_url, songid = id, title = obj.data.title }); } else { await new MessageDialog("无法读取歌曲播放地址").ShowAsync(); } Utils.ShowMessageToast("已经添加到播放列表"); } } else { Utils.ShowMessageToast(obj.msg); } } catch (Exception) { Utils.ShowMessageToast("读取歌曲信息错误"); } }
private async void GetChatMe() { try { wc = new WebClientClass(); // http://message.bilibili.com/api/msg/query.room.list.do?access_key=a36a84cc8ef4ea2f92c416951c859a25&actionKey=appkey&appkey=c1b107428d337928&build=414000&page_size=100&platform=android&ts=1461404884000&sign=5e212e424761aa497a75b0fb7fbde775 string url = string.Format("http://message.bilibili.com/api/msg/query.room.list.do?access_key={0}&actionKey=appkey&appkey={1}&build=411005&page_size=100&platform=android&ts={2}", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpen); url += "&sign=" + ApiHelper.GetSign(url); string results = await wc.GetResults(new Uri(url)); MessageChatModel model = JsonConvert.DeserializeObject<MessageChatModel>(results); if (model.code == 0) { List<MessageChatModel> list = JsonConvert.DeserializeObject<List<MessageChatModel>>(model.data.ToString()); list_ChatMe.ItemsSource = list; } else { messShow.Show("读取失败" + model.message, 3000); } } catch (Exception) { messShow.Show("读取失败", 3000); } }
public static async Task <string> LoginBilibili(string UserName, string Password) { try { //https://api.bilibili.com/login?appkey=422fd9d7289a1dd9&platform=wp&pwd=JPJclVQpH4jwouRcSnngNnuPEq1S1rizxVJjLTg%2FtdqkKOizeIjS4CeRZsQg4%2F500Oye7IP4gWXhCRfHT6pDrboBNNkYywcrAhbOPtdx35ETcPfbjXNGSxteVDXw9Xq1ng0pcP1burNnAYtNRSayEKC1jiugi1LKyWbXpYE6VaM%3D&type=json&userid=xiaoyaocz&sign=74e4c872ec7b9d83d3a8a714e7e3b4b3 //发送第一次请求,得到access_key string url = "https://api.bilibili.com/login?appkey=422fd9d7289a1dd9&platform=wp&pwd=" + WebUtility.UrlEncode(await GetEncryptedPassword(Password)) + "&type=json&userid=" + WebUtility.UrlEncode(UserName); url += "&sign=" + ApiHelper.GetSign(url); string results = await WebClientClass.GetResults(new Uri(url)); //Json解析及数据判断 LoginModel model = new LoginModel(); model = JsonConvert.DeserializeObject <LoginModel>(results); if (model.code == -627) { return("登录失败,密码错误!"); } if (model.code == -626) { return("登录失败,账号不存在!"); } if (model.code == -625) { return("密码错误多次"); } if (model.code == -628) { return("未知错误"); } if (model.code == -1) { return("登录失败,程序注册失败!请联系作者!"); } Windows.Web.Http.HttpClient hc = new Windows.Web.Http.HttpClient(); if (model.code == 0) { access_key = model.access_key; Windows.Web.Http.HttpResponseMessage hr2 = await hc.GetAsync(new Uri("http://api.bilibili.com/login/sso?&access_key=" + model.access_key + "&appkey=422fd9d7289a1dd9&platform=wp")); hr2.EnsureSuccessStatusCode(); SettingHelper.Set_Access_key(model.access_key); } //看看存不存在Cookie HttpBaseProtocolFilter hb = new HttpBaseProtocolFilter(); HttpCookieCollection cookieCollection = hb.CookieManager.GetCookies(new Uri("http://bilibili.com/")); List <string> ls = new List <string>(); foreach (HttpCookie item in cookieCollection) { ls.Add(item.Name); } if (ls.Contains("DedeUserID")) { return("登录成功"); } else { return("登录失败"); } } catch (Exception ex) { if (ex.HResult == -2147012867) { return("登录失败,检查你的网络连接!"); } else { return("登录发生错误"); } } }
/// <summary> /// 读取视频播放地址 /// </summary> /// <param name="model"></param> /// <param name="quality"></param> /// <returns></returns> public static async Task <ReturnPlayModel> GetVideoUrl(string aid, string cid, int qn) { try { if (qn < 10) { switch (qn) { case 1: qn = 32; break; case 2: qn = 64; break; case 3: qn = 80; break; case 4: qn = 116; break; default: qn = 64; break; } } List <string> urls = new List <string>(); string url = $"https://api.bilibili.com/x/player/playurl?avid={aid}&cid={cid}&qn={qn}&type=&otype=json&appkey={ApiHelper._appKey_VIDEO}"; url += "&sign=" + ApiHelper.GetSign_VIDEO(url); string re = await WebClientClass.GetResults(new Uri(url)); FlvPlyaerUrlModel m = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); if (m.code == 0) { var playList = new SYEngine.Playlist(SYEngine.PlaylistTypes.NetworkHttp); foreach (var item in m.data.durl) { urls.Add(item.url); playList.Append(item.url, item.size, item.length / 1000); } playList.NetworkConfigs = CreatePlaylistNetworkConfigs("https://www.bilibili.com/video/av" + aid + "/"); return(new ReturnPlayModel() { usePlayMode = UsePlayMode.SYEngine, playlist = playList, urls = urls, from = "bilibili" }); } var biliplus = await GetBiliPlusUrl(cid, qn, "https://www.bilibili.com/video/av" + aid + "/"); if (biliplus != null) { return(biliplus); } return(null); } catch (Exception) { return(null); } }
public async void GetBangumiInfo(string banID) { //string uri = "http://bangumi.bilibili.com/api/season?_device=wp&_ulv=10000&build=411005&platform=android&appkey=422fd9d7289a1dd9&ts="+APIHelper.GetTimeSpen+ "000&type=sp&sp_id=56719"; //string sign= APIHelper.GetSign(uri); //uri += "&sign=" + sign; try { pr_load.Visibility = Visibility.Visible; wc = new WebClientClass(); string uri = ""; uri = string.Format("http://bangumi.bilibili.com/api/season?_device=wp&access_key={2}&_ulv=10000&build=411005&platform=android&appkey=422fd9d7289a1dd9&ts={0}000&type=bangumi&season_id={1}", ApiHelper.GetTimeSpen, banID, ApiHelper.access_key); uri += "&sign=" + ApiHelper.GetSign(uri); string result = await wc.GetResults(new Uri(uri)); BangumiInfoModel model = new BangumiInfoModel(); if ((int)JObject.Parse(result)["code"] == 0) { model = JsonConvert.DeserializeObject<BangumiInfoModel>(JObject.Parse(result)["result"].ToString()); grid_Info.DataContext = model; BangumiInfoModel m = JsonConvert.DeserializeObject<BangumiInfoModel>(model.user_season.ToString()); if (m.attention == 0) { font_icon.Glyph = "\uE006"; btn_concern.Label = "订阅"; } else { font_icon.Glyph = "\uE00B"; btn_concern.Label = "取消订阅"; } List<BangumiInfoModel> list = JsonConvert.DeserializeObject<List<BangumiInfoModel>>(model.episodes.ToString()); List<BangumiInfoModel> list2 = new List<BangumiInfoModel>(); for (int i = 0; i < list.Count; i++) { list[i].Num = i; list2.Add(list[i]); if (DownloadManage.Downloaded.Contains(list[i].danmaku.ToString())) { list[i].inLocal = true; } } list_E.ItemsSource = list2; List<BangumiInfoModel> list_CV = JsonConvert.DeserializeObject<List<BangumiInfoModel>>(model.actor.ToString()); txt_CV.Text = ""; foreach (BangumiInfoModel item in list_CV) { txt_CV.Text += string.Format("{0}:{1}\r\n", item.role, item.actor); } List<BangumiInfoModel> list_Tag = JsonConvert.DeserializeObject<List<BangumiInfoModel>>(model.tags.ToString()); Grid_tag.Children.Clear(); foreach (BangumiInfoModel item in list_Tag) { HyperlinkButton btn = new HyperlinkButton(); btn.DataContext = item; btn.Margin = new Thickness(0, 0, 10, 0); btn.Content = item.tag_name; btn.Click += Btn_Click; Grid_tag.Children.Add(btn); } } if ((int)JObject.Parse(result)["code"] == -3) { messShow.Show("密钥注册失败,请联系作者",3000); } if ((int)JObject.Parse(result)["code"] == 10) { messShow.Show(JObject.Parse(result)["message"].ToString(), 3000); } } catch (Exception ex) { messShow.Show("发生错误\r\n" + ex.Message, 3000); } finally { pr_load.Visibility = Visibility.Collapsed; } }
/// <summary> /// 取稍后再看列表 /// </summary> /// <returns></returns> public async Task <ReturnModel <ObservableCollection <ToViewsModel> > > GetToViewList() { try { if (!ApiHelper.IsLogin()) { return(new ReturnModel <ObservableCollection <ToViewsModel> >() { message = "请先登录", success = false }); } string url = string.Format("https://api.bilibili.com/x/v2/history/toview/web?access_key={0}&appkey={1}&ts={2}", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpan); url += "&sign=" + ApiHelper.GetSign(url); var results = await WebClientClass.GetResults(new Uri(url)); ToViewsModel model = JsonConvert.DeserializeObject <ToViewsModel>(results); if (model.code == 0) { if (model.data.list == null) { model.data.list = new ObservableCollection <ToViewsModel>(); } return(new ReturnModel <ObservableCollection <ToViewsModel> >() { success = true, message = "", data = model.data.list, }); } else { return(new ReturnModel <ObservableCollection <ToViewsModel> >() { success = false, message = model.message }); } } catch (Exception ex) { if (LogHelper.IsNetworkError(ex)) { return(new ReturnModel <ObservableCollection <ToViewsModel> >() { success = false, message = "无法连接服务器,请检查网络连接" }); } else { LogHelper.WriteLog(ex); return(new ReturnModel <ObservableCollection <ToViewsModel> >() { success = false, message = "出现了一个未处理错误,已记录" }); } } }
private async void GetFilter() { try { string results = await WebClientClass.GetResults(new Uri("http://api.bilibili.com/x/dm/filter/user?jsonp=jsonp")); var ls = SettingHelper.Get_Guanjianzi().Split('|').ToList(); ls.Remove(string.Empty); var ls2 = SettingHelper.Get_Yonghu().Split('|').ToList(); ls2.Remove(string.Empty); DMFilterModel fm = JsonConvert.DeserializeObject <DMFilterModel>(results); if (fm.code == 0) { foreach (var item in fm.data.rule) { if (item.type == 0) { if (!ls.Contains(item.filter)) { SettingHelper.Set_Guanjianzi(SettingHelper.Get_Guanjianzi() + "|" + item.filter); } } if (item.type == 2) { if (!ls2.Contains(item.filter)) { SettingHelper.Set_Yonghu(SettingHelper.Get_Yonghu() + "|" + item.filter); } } } List <string> s = new List <string>(); List <string> s2 = new List <string>(); fm.data.rule.ForEach(x => { if (x.type == 0) { s.Add(x.filter); } if (x.type == 2) { s2.Add(x.filter); } }); foreach (var item in ls) { if (!s.Contains(item)) { AddInfo(0, item); } } foreach (var item in ls2) { if (!s2.Contains(item)) { AddInfo(2, item); } } LoadSetting(); } else { Utils.ShowMessageToast("同步失败," + fm.message, 3000); } } catch (Exception) { Utils.ShowMessageToast("同步失败", 3000); } }
public async void TouBi(int num) { UserClass getLogin = new UserClass(); if (getLogin.IsLogin()) { try { WebClientClass wc = new WebClientClass(); Uri ReUri = new Uri("http://www.bilibili.com/plus/comment.php"); string QuStr = "aid=" + Aid + "&rating=100&player=1&multiply=" + num; string result = await wc.PostResults(ReUri, QuStr); if (result == "OK") { messShow.Show("投币成功!", 3000); } else { messShow.Show("投币失败!" + result, 3000); } } catch (Exception ex) { messShow.Show("投币时发生错误\r\n" + ex.Message, 3000); } } else { messShow.Show("请先登录!", 3000); } }
/// <summary> /// 读取下载地址 /// </summary> /// <param name="m"></param> /// <returns></returns> public static async Task <List <string> > GetVideoUrl_Download(DownloadTaskModel m) { try { List <string> urls = new List <string>(); var qn = 32; switch (m.quality) { case 1: qn = 32; break; case 2: qn = 64; break; case 3: qn = 80; break; case 4: qn = 112; break; default: break; } //https://interface.bilibili.com/v2/playurl?cid=31452468&appkey=84956560bc028eb7&otype=json&type=&quality=112&qn=112&sign=38b1355368ee65d055c12b57bdb26e3a if (m.downloadMode == DownloadMode.Video) { string url = string.Format("https://interface.bilibili.com/v2/playurl?cid={1}&appkey={0}&otype=json&type=&quality={2}&qn={2}&ts={3}", ApiHelper._appKey_VIDEO, m.cid, qn, ApiHelper.GetTimeSpan_2); url += "&sign=" + ApiHelper.GetSign_VIDEO(url); string re = await WebClientClass.GetResults(new Uri(url)); FlvPlyaerUrlModel flvPlyaerUrlModel = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); if (flvPlyaerUrlModel.code == 0) { foreach (var item in flvPlyaerUrlModel.durl) { urls.Add(item.url); } } else { return(null); } } else { string url = string.Format("https://interface.bilibili.com/playurl?cid={0}&player=1&quality={1}&qn={1}&ts={2}", m.cid, qn, ApiHelper.GetTimeSpan); url += "&sign=" + ApiHelper.GetSign_PlayUrl(url); string re = await WebClientClass.GetResults(new Uri(url)); if (re.Contains("<code>")) { string url2 = string.Format( "https://bangumi.bilibili.com/player/web_api/v2/playurl?cid={1}&appkey={0}&otype=json&type=&quality={2}&module=bangumi&season_type=1&qn={2}&ts={3}", ApiHelper._appKey_VIDEO, m.cid, qn, ApiHelper.GetTimeSpan_2); url2 += "&sign=" + ApiHelper.GetSign_VIDEO(url2); re = await WebClientClass.GetResults(new Uri(url2)); FlvPlyaerUrlModel flvPlyaerUrlModel = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); if (flvPlyaerUrlModel.code == 0 && !re.Contains("8986943")) { foreach (var item in flvPlyaerUrlModel.durl) { urls.Add(item.url); } } else { var re3 = await WebClientClass.GetResults(new Uri(string.Format("https://moe.nsapps.cn/api/v1/BiliAnimeUrl?animeid={0}&cid={1}&epid={2}&rnd={3}", m.sid, m.cid, m.epid, ApiHelper.GetTimeSpan))); JObject obj = JObject.Parse(re3); if (Convert.ToInt32(obj["code"].ToString()) == 0) { urls.Add(obj["data"][0]["url"].ToString()); } else { var playurl = await _5DMHelper.GetUrl(m.sid, Convert.ToInt32(m.epIndex) - 1); if (playurl == "") { return(null); } else { urls.Add(playurl); } } } } else { var mc = Regex.Matches(re, @"<length>(.*?)</length>.*?<size>(.*?)</size>.*?<url><!\[CDATA\[(.*?)\]\]></url>", RegexOptions.Singleline); foreach (Match item in mc) { urls.Add(item.Groups[3].Value); } } } return(urls); } catch (Exception) { return(null); } }
/// <summary> /// 读取番剧播放地址 /// </summary> /// <param name="model"></param> /// <param name="quality"></param> /// <returns></returns> public static async Task <ReturnPlayModel> GetBangumiUrl(PlayerModel model, int qn) { try { if (qn < 10) { switch (qn) { case 1: qn = 32; break; case 2: qn = 64; break; case 3: qn = 80; break; case 4: qn = 116; break; default: qn = 64; break; } } List <string> urls = new List <string>(); string url = string.Format("https://interface.bilibili.com/v2/playurl?cid={0}&player=1&quality={1}&qn={1}&ts={2}", model.Mid, qn, ApiHelper.GetTimeSpan); url += "&sign=" + ApiHelper.GetSign_PlayUrl(url); string re = await WebClientClass.GetResults(new Uri(url)); var playList = new SYEngine.Playlist(SYEngine.PlaylistTypes.NetworkHttp); SYEngine.PlaylistNetworkConfigs config = new SYEngine.PlaylistNetworkConfigs(); config.DownloadRetryOnFail = true; config.HttpCookie = string.Empty; config.UniqueId = string.Empty; config.HttpUserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; if (re.Contains("<code>")) { //string url2 = string.Format("https://bangumi.bilibili.com/player/web_api/playurl/?access_key={3}&cid={0}&module=bangumi&player=1&otype=json&type=flv&quality={1}&ts={2}", model.Mid, quality, GetTimeSpan_2,access_key); //url2 += "&sign=" + ApiHelper.GetSign_VIP(url2); // string url2 = string.Format( "https://bangumi.bilibili.com/player/web_api/v2/playurl?cid={1}&appkey={0}&otype=json&type=&quality={2}&module=bangumi&season_type=1&qn={2}&ts={3}", ApiHelper._appKey_VIDEO, model.Mid, qn, ApiHelper.GetTimeSpan_2); url2 += "&sign=" + ApiHelper.GetSign_VIDEO(url2); re = await WebClientClass.GetResultsUTF8Encode(new Uri(url2)); FlvPlyaerUrlModel m = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); if (m.code == 0 && !re.Contains("8986943") && (m.status == 13 && m.vip_status != 0)) { //if (m.durl.Count==1) //{ // return new ReturnPlayModel() // { // usePlayMode = UsePlayMode.System, // url = m.durl[0].url, // urls = urls // }; //} foreach (var item in m.durl) { urls.Add(item.url); playList.Append(item.url, item.size, item.length / 1000); } } else { string rnd = ApiHelper.GetTimeSpan.ToString(); if (SettingHelper.Get_UseVIP()) { rnd = "true" + rnd; } var re3 = await WebClientClass.GetResults(new Uri(string.Format("https://moe.nsapps.cn/api/v1/BiliAnimeUrl?animeid={0}&cid={1}&epid={2}&rnd={3}", model.banId, model.Mid, model.banInfo.episode_id, rnd))); JObject obj = JObject.Parse(re3); if (Convert.ToInt32(obj["code"].ToString()) == 0) { if (obj["mode"].ToString() == "mp4") { urls.Add(obj["data"][0]["url"].ToString()); return(new ReturnPlayModel() { usePlayMode = UsePlayMode.System, url = obj["data"][0]["url"].ToString(), urls = urls, from = "server" }); } else { var returnPlayModel = new ReturnPlayModel() { usePlayMode = UsePlayMode.SYEngine, from = "server" }; foreach (var item in obj["data"]) { playList.Append(item["url"].ToString(), item["size"].ToInt32(), item["length"].ToInt32() / 1000); urls.Add(item["url"].ToString()); } returnPlayModel.playlist = playList; returnPlayModel.urls = urls; return(returnPlayModel); } } if (SettingHelper.Get_UseOtherSite()) { var playurl = await _5DMHelper.GetUrl(model.banId, Convert.ToInt32(model.No)); if (playurl == "") { return(null); } else { urls.Add(playurl); return(new ReturnPlayModel() { usePlayMode = UsePlayMode.System, url = playurl, urls = urls, from = "other_site" }); } } else { return(null); } } } else { var mc = Regex.Matches(re, @"<length>(.*?)</length>.*?<size>(.*?)</size>.*?<url><!\[CDATA\[(.*?)\]\]></url>", RegexOptions.Singleline); foreach (Match item in mc) { playList.Append(item.Groups[3].Value, Convert.ToInt32(item.Groups[2].Value), Convert.ToInt64(item.Groups[1].Value) / 1000); } } config.HttpReferer = "https://www.bilibili.com/bangumi/play/ep" + model.episode_id; //config.HttpReferer = ""; //config.HttpCookie = "sid=aj08qul1; pgv_pvi=2726422528; fts=1498031012; rpdid=ikxqxlpildoplqwkwlqw; buvid3=0916A88B-F02E-46E2-95B1-BEF35678E1EE37229infoc; LIVE_BUVID=9b2dbd17fe02c6e0b9a5f7cbfe182be2; LIVE_BUVID__ckMd5=54bf74d417f1dfe6; OUTFOX_SEARCH_USER_ID_NCOO=301070296.3442316; uTZ=-480; biliMzIsnew=1; biliMzTs=0; UM_distinctid=16072fe8c3138-01d5f1e1fd27a6-5d4e211f-1fa400-16072fe8c32d6; _ga=GA1.2.701916902.1513903771; im_notify_type_7251681=0; BANGUMI_SS_21728_REC=164986; finger=81df3ec0; 21680=183802; 22843=173309; BANGUMI_SS_22843_REC=173309; BANGUMI_SS_21680_REC=183802; balh_server=https://biliplus.ipcjs.win; purl_token=bilibili_1518001366; balh_season_21680=1; pgv_si=s8821510144; DedeUserID=7251681; DedeUserID__ckMd5=e2742b2aff29c1cf; SESSDATA=83ace795%2C1520595578%2Ca2c615ce; bili_jct=a0f037944a8423a37efb566011d0a84b; _dfcaptcha=42d9ae3eecffafaf47b08effeef54128"; playList.NetworkConfigs = config; //FlvPlyaerUrlModel m = JsonConvert.DeserializeObject<FlvPlyaerUrlModel>(re); // var playList = new SYEngine.Playlist(SYEngine.PlaylistTypes.NetworkHttp); //foreach (var item in m.durl) //{ // playList.Append(item.url, item.size, item.length / 1000); //} // mediaPlay.Source = await playList.SaveAndGetFileUriAsync(); return(new ReturnPlayModel() { playlist = playList, usePlayMode = UsePlayMode.SYEngine, urls = urls, from = "bilibili" }); } catch (Exception) { return(null); } }
/// <summary> /// 读取视频播放地址 /// </summary> /// <param name="model"></param> /// <param name="quality"></param> /// <returns></returns> public static async Task <ReturnPlayModel> GetVideoUrl(string aid, string cid, int qn) { try { if (qn < 10) { switch (qn) { case 1: qn = 32; break; case 2: qn = 64; break; case 3: qn = 80; break; case 4: qn = 116; break; default: qn = 64; break; } } List <string> urls = new List <string>(); //https://interface.bilibili.com/v2/playurl?cid=31452468&appkey=84956560bc028eb7&otype=json&type=&quality=112&qn=112&sign=38b1355368ee65d055c12b57bdb26e3a string url = string.Format("https://interface.bilibili.com/v2/playurl?cid={1}&appkey={0}&otype=json&type=&quality={2}&qn={2}&ts={3}", ApiHelper._appKey_VIDEO, cid, qn, ApiHelper.GetTimeSpan_2); url += "&sign=" + ApiHelper.GetSign_VIDEO(url); string re = await WebClientClass.GetResults(new Uri(url)); //var mc = Regex.Matches(re, @"<length>(.*?)</length>.*?<size>(.*?)</size>.*?<url><!\[CDATA\[(.*?)\]\]></url>", RegexOptions.Singleline); FlvPlyaerUrlModel m = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); // FlvPlyaerUrlModel m = JsonConvert.DeserializeObject<FlvPlyaerUrlModel>(re); var playList = new SYEngine.Playlist(SYEngine.PlaylistTypes.NetworkHttp); if (m.code == 0) { foreach (var item in m.durl) { urls.Add(item.url); playList.Append(item.url, item.size, item.length / 1000); } } else { var re3 = await WebClientClass.GetResults(new Uri(string.Format("https://moe.nsapps.cn/api/v1/BiliVideoUrl?cid={0}&qn={1}&rnd={2}", cid, qn, ApiHelper.GetTimeSpan))); JObject obj = JObject.Parse(re3); if (Convert.ToInt32(obj["code"].ToString()) == 0) { if (obj["mode"].ToString() == "mp4") { return(new ReturnPlayModel() { urls = new List <string>() { obj["data"][0]["url"].ToString() }, usePlayMode = UsePlayMode.System, url = obj["data"][0]["url"].ToString(), from = "server" }); } else { var returnPlayModel = new ReturnPlayModel() { usePlayMode = UsePlayMode.SYEngine, from = "server" }; foreach (var item in obj["data"]) { urls.Add(item["url"].ToString()); playList.Append(item["url"].ToString(), item["size"].ToInt32(), item["length"].ToInt32() / 1000); } returnPlayModel.playlist = playList; returnPlayModel.urls = urls; return(returnPlayModel); } } } SYEngine.PlaylistNetworkConfigs config = new SYEngine.PlaylistNetworkConfigs(); config.DownloadRetryOnFail = true; config.HttpCookie = string.Empty; config.UniqueId = string.Empty; config.HttpReferer = "https://www.bilibili.com/video/av" + aid + "/"; config.HttpUserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; playList.NetworkConfigs = config; // mediaPlay.Source = await playList.SaveAndGetFileUriAsync(); return(new ReturnPlayModel() { usePlayMode = UsePlayMode.SYEngine, playlist = playList, urls = urls, from = "bilibili" }); } catch (Exception) { return(null); } }
private async void LoadDynamicData(string dynamic_id) { try { string url = string.Format("https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/get_dynamic_detail?access_key={0}&appkey={1}&dynamic_id={2}&build=5250000&mobi_app=android&platform=android&src=bilih5&ts={3}", ApiHelper.AccessKey, ApiHelper.AndroidKey.Appkey, dynamic_id, ApiHelper.TimeStamp); url += "&sign=" + ApiHelper.GetSign(url); string re = await WebClientClass.GetResultsUTF8Encode(new Uri(url)); JObject obj = JObject.Parse(re); if (obj["code"].ToInt32() == 0) { DynamicCardsModel dynamicCardsModel = Newtonsoft.Json.JsonConvert.DeserializeObject <DynamicCardsModel>(obj["data"]["card"].ToString()); _data = dynamicCardsModel; //_data = new DynamicCardsModel() //{ // feed1 = dynamicFeed1Model, // desc = new DynamicCardsModel() // { // timestamp = dynamicFeed1Model.item.upload_timestamp, // type = 2, // uid = dynamicFeed1Model.user.uid, // dynamic_id = Convert.ToInt64(dynamic_id), // user_profile = new user_profileModel() // { // info = new user_profileModel() // { // uid = dynamicFeed1Model.user.uid, // face = dynamicFeed1Model.user.head_url, // uname = dynamicFeed1Model.user.name // } // }, // rid = dynamicFeed1Model.item.doc_id, // like = dynamicFeed1Model.item.vote_count, // }, // reply = dynamicFeed1Model.item.comment_count, // card = obj["data"].ToString() //}; ObservableCollection <DynamicCardsModel> ls = new ObservableCollection <DynamicCardsModel>(); ls.Add(_data); dynamic.LoadData(ls, true); ls_repost.ItemsSource = null; if (_data.desc.user_profile != null) { if (_data.desc.user_profile.info.uid.ToString() == ApiHelper.GetUserId()) { btn_Delete.Visibility = Visibility.Visible; } else { btn_Delete.Visibility = Visibility.Collapsed; } } LoadRepost(); comment.ClearComment(); InitializeComment(); } else { obj["message"].ToString(); } } catch (Exception) { Utils.ShowMessageToast("无法读取动态"); } }
private async void SetHome(bool local) { try { disaid = ""; pr_Load.Visibility = Visibility.Visible; string results = ""; if (local) { results = await SettingHelper.Get_HomeInfo(); } else { string url = string.Format("http://app.bilibili.com/x/v2/show?access_key={0}&appkey={1}&build=429001&mobi_app=android&platform=android&ts={2}000", ApiHelper.access_key, ApiHelper._appKey_Android, ApiHelper.GetTimeSpan); url += "&sign=" + ApiHelper.GetSign_Android(url); results = await WebClientClass.GetResults(new Uri(url)); results = results.Replace("goto", "_goto"); } HomeModel m = JsonConvert.DeserializeObject <HomeModel>(results); if (m.code == 0) { if (!local && SettingHelper.IsPc()) { SettingHelper.Set_HomeInfo(results); } //var ls = m.data.Where(x => x.type == "topic").ToList(); //topic_2.DataContext = ls[1].body[0]; //topic_3.DataContext = ls[2].body[0]; int i = 0; foreach (var item in m.data) { switch (item.title) { case "热门焦点": home_GridView_Hot.ItemsSource = item.body; home_flipView.ItemsSource = item.banner.top; break; case "正在直播": home_GridView_Live.ItemsSource = item.body; break; case "番剧推荐": home_GridView_Bangumi.ItemsSource = item.body; break; case "动画区": home_GridView_DH.ItemsSource = item.body; break; case "音乐区": home_GridView_YY.ItemsSource = item.body; break; case "舞蹈区": home_GridView_WD.ItemsSource = item.body; break; case "游戏区": home_GridView_YX.ItemsSource = item.body; break; case "鬼畜区": home_GridView_GC.ItemsSource = item.body; break; case "科技区": home_GridView_KJ.ItemsSource = item.body; break; case "活动中心": home_GridView_Activity.ItemsSource = item.body; break; case "生活区": home_GridView_SH.ItemsSource = item.body; break; case "娱乐区": home_GridView_YL.ItemsSource = item.body; break; case "时尚区": home_GridView_SS.ItemsSource = item.body; break; case "电视剧区": home_GridView_DSJ.ItemsSource = item.body; break; case "电影区": home_GridView_DY.ItemsSource = item.body; break; case "广告区": home_GridView_GG.ItemsSource = item.body; break; default: { if (item.type == "topic") { switch (i) { case 0: topic_1.DataContext = item.body[0]; break; case 1: topic_2.DataContext = item.body[0]; break; case 2: topic_3.DataContext = item.body[0]; break; default: break; } i++; } } break; } } //home_GridView_Hot.ItemsSource = m.data.First(x => x.title == "热门焦点").body; // home_flipView.ItemsSource = m.data.First(x => x.title == "热门焦点").banner.top; //home_GridView_Live.ItemsSource = m.data.First(x => x.title == "正在直播").body; //home_GridView_Bangumi.ItemsSource = m.data.First(x => x.title == "番剧推荐").body; //home_GridView_Activity.ItemsSource = m.data.First(x => x.title == "活动中心").body; //home_GridView_DH.ItemsSource = m.data.First(x => x.title == "动画区").body; //home_GridView_DSJ.ItemsSource = m.data.First(x => x.title == "电视剧区").body; //home_GridView_DY.ItemsSource = m.data.First(x => x.title == "电影区").body; //home_GridView_GC.ItemsSource = m.data.First(x => x.title == "鬼畜区").body; //home_GridView_GG.ItemsSource = m.data.First(x => x.title == "广告区").body; //home_GridView_KJ.ItemsSource = m.data.First(x => x.title == "科技区").body; //home_GridView_SH.ItemsSource = m.data.First(x => x.title == "生活区").body; //home_GridView_SS.ItemsSource = m.data.First(x => x.title == "时尚区").body; //home_GridView_WD.ItemsSource = m.data.First(x => x.title == "舞蹈区").body; //home_GridView_YL.ItemsSource = m.data.First(x => x.title == "娱乐区").body; //home_GridView_YX.ItemsSource = m.data.First(x => x.title == "游戏区").body; //home_GridView_YY.ItemsSource = m.data.First(x => x.title == "音乐区").body; } else { await new MessageDialog(m.message).ShowAsync(); } } catch (Exception ex) { if (ex.HResult == -2147012867 || ex.HResult == -2147012889) { messShow.Show("无法连接服务器,请检查你的网络连接", 3000); } else { messShow.Show("更新数据失败了", 3000); } } finally { pr_Load.Visibility = Visibility.Collapsed; } }
private async void LaodTimeline() { try { pr_Load.Visibility = Visibility.Visible; string url = ""; switch (cb_OrderBy.SelectedIndex) { case 0: url = string.Format("https://bangumi.bilibili.com/api/timeline_v4?access_key={0}&appkey={1}&area_id=1%2C2%2C-1&build=5250000&date_after=6&date_before=6&mobi_app=android&platform=wp&see_mine=0&ts={2}000", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpan); break; case 1: url = string.Format("https://bangumi.bilibili.com/api/timeline_v4?access_key={0}&appkey={1}&area_id=1%2C2%2C-1&build=5250000&date_after=6&date_before=6&mobi_app=android&platform=wp&see_mine=1&ts={2}000", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpan); break; case 2: url = string.Format("https://bangumi.bilibili.com/api/timeline_v4?access_key={0}&appkey={1}&area_id=2%2C-1&build=5250000&date_after=6&date_before=6&mobi_app=android&platform=wp&see_mine=0&ts={2}000", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpan); break; case 3: url = string.Format("https://bangumi.bilibili.com/api/timeline_v4?access_key={0}&appkey={1}&area_id=1%2C-1&build=5250000&date_after=6&date_before=6&mobi_app=android&platform=wp&see_mine=0&ts={2}000", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpan); break; default: break; } url += "&sign=" + ApiHelper.GetSign(url); string results = await WebClientClass.GetResultsUTF8Encode(new Uri(url)); TimeLineModel m = JsonConvert.DeserializeObject <TimeLineModel>(results); if (m.code == 0) { AllTimeLineModel model = new AllTimeLineModel(); var t0 = GetWeek(DateTime.Now); model.today = new AllTimeLineModel() { Week = t0[0], WeekStr = t0[1], Date = t0[2], ls = new List <TimeLineModel>() }; var n0 = GetWeek(DateTime.Now.AddDays(1)); model.next1 = new AllTimeLineModel() { Week = n0[0], WeekStr = n0[1], Date = n0[2], ls = new List <TimeLineModel>() }; var n1 = GetWeek(DateTime.Now.AddDays(2)); model.next2 = new AllTimeLineModel() { Week = n1[0], WeekStr = n1[1], Date = n1[2], ls = new List <TimeLineModel>() }; var n2 = GetWeek(DateTime.Now.AddDays(3)); model.next3 = new AllTimeLineModel() { Week = n2[0], WeekStr = n2[1], Date = n2[2], ls = new List <TimeLineModel>() }; var n3 = GetWeek(DateTime.Now.AddDays(4)); model.next4 = new AllTimeLineModel() { Week = n3[0], WeekStr = n3[1], Date = n3[2], ls = new List <TimeLineModel>() }; var n4 = GetWeek(DateTime.Now.AddDays(5)); model.next5 = new AllTimeLineModel() { Week = n4[0], WeekStr = n4[1], Date = n4[2], ls = new List <TimeLineModel>() }; var n5 = GetWeek(DateTime.Now.AddDays(6)); model.next6 = new AllTimeLineModel() { Week = n5[0], WeekStr = n5[1], Date = n5[2], ls = new List <TimeLineModel>() }; var p0 = GetWeek(DateTime.Now.AddDays(-6)); model.per1 = new AllTimeLineModel() { Week = p0[0], WeekStr = p0[1], Date = p0[2], ls = new List <TimeLineModel>() }; var p1 = GetWeek(DateTime.Now.AddDays(-5)); model.per2 = new AllTimeLineModel() { Week = p1[0], WeekStr = p1[1], Date = p1[2], ls = new List <TimeLineModel>() }; var p2 = GetWeek(DateTime.Now.AddDays(-4)); model.per3 = new AllTimeLineModel() { Week = p2[0], WeekStr = p2[1], Date = p2[2], ls = new List <TimeLineModel>() }; var p3 = GetWeek(DateTime.Now.AddDays(-3)); model.per4 = new AllTimeLineModel() { Week = p3[0], WeekStr = p3[1], Date = p3[2], ls = new List <TimeLineModel>() }; var p4 = GetWeek(DateTime.Now.AddDays(-2)); model.per5 = new AllTimeLineModel() { Week = p4[0], WeekStr = p4[1], Date = p4[2], ls = new List <TimeLineModel>() }; var p5 = GetWeek(DateTime.Now.AddDays(-1)); model.per6 = new AllTimeLineModel() { Week = p5[0], WeekStr = p5[1], Date = p5[2], ls = new List <TimeLineModel>() }; foreach (var item in m.result) { DateTime dt = DateTime.Parse(item.pub_date).Date; if (dt == DateTime.Now.Date) { model.today.ls.Add(item); } if (dt == DateTime.Now.AddDays(-6).Date) { model.per1.ls.Add(item); } if (dt == DateTime.Now.AddDays(-5).Date) { model.per2.ls.Add(item); } if (dt == DateTime.Now.AddDays(-4).Date) { model.per3.ls.Add(item); } if (dt == DateTime.Now.AddDays(-3).Date) { model.per4.ls.Add(item); } if (dt == DateTime.Now.AddDays(-2).Date) { model.per5.ls.Add(item); } if (dt == DateTime.Now.AddDays(-1).Date) { model.per6.ls.Add(item); } if (dt == DateTime.Now.AddDays(1).Date) { model.next1.ls.Add(item); } if (dt == DateTime.Now.AddDays(2).Date) { model.next2.ls.Add(item); } if (dt == DateTime.Now.AddDays(3).Date) { model.next3.ls.Add(item); } if (dt == DateTime.Now.AddDays(4).Date) { model.next4.ls.Add(item); } if (dt == DateTime.Now.AddDays(5).Date) { model.next5.ls.Add(item); } if (dt == DateTime.Now.AddDays(6).Date) { model.next6.ls.Add(item); } } this.DataContext = model; } else { Utils.ShowMessageToast(m.message, 3000); } } catch (Exception ex) { if (ex.HResult == -2147012867 || ex.HResult == -2147012889) { Utils.ShowMessageToast("无法连接服务器,请检查你的网络连接", 3000); } else { Utils.ShowMessageToast("读取放送表失败了", 3000); } } finally { pr_Load.Visibility = Visibility.Collapsed; await Task.Delay(1000); GeneralTransform generalTransform = st.TransformToVisual(gv_today); Point point = generalTransform.TransformPoint(new Point(0, 0)); sv.ChangeView(null, Math.Abs(point.Y), null); } }
private async void LoadMenu() { try { loading = true; pr_load.Visibility = Visibility.Visible; btn_LoadMore.Visibility = Visibility.Collapsed; int catId = 0; int itemId = 0; if (_selectCategroies != null) { catId = _selectCategroies.cateId; itemId = _selectCategroies.itemId; } if (_page == 1) { list_menus.ItemsSource = null; } string url = ""; switch (_opentype) { case OpenMenuType.Menu: url = string.Format("https://api.bilibili.com/audio/music-service-c/menus/filteMenu?appkey={0}&build=5250000&cateId={1}&itemId={2}&mobi_app=android&orderBy={3}&pageNum={4}&pageSize=24&platform=android&ts={5}", ApiHelper._appKey, catId, itemId, _sort, _page, ApiHelper.GetTimeSpan); break; case OpenMenuType.Album: url = string.Format("https://api.bilibili.com/audio/music-service-c/menus/filte-pmenu?appkey={0}&build=5250000&cateId={1}&itemId={2}&mobi_app=android&orderBy={3}&pageNum={4}&pageSize=24&platform=android&ts={5}", ApiHelper._appKey, catId, itemId, _sort, _page, ApiHelper.GetTimeSpan); break; case OpenMenuType.MissEvan: url = string.Format("https://api.bilibili.com/audio/music-service-c/menus/missevan?appkey={0}&build=5250000&cateId={1}&itemId={2}&mobi_app=android&orderBy={3}&pageNum={4}&pageSize=24&platform=android&ts={5}", ApiHelper._appKey, catId, itemId, _sort, _page, ApiHelper.GetTimeSpan); break; default: break; } url += "&sign=" + ApiHelper.GetSign(url); var results = await WebClientClass.GetResults(new Uri(url)); MusicCateMenusModel obj = JsonConvert.DeserializeObject <MusicCateMenusModel>(results); if (obj.code == 0) { if (obj.data.list != null && obj.data.list.Count != 0) { if (_page == 1) { list_menus.ItemsSource = obj.data.list; } else { var ls = list_menus.ItemsSource as ObservableCollection <MusicHomeMenuModel>; foreach (var item in obj.data.list) { ls.Add(item); } } btn_LoadMore.Visibility = Visibility.Visible; _page++; } else { Utils.ShowMessageToast("加载完了"); } } else { Utils.ShowMessageToast(obj.msg); } } catch (Exception) { Utils.ShowMessageToast("加载失败歌单"); } finally { loading = false; pr_load.Visibility = Visibility.Collapsed; } }
public async Task GetPlayInfo(string mid, int quality) { try { pro_Num.Text = "读取视频地址..."; WebClientClass wc = new WebClientClass(); string url = "http://interface.bilibili.com/playurl?platform=android&cid=" + mid + "&quality=" + quality + "&otype=json&appkey=422fd9d7289a1dd9&type=mp4"; url += "&sign=" + ApiHelper.GetSign(url); string results = await wc.GetResults(new Uri(url)); VideoUriModel model = JsonConvert.DeserializeObject<VideoUriModel>(results); List<VideoUriModel> model1 = JsonConvert.DeserializeObject<List<VideoUriModel>>(model.durl.ToString()); mediaElement.Source = new Uri(model1[0].url); pro_Num.Text = "开始缓冲视频..."; } catch (Exception) { MessageDialog md = new MessageDialog("视频地址获取失败!", "错误"); await md.ShowAsync(); } }
private async void GetMessage() { try { pr_Load.Visibility = Visibility.Visible; // http://message.bilibili.com/api/msg/query.room.list.do?access_key=a36a84cc8ef4ea2f92c416951c859a25&actionKey=appkey&appkey=c1b107428d337928&build=414000&page_size=100&platform=android&ts=1461404884000&sign=5e212e424761aa497a75b0fb7fbde775 string url = string.Format("https://message.bilibili.com/api/notify/query.notify.count.do?_device=android&_ulv=10000&access_key={0}&actionKey=appkey&appkey={1}&build=518000&platform=android&ts={2}", ApiHelper.AccessKey, ApiHelper.AndroidKey.Appkey, ApiHelper.TimeStamp); url += "&sign=" + ApiHelper.GetSign(url); string results = await WebClientClass.GetResults(new Uri(url)); MessageModel model = JsonConvert.DeserializeObject <MessageModel>(results); if (model.code == 0) { MessageModel list = JsonConvert.DeserializeObject <MessageModel>(model.data.ToString()); if (list.reply_me != 0) { bor_HF.Visibility = Visibility.Visible; } else { bor_HF.Visibility = Visibility.Collapsed; } if (list.at_me != 0) { bor_At.Visibility = Visibility.Visible; } else { bor_At.Visibility = Visibility.Collapsed; } if (list.praise_me != 0) { bor_Zan.Visibility = Visibility.Visible; } else { bor_Zan.Visibility = Visibility.Collapsed; } if (list.notify_me != 0) { bor_TZ.Visibility = Visibility.Visible; } else { bor_TZ.Visibility = Visibility.Collapsed; } if (list.chat_me != 0) { bor_SX.Visibility = Visibility.Visible; } else { bor_SX.Visibility = Visibility.Collapsed; } } else { Utils.ShowMessageToast("读取通知失败," + model.message, 3000); } } catch (Exception) { Utils.ShowMessageToast("读取通知失败", 3000); } finally { pr_Load.Visibility = Visibility.Collapsed; } }
public static async Task <List <QualityModel> > GetAnimeQualities(PlayerModel model) { List <QualityModel> qualities = new List <QualityModel>(); try { var qn = 64; List <string> urls = new List <string>(); string url2 = string.Format( "https://bangumi.bilibili.com/player/web_api/v2/playurl?cid={1}&appkey={0}&otype=json&type=&quality={2}&module=bangumi&season_type=1&qn={2}&ts={3}", ApiHelper._appKey_VIDEO, model.Mid, qn, ApiHelper.GetTimeSpan_2); url2 += "&sign=" + ApiHelper.GetSign_VIDEO(url2); var re = await WebClientClass.GetResultsUTF8Encode(new Uri(url2)); FlvPlyaerUrlModel m = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); if (m.code == 0 && !re.Contains("8986943")) { foreach (var item in m.accept_description) { qualities.Add(new QualityModel() { description = item, qn = m.accept_quality[m.accept_description.IndexOf(item)] }); } } else { var re3 = await WebClientClass.GetResults(new Uri(string.Format("https://moe.nsapps.cn/api/v1/BiliAnimeUrl?animeid={0}&cid={1}&epid={2}&rnd={3}", model.banId, model.Mid, model.banInfo.episode_id, ApiHelper.GetTimeSpan))); JObject obj = JObject.Parse(re3); if (Convert.ToInt32(obj["code"].ToString()) == 0) { qualities.Add(new QualityModel() { description = "默认", qn = 80 }); } else { return(new List <QualityModel>() { new QualityModel() { description = "流畅", qn = 32 }, new QualityModel() { description = "清晰", qn = 64 }, new QualityModel() { description = "高清", qn = 80 }, new QualityModel() { description = "超清", qn = 112 }, }); } } qualities = qualities.OrderBy(x => x.qn).ToList(); return(qualities); } catch (Exception) { return(new List <QualityModel>() { new QualityModel() { description = "流畅", qn = 32 }, new QualityModel() { description = "清晰", qn = 64 }, new QualityModel() { description = "高清", qn = 80 }, new QualityModel() { description = "超清", qn = 112 }, }); } }
private async void GetUserInfo() { try { pr_Load.Visibility = Visibility.Visible; try { string results = await WebClientClass.PostResults(new Uri("http://space.bilibili.com/ajax/member/GetInfo"), "mid=" + Uid + "&_=" + ApiHelper.TimeStamp2, "http://space.bilibili.com/" + Uid + "/"); JObject jObject = JObject.Parse(results); img_bg.ImageSource = new BitmapImage(new Uri("https://i0.hdslb.com/" + jObject["data"]["toutu"])); } catch (Exception) { img_bg.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Img/toutu.png")); } string url = string.Format("https://app.bilibili.com/x/v2/space?access_key={0}&appkey={1}&build=5250000&from=712&mobi_app=android&platform=android&ps=10&ts={2}&vmid={3}", ApiHelper.AccessKey, ApiHelper.AndroidKey.Appkey, ApiHelper.TimeStamp, Uid); url += "&sign=" + ApiHelper.GetSign(url); string results1 = await WebClientClass.GetResults(new Uri(url)); UserInfoModel m = JsonConvert.DeserializeObject <UserInfoModel>(results1); if (m.code == 0) { if (m.data.relation == 1 && ApiHelper.IsLogin()) { btn_AddFollow.Visibility = Visibility.Collapsed; btn_CancelFollow.Visibility = Visibility.Visible; } else { btn_AddFollow.Visibility = Visibility.Visible; btn_CancelFollow.Visibility = Visibility.Collapsed; } if (Uid == ApiHelper.GetUserId()) { btn_AddFollow.Visibility = Visibility.Collapsed; btn_CancelFollow.Visibility = Visibility.Collapsed; } if (m.data.season != null && m.data.season.item != null) { DT_0.Visibility = Visibility.Collapsed; } else { DT_0.Visibility = Visibility.Visible; } if (m.data.card.vip.vipType != 0) { if (m.data.card.vip.vipType == 2) { viptype.Text = "年度大会员"; } else { viptype.Text = "大会员"; } bor_Vip.Visibility = Visibility.Visible; } else { bor_Vip.Visibility = Visibility.Collapsed; } if (m.data.card.level_info.current_level <= 3) { bor_Level.Background = new SolidColorBrush(new Windows.UI.Color() { R = 48, G = 161, B = 255, A = 200 }); } else { if (m.data.card.level_info.current_level <= 6) { bor_Level.Background = new SolidColorBrush(new Windows.UI.Color() { R = 255, G = 48, B = 48, A = 200 }); } else { bor_Level.Background = new SolidColorBrush(new Windows.UI.Color() { R = 255, G = 199, B = 45, A = 200 }); } } switch (m.data.card.sex) { case "男": ic_female.Visibility = Visibility.Collapsed; ic_gay.Visibility = Visibility.Collapsed; ic_male.Visibility = Visibility.Visible; break; case "女": ic_female.Visibility = Visibility.Visible; ic_gay.Visibility = Visibility.Collapsed; ic_male.Visibility = Visibility.Collapsed; break; default: ic_female.Visibility = Visibility.Collapsed; ic_gay.Visibility = Visibility.Visible; ic_male.Visibility = Visibility.Collapsed; break; } if (m.data.coin_archive != null && m.data.coin_archive.item != null) { list_ACoin.ItemsSource = m.data.coin_archive.item; } info.DataContext = m.data.card; grid_UserInfo.DataContext = m.data.card; data.DataContext = m.data; } user_GridView_FovBox.ItemsSource = await GetUserFovBox(); } catch (Exception) { Utils.ShowMessageToast("读取用户信息失败", 3000); } finally { pr_Load.Visibility = Visibility.Collapsed; } }
private async void ContentDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { if (Send_text_Comment.Text.Length == 0) { Utils.ShowMessageToast("弹幕内容不能为空!", 2000); return; } if (!ApiHelper.IsLogin()) { Utils.ShowMessageToast("请先登录!", 2000); return; } try { var url = $"https://api.bilibili.com/x/v2/dm/post?access_key={ApiHelper.access_key}&aid={aid}&appkey={ApiHelper.AndroidKey.Appkey}&build={ApiHelper.build}&mobi_app=android&oid={cid}&platform=android&ts={ApiHelper.GetTimeSpan}"; url += "&sign=" + ApiHelper.GetSign(url); Uri ReUri = new Uri(url); int modeInt = 1; if (Send_cb_Mode.SelectedIndex == 2) { modeInt = 4; } if (Send_cb_Mode.SelectedIndex == 1) { modeInt = 5; } string data = $"pool=0&rnd={ApiHelper.GetTimeSpan}&oid={cid}&fontsize=25&msg={Uri.EscapeDataString(Send_text_Comment.Text)}&mode={modeInt}&progress={position}&color={ ((ComboBoxItem)Send_cb_Color.SelectedItem).Tag}&plat=2&screen_state=0&from=861&type=1"; //string data = string.Format("playTime={0}&pool=0&color={1}&screen_state=1&rnd={2}&from=0&type=json&msg={3}&cid={4}&fontsize=25&mode={5}&mid={6}", // position, // ((ComboBoxItem)Send_cb_Color.SelectedItem).Tag, // new Random().Next(1, 99999999), // Uri.EscapeDataString(Send_text_Comment.Text), // cid, modeInt, ApiHelper.GetUserId() // ); //string Canshu = "message=" + Send_text_Comment.Text + "&pool=0&playTime=" + mediaElement.Position.TotalSeconds.ToString() + "&cid=" + playNow.Mid + "&date=" + DateTime.Now.ToString() + "&fontsize=25&mode=" + modeInt + "&rnd=" + new Random().Next(100000000, 999999999) + "&color=" + ((ComboBoxItem)Send_cb_Color.SelectedItem).Tag; string result = await WebClientClass.PostResults(ReUri, data); var obj = JObject.Parse(result); if (Convert.ToInt32(obj["code"].ToString()) != 0) { Utils.ShowMessageToast("弹幕发送失败" + obj["message"].ToString(), 3000); } else { if (DanmakuSended != null) { DanmakuSended(this, new SendDanmakuModel() { location = modeInt, color = ((ComboBoxItem)Send_cb_Color.SelectedItem).Tag.ToString(), text = Send_text_Comment.Text }); } Utils.ShowMessageToast("弹幕成功发射", 3000); Send_text_Comment.Text = string.Empty; } } catch (Exception ex) { Utils.ShowMessageToast("发送弹幕发生错误!\r\n" + ex.HResult, 3000); } }
private async void GetInfo() { try { canLoad = false; pr_load.Visibility = Visibility.Visible; wc = new WebClientClass(); string url = "http://bangumi.bilibili.com/web_api/season/index?page=" + PageNum + "&pagesize=" + 30; url += "&version" + DHLX; url += "&is_finish=" + ZT; //url += "&is_finish=" + ZT; url += "&update_period=" + GXSJ; if (DQ.Length != 0) { url += "&area=" + DQ; } if (FG.Length != 0) { url += "&tag_id=" + FG; } if (NF.Length != 0) { url += "&start_year=" + NF; } url += "&index_type=" + index_type.ToString(); //url += "&index_sort=" + index_sort.ToString(); string results = await wc.GetResults(new Uri(url)); ALLBangumiModel all = JsonConvert.DeserializeObject <ALLBangumiModel>(results); if (all.code == 0) { if (all.result.list.Count != 0) { foreach (var item in all.result.list) { items.Items.Add(item); } PageNum++; } else { messShow.Show("没有结果了", 2000); } } else { messShow.Show(all.message, 2000); } } catch (Exception ex) { messShow.Show("发生错误" + ex.Message, 2000); //throw; } finally { canLoad = true; pr_load.Visibility = Visibility.Collapsed; } }
private async void GetUserInfo() { try { pr_Load.Visibility = Visibility.Visible; string results = await WebClientClass.PostResults(new Uri("http://space.bilibili.com/ajax/member/GetInfo"), "mid=" + Uid + "&_=" + ApiHelper.GetTimeSpan_2, "http://space.bilibili.com/" + Uid + "/"); UserModel um = JsonConvert.DeserializeObject <UserModel>(results); if (um.status) { info.DataContext = um.data; grid_UserInfo.DataContext = um.data; if (um.data.approve) { if (um.data.official_verify.type != -1) { txt_RZ.Text = um.data.official_verify.desc; } txt_RZ.Visibility = Visibility.Visible; } else { txt_RZ.Visibility = Visibility.Collapsed; } if (um.data.level_info.current_level <= 3) { bor_Level.Background = new SolidColorBrush(new Windows.UI.Color() { R = 48, G = 161, B = 255, A = 200 }); } else { if (um.data.current_level <= 6) { bor_Level.Background = new SolidColorBrush(new Windows.UI.Color() { R = 255, G = 48, B = 48, A = 200 }); } else { bor_Level.Background = new SolidColorBrush(new Windows.UI.Color() { R = 255, G = 199, B = 45, A = 200 }); } } } else { messShow.Show("读取用户信息失败", 3000); } string url = string.Format("http://app.bilibili.com/x/v2/space?access_key={0}&appkey={1}&platform=wp&ps=10&ts={2}000&vmid={3}&build=411005&mobi_app=android", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpan, Uid); url += "&sign=" + ApiHelper.GetSign(url); string results1 = await WebClientClass.GetResults(new Uri(url)); UserInfoModel m = JsonConvert.DeserializeObject <UserInfoModel>(results1); if (m.code == 0) { if (m.data.season != null && m.data.season.item != null) { DT_0.Visibility = Visibility.Collapsed; } else { DT_0.Visibility = Visibility.Visible; } if (m.data.card.vip.vipType != 0) { bor_Vip.Visibility = Visibility.Visible; } else { bor_Vip.Visibility = Visibility.Collapsed; } if (m.data.coin_archive != null && m.data.coin_archive.item != null) { list_ACoin.ItemsSource = m.data.coin_archive.item; } data.DataContext = m.data; } } catch (Exception) { messShow.Show("读取用户信息失败", 3000); } finally { pr_Load.Visibility = Visibility.Collapsed; } }
private async void btn_concern_Click(object sender, RoutedEventArgs e) { UserClass getLogin = new UserClass(); wc = new WebClientClass(); if (getLogin.IsLogin()) { try { if (btn_concern.Label == "订阅") { //http://www.bilibili.com/api_proxy?app=bangumi&action=/concern_season&season_id=779 string results = await wc.GetResults(new Uri("http://www.bilibili.com/api_proxy?app=bangumi&action=/concern_season&season_id=" + banID)); JObject json = JObject.Parse(results); if ((int)json["code"] == 0) { font_icon.Glyph = "\uE00B"; btn_concern.Label = "取消订阅"; messShow.Show("订阅成功!", 3000); //MessageDialog md = new MessageDialog("订阅成功!"); // await md.ShowAsync(); } else { messShow.Show("订阅失败!", 3000); } } else { //http://www.bilibili.com/api_proxy?app=bangumi&action=/concern_season&season_id=779 string results = await wc.GetResults(new Uri("http://www.bilibili.com/api_proxy?app=bangumi&action=/unconcern_season&season_id=" + banID)); JObject json = JObject.Parse(results); if ((int)json["code"] == 0) { font_icon.Glyph = "\uE006"; btn_concern.Label = "订阅"; messShow.Show("取消订阅成功!", 3000); } else { messShow.Show("取消订阅失败!", 3000); } } } catch (Exception) { MessageDialog md = new MessageDialog("订阅操作失败!"); await md.ShowAsync(); } } else { MessageDialog md = new MessageDialog("先登录好伐", "(´・ω・`) "); await md.ShowAsync(); } }
private async void GetComment() { if (_page == 1) { noRepost.Visibility = Visibility.Collapsed; closeRepost.Visibility = Visibility.Collapsed; ls_hot.ItemsSource = null; ls_new.ItemsSource = null; } try { btn_HotSort.Visibility = Visibility.Collapsed; var sort = 0; if (_loadCommentInfo.conmmentSortMode == ConmmentSortMode.Hot) { sort = 2; } btn_LoadMore.Visibility = Visibility.Collapsed; _loading = true; pr_load.Visibility = Visibility.Visible; ObservableCollection <CommentModel> ls = new ObservableCollection <CommentModel>(); var url = string.Format("https://api.bilibili.com/x/v2/reply?access_key={0}&appkey={1}&build={7}&mobi_app=android&oid={2}&plat=2&platform=android&pn={3}&ps=20&sort={6}&ts={4}&type={5}", ApiHelper.access_key, ApiHelper._appKey, _loadCommentInfo.oid, _page, ApiHelper.GetTimeSpan_2, _type, sort, ApiHelper.build); url += "&sign=" + ApiHelper.GetSign(url); //var url = "https://api.bilibili.com/x/v2/reply?oid=2381475&plat=2&pn=1&ps=20&sort=0&type=11"; var re = await WebClientClass.GetResults(new Uri(url)); dataCommentModel m = JsonConvert.DeserializeObject <dataCommentModel>(re); if (m.code == 0) { if (m.data.hots == null || m.data.hots.Count == 0 || _loadCommentInfo.conmmentSortMode != ConmmentSortMode.All) { hot.Visibility = Visibility.Collapsed; } else { hot.Visibility = Visibility.Visible; } if (m.data.replies.Count != 0) { if (_page == 1) { if (m.data.upper.top != null) { m.data.upper.top.showTop = Visibility.Visible; m.data.hots.Insert(0, m.data.upper.top); } ls_hot.ItemsSource = m.data.hots; ls_new.ItemsSource = m.data.replies; } else { foreach (var item in m.data.replies) { (ls_new.ItemsSource as ObservableCollection <CommentModel>).Add(item); } } _page++; if (m.data.replies.Count >= 20) { btn_LoadMore.Visibility = Visibility.Visible; } } else { if (_page == 1) { noRepost.Visibility = Visibility.Visible; } else { Utils.ShowMessageToast("全部加载完了..."); } } } else { if (m.code == 12002) { closeRepost.Visibility = Visibility.Visible; } else { Utils.ShowMessageToast(m.message); } } } catch (Exception) { Utils.ShowMessageToast("加载评论失败"); //throw; } finally { _loading = false; pr_load.Visibility = Visibility.Collapsed; if (_loadCommentInfo.conmmentSortMode == ConmmentSortMode.All) { btn_HotSort.Visibility = Visibility.Visible; } } }
private async void GetNotify() { try { wc = new WebClientClass(); //http://message.bilibili.com/api/notify/query.sysnotify.list.do?_device=android&_hwid=68fc5d795c256cd1&_ulv=10000&access_key=a36a84cc8ef4ea2f92c416951c859a25&actionKey=appkey&appkey=c1b107428d337928&build=414000&data_type=1&page_size=40&platform=android&ts=1461404973000&sign=fc3b4e26348a1204e2064e7712d10179 string url = string.Format("http://message.bilibili.com/api/notify//query.sysnotify.list.do?_device=wp&&_ulv=10000&access_key={0}&actionKey=appkey&appkey={1}&build=410005&data_type=1&page_size=40&platform=android&ts={2}", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpen); url += "&sign=" + ApiHelper.GetSign(url); string results = await wc.GetResults(new Uri(url)); MessageReplyModel model = JsonConvert.DeserializeObject<MessageReplyModel>(results); if (model.code == 0) { List<MessageReplyModel> list = JsonConvert.DeserializeObject<List<MessageReplyModel>>(model.data.ToString()); list_Notify.ItemsSource = list; } else { messShow.Show("读取失败" + model.message, 3000); } } catch (Exception) { messShow.Show("读取失败", 3000); } }
/// <summary> /// 登录 /// </summary> /// <param name="username">用户名</param> /// <param name="password">密码</param> /// <param name="captcha">验证码</param> /// <returns></returns> public async Task <LoginCallbackModel> LoginV2(string username, string password, string captcha = null) { try { string url = "https://passport.bilibili.com/api/oauth2/login"; string data = $"appkey={ApiHelper.AndroidKey.Appkey}&build={ApiHelper.build}&mobi_app=android&password={Uri.EscapeDataString(await EncryptedPassword(password))}&platform=android&ts={ApiHelper.GetTimeSpan}&username={Uri.EscapeDataString(username)}"; if (!string.IsNullOrEmpty(captcha)) { data += "&captcha=" + captcha; } data += "&sign=" + ApiHelper.GetSign(data); var results = await WebClientClass.PostResults(new Uri(url), data); var m = JsonConvert.DeserializeObject <AccountLoginModel>(results); if (m.code == 0) { SettingHelper.Set_Access_key(m.data.access_token); SettingHelper.Set_Refresh_Token(m.data.refresh_token); SettingHelper.Set_LoginExpires(DateTime.Now.AddSeconds(m.data.expires_in)); SettingHelper.Set_UserID(m.data.mid); //foreach (var item in m.data.sso) //{ await SSO(m.data.access_token); //} MessageCenter.SendLogined(); return(new LoginCallbackModel() { status = LoginStatus.Success, message = "登录成功" }); } else if (m.code == -2100) { return(new LoginCallbackModel() { status = LoginStatus.NeedValidate, url = m.url, message = "登录需要验证" }); } else if (m.code == -105) { return(new LoginCallbackModel() { status = LoginStatus.NeedCaptcha, message = "登录需要验证码" }); } else { return(new LoginCallbackModel() { status = LoginStatus.Fail, message = m.message }); } } catch (Exception ex) { return(new LoginCallbackModel() { status = LoginStatus.Error, message = "登录出现小问题,请重试" }); } }
public async void GetBangumiInfo(string banID) { //string uri = "http://bangumi.bilibili.com/api/season?_device=wp&_ulv=10000&build=411005&platform=android&appkey=422fd9d7289a1dd9&ts="+APIHelper.GetTimeSpen+ "000&type=sp&sp_id=56719"; //string sign= APIHelper.GetSign(uri); //uri += "&sign=" + sign; try { pr_load.Visibility = Visibility.Visible; wc = new WebClientClass(); string uri = ""; uri = string.Format("http://bangumi.bilibili.com/api/season?_device=wp&access_key={2}&_ulv=10000&build=411005&platform=android&appkey=422fd9d7289a1dd9&ts={0}000&type=bangumi&season_id={1}", ApiHelper.GetTimeSpen, banID, ApiHelper.access_key); uri += "&sign=" + ApiHelper.GetSign(uri); string result = await wc.GetResults(new Uri(uri)); BangumiInfoModel model = new BangumiInfoModel(); if ((int)JObject.Parse(result)["code"] == 0) { model = JsonConvert.DeserializeObject <BangumiInfoModel>(JObject.Parse(result)["result"].ToString()); grid_Info.DataContext = model; BangumiInfoModel m = JsonConvert.DeserializeObject <BangumiInfoModel>(model.user_season.ToString()); if (m.attention == 0) { font_icon.Glyph = "\uE006"; btn_concern.Label = "订阅"; } else { font_icon.Glyph = "\uE00B"; btn_concern.Label = "取消订阅"; } List <BangumiInfoModel> list = JsonConvert.DeserializeObject <List <BangumiInfoModel> >(model.episodes.ToString()); List <BangumiInfoModel> list2 = new List <BangumiInfoModel>(); for (int i = 0; i < list.Count; i++) { list[i].Num = i; list2.Add(list[i]); if (DownloadManage.Downloaded.Contains(list[i].danmaku.ToString())) { list[i].inLocal = true; } } list_E.ItemsSource = list2; List <BangumiInfoModel> list_CV = JsonConvert.DeserializeObject <List <BangumiInfoModel> >(model.actor.ToString()); txt_CV.Text = ""; foreach (BangumiInfoModel item in list_CV) { txt_CV.Text += string.Format("{0}:{1}\r\n", item.role, item.actor); } List <BangumiInfoModel> list_Tag = JsonConvert.DeserializeObject <List <BangumiInfoModel> >(model.tags.ToString()); Grid_tag.Children.Clear(); foreach (BangumiInfoModel item in list_Tag) { HyperlinkButton btn = new HyperlinkButton(); btn.DataContext = item; btn.Margin = new Thickness(0, 0, 10, 0); btn.Content = item.tag_name; btn.Click += Btn_Click; Grid_tag.Children.Add(btn); } } if ((int)JObject.Parse(result)["code"] == -3) { messShow.Show("密钥注册失败,请联系作者", 3000); } if ((int)JObject.Parse(result)["code"] == 10) { messShow.Show(JObject.Parse(result)["message"].ToString(), 3000); } } catch (Exception ex) { messShow.Show("发生错误\r\n" + ex.Message, 3000); } finally { pr_load.Visibility = Visibility.Collapsed; } }
private async void SendDynamic() { if (txt_Comment.Text.Trim().Length == 0) { Utils.ShowMessageToast("不能发送空白动态"); } var ctrl = "[]"; var at_uids = ""; atlist.Clear(); var txt = txt_Comment.Text; if (atDisplaylist.Count != 0) { foreach (var item in atDisplaylist) { if (txt.Contains(item.text)) { atlist.Add(new AtModel() { data = item.data.ToString(), length = item.length - 2, location = txt.IndexOf(item.text), type = 1 }); var d = item.text.Replace("[", "").Replace("]", ""); txt = txt.Replace(item.text, d); at_uids += item.data.ToString() + ","; } } ctrl = JsonConvert.SerializeObject(atlist); at_uids = at_uids.Remove(at_uids.Length - 1, 1); atDisplaylist.Clear(); } List <SendImagesModel> send_pics = new List <SendImagesModel>(); foreach (var item in imgs) { send_pics.Add(new SendImagesModel() { img_height = item.image_height, img_size = item.image_size, img_src = item.image_url, img_width = item.image_width }); } var imgStr = JsonConvert.SerializeObject(send_pics); string setting = "{\"copy_forbidden\":0}"; try { string url = string.Format("http://api.vc.bilibili.com/link_draw/v1/doc/create?access_key={0}&appkey={1}&build=5250000&platform=android&src=bilih5&ts={2}", ApiHelper.access_key, ApiHelper.AndroidKey.Appkey, ApiHelper.GetTimeSpan_2); url += "&sign" + ApiHelper.GetSign(url); string content = "category=3&pictures={0}&description={1}&setting={2}&at_uids={3}&at_control={4}&jumpfrom=110"; content = string.Format(content, Uri.EscapeDataString(imgStr), Uri.EscapeDataString(txt), Uri.EscapeDataString(setting), at_uids, Uri.EscapeDataString(ctrl)); var re = await WebClientClass.PostResultsUtf8(new Uri(url), content); Newtonsoft.Json.Linq.JObject obj = JObject.Parse(re); if (obj["code"].ToInt32() == 0) { SendState = true; Utils.ShowMessageToast("发表动态成功"); this.Hide(); } else { SendState = false; Utils.ShowMessageToast("发表动态失败" + obj["message"].ToString()); } } catch (Exception) { SendState = false; Utils.ShowMessageToast("发表动态发生错误"); } }
//时间表 public async void GetBangumiTimeLine() { try { pr_Load_Ban.Visibility = Visibility.Visible; WebClientClass wc = new WebClientClass(); string results = await wc.GetResults(new Uri("http://app.bilibili.com/bangumi/timeline_v2")); BangumiTimeLineModel model = new BangumiTimeLineModel(); model = JsonConvert.DeserializeObject <BangumiTimeLineModel>(results); List <BangumiTimeLineModel> ban = JsonConvert.DeserializeObject <List <BangumiTimeLineModel> >(model.list.ToString()); list_0.Items.Clear(); list_1.Items.Clear(); list_2.Items.Clear(); list_3.Items.Clear(); list_4.Items.Clear(); list_5.Items.Clear(); list_6.Items.Clear(); list_7.Items.Clear(); foreach (BangumiTimeLineModel item in ban) { switch (item.weekday) { case -1: list_7.Items.Add(item); break; case 0: switch (taday) { case 0: list_0.Items.Add(item); break; case 1: list_1.Items.Add(item); break; case 2: list_2.Items.Add(item); break; case 3: list_3.Items.Add(item); break; case 4: list_4.Items.Add(item); break; case 5: list_5.Items.Add(item); break; case 6: list_6.Items.Add(item); break; default: break; } break; case 1: switch (taday) { case 1: list_0.Items.Add(item); break; case 2: list_1.Items.Add(item); break; case 3: list_2.Items.Add(item); break; case 4: list_3.Items.Add(item); break; case 5: list_4.Items.Add(item); break; case 6: list_5.Items.Add(item); break; case 0: list_6.Items.Add(item); break; default: break; } break; case 2: switch (taday) { case 2: list_0.Items.Add(item); break; case 3: list_1.Items.Add(item); break; case 4: list_2.Items.Add(item); break; case 5: list_3.Items.Add(item); break; case 6: list_4.Items.Add(item); break; case 0: list_5.Items.Add(item); break; case 1: list_6.Items.Add(item); break; default: break; } break; case 3: switch (taday) { case 3: list_0.Items.Add(item); break; case 4: list_1.Items.Add(item); break; case 5: list_2.Items.Add(item); break; case 6: list_3.Items.Add(item); break; case 0: list_4.Items.Add(item); break; case 1: list_5.Items.Add(item); break; case 2: list_6.Items.Add(item); break; default: break; } break; case 4: switch (taday) { case 4: list_0.Items.Add(item); break; case 5: list_1.Items.Add(item); break; case 6: list_2.Items.Add(item); break; case 0: list_3.Items.Add(item); break; case 1: list_4.Items.Add(item); break; case 2: list_5.Items.Add(item); break; case 3: list_6.Items.Add(item); break; default: break; } break; case 5: switch (taday) { case 5: list_0.Items.Add(item); break; case 6: list_1.Items.Add(item); break; case 0: list_2.Items.Add(item); break; case 1: list_3.Items.Add(item); break; case 2: list_4.Items.Add(item); break; case 3: list_5.Items.Add(item); break; case 4: list_6.Items.Add(item); break; default: break; } break; case 6: switch (taday) { case 6: list_0.Items.Add(item); break; case 0: list_1.Items.Add(item); break; case 1: list_2.Items.Add(item); break; case 2: list_3.Items.Add(item); break; case 3: list_4.Items.Add(item); break; case 4: list_5.Items.Add(item); break; case 5: list_6.Items.Add(item); break; default: break; } break; default: break; } } pr_Load_Ban.Visibility = Visibility.Collapsed; } catch (Exception ex) { MessageDialog md = new MessageDialog("读取番剧更新失败\r\n" + ex.Message); await md.ShowAsync(); } }
private async void LoadRepost() { //_data try { _repostLoading = true; pr_Load.Visibility = Visibility.Visible; noRepost.Visibility = Visibility.Collapsed; btn_LoadMoreRepost.Visibility = Visibility.Collapsed; string offset = "0"; if (ls_repost.Items.Count != 0) { offset = ls_repost.Items.Count.ToString(); } string url = "https://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/view_repost"; string content = string.Format("_device=android&access_key={0}&appkey={1}&build=5250000&dynamic_id={2}&mobi_app=android&offset={5}&platform=android&src=bilih5&ts={3}&uid={4}", ApiHelper.AccessKey, ApiHelper.AndroidKey.Appkey, _data.desc.dynamic_id, ApiHelper.TimeStamp2, ApiHelper.GetUserId(), offset); content += "&sign=" + ApiHelper.GetSign(content); var re = await WebClientClass.PostResultsUtf8(new Uri(url), content); JObject obj = JObject.Parse(re); if (obj["code"].ToInt32() == 0) { if (obj["data"]["comments"] == null) { if (ls_repost.Items.Count != 0) { Utils.ShowMessageToast("没有更多转发了"); } else { noRepost.Visibility = Visibility.Visible; } return; } ObservableCollection <RepostModel> ls = Newtonsoft.Json.JsonConvert.DeserializeObject <ObservableCollection <RepostModel> >(obj["data"]["comments"].ToString()); if (ls_repost.Items.Count == 0) { ls_repost.ItemsSource = ls; } else { ls.ToList().ForEach(x => (ls_repost.ItemsSource as ObservableCollection <RepostModel>).Add(x)); } btn_LoadMoreRepost.Visibility = Visibility.Visible; _data.desc.repost = obj["data"]["total_count"].ToInt32(); } else { Utils.ShowMessageToast(obj["message"].ToString()); } } catch (Exception) { Utils.ShowMessageToast("无法读取转发信息"); } finally { pr_Load.Visibility = Visibility.Collapsed; pivot.SelectedIndex = 0; _repostLoading = false; } }
private async void LoadSongs() { try { loading = true; pr_load.Visibility = Visibility.Visible; btn_LoadMore.Visibility = Visibility.Collapsed; int cate1id = _selectCategroies.parentId; int cate2id = _selectCategroies.cateId; if (_page == 1) { list_songs.ItemsSource = null; } string url = string.Format("https://api.bilibili.com/audio/music-service-c/songs/getcatesongslist?access_key={0}&appkey={1}&build=5250000&cate1id={2}&cate2id={3}&mid={4}&mobi_app=android&pageIndex={5}&pageSize=20&platform=android&sortBy={6}&ts={7}", ApiHelper.access_key, ApiHelper.AndroidKey.Appkey, cate1id, cate2id, ApiHelper.GetUserId(), _page, _sort, ApiHelper.GetTimeSpan); url += "&sign=" + ApiHelper.GetSign(url); var results = await WebClientClass.GetResults(new Uri(url)); MusicCateSongsModel obj = JsonConvert.DeserializeObject <MusicCateSongsModel>(results); if (obj.code == 0) { if (obj.data.list != null && obj.data.list.Count != 0) { if (_page == 1) { list_songs.ItemsSource = obj.data.list; } else { var ls = list_songs.ItemsSource as ObservableCollection <MusicHomeSongModel>; foreach (var item in obj.data.list) { ls.Add(item); } } btn_LoadMore.Visibility = Visibility.Visible; _page++; } else { Utils.ShowMessageToast("加载完了"); } } else { Utils.ShowMessageToast(obj.msg); } } catch (Exception) { Utils.ShowMessageToast("加载歌曲失败"); } finally { loading = false; pr_load.Visibility = Visibility.Collapsed; } }
/// <summary> /// 登录V3版本,由于Edge未能很好支持Webp格式图片,会出现无法显示拼图验证码问题 /// </summary> /// <param name="username">用户名</param> /// <param name="password">密码</param> /// <param name="captcha">验证码</param> /// <returns></returns> public async Task <LoginCallbackModel> LoginV3(string username, string password) { try { string url = "https://passport.bilibili.com/api/v3/oauth2/login"; var pwd = Uri.EscapeDataString(await EncryptedPassword(password)); string data = $"username={username}&password={pwd}&gee_type=10&appkey={ApiHelper.AndroidKey.Appkey}&mobi_app=android_comic&platform=android&ts={ApiHelper.GetTimeSpan}"; data += "&sign=" + ApiHelper.GetSign(data); var results = await WebClientClass.PostResults(new Uri(url), data); var m = JsonConvert.DeserializeObject <AccountLoginModel>(results); if (m.code == 0) { if (m.data.status == 0) { SettingHelper.Set_Access_key(m.data.token_info.access_token); SettingHelper.Set_Refresh_Token(m.data.token_info.refresh_token); SettingHelper.Set_LoginExpires(DateTime.Now.AddSeconds(m.data.token_info.expires_in)); SettingHelper.Set_UserID(m.data.token_info.mid); //foreach (var item in m.data.sso) //{ await SSO(m.data.token_info.access_token); //} MessageCenter.SendLogined(); return(new LoginCallbackModel() { status = LoginStatus.Success, message = "登录成功" }); } if (m.data.status == 1) { return(new LoginCallbackModel() { status = LoginStatus.NeedValidate, message = "本次登录需要安全验证", url = m.data.url }); } return(new LoginCallbackModel() { status = LoginStatus.Fail, message = m.message }); } else if (m.code == -105) { return(new LoginCallbackModel() { status = LoginStatus.NeedCaptcha, url = m.data.url, message = "登录需要验证码" }); } else { return(new LoginCallbackModel() { status = LoginStatus.Fail, message = m.message }); } } catch (Exception ex) { return(new LoginCallbackModel() { status = LoginStatus.Error, message = "登录出现小问题,请重试" }); } }
/// <summary> /// 使用biliplus的接口,支持番剧/视频 /// 需要授权 /// </summary> /// <param name="model"></param> /// <param name="qn"></param> /// <returns></returns> public static async Task <ReturnPlayModel> GetBiliPlusUrl(string cid, int qn, string referer) { try { string url = "https://www.biliplus.com/BPplayurl.php?cid=" + cid + $"&otype=json&type=&quality={qn}&module=bangumi&season_type=1&qn={qn}&access_key={ApiHelper.access_key}"; Dictionary <string, string> header = new Dictionary <string, string>(); if (SettingHelper.Get_BiliplusCookie() != "") { header.Add("Cookie", SettingHelper.Get_BiliplusCookie()); } string re = await WebClientClass.GetResults(new Uri(url)); FlvPlyaerUrlModel m = JsonConvert.DeserializeObject <FlvPlyaerUrlModel>(re); if (m.code == 0) { List <string> urls = new List <string>(); var playList = new SYEngine.Playlist(SYEngine.PlaylistTypes.NetworkHttp); foreach (var item in m.durl) { urls.Add(item.url); playList.Append(item.url, item.size, item.length / 1000); } playList.NetworkConfigs = CreatePlaylistNetworkConfigs(referer); return(new ReturnPlayModel() { playlist = playList, usePlayMode = UsePlayMode.SYEngine, urls = urls, from = "biliplus" }); } else if (m.code == -403) { if (ApiHelper.IsLogin()) { ReturnPlayModel returnPlayModel = null; MessageDialog messageDialog = new MessageDialog("读取视频地址失败了,是否授权Biliplus后再试一次?"); messageDialog.Commands.Add(new UICommand("授权", async(e) => { var bp = await Account.AuthBiliPlus(); if (bp != "") { returnPlayModel = await GetBiliPlusUrl(cid, qn, referer); } else { Utils.ShowMessageToast("授权失败了"); } })); messageDialog.Commands.Add(new UICommand("取消")); await messageDialog.ShowAsync(); return(returnPlayModel); } else { return(null); } } else { return(null); } } catch (Exception) { return(null); } }
private async void PostHistory(string aid) { try { WebClientClass wc = new WebClientClass(); string url = string.Format("http://api.bilibili.com/x/history/add?_device=wp&_ulv=10000&access_key={0}&appkey={1}&build=411005&platform=android", ApiHelper.access_key, ApiHelper._appKey); url += "&sign=" + ApiHelper.GetSign(url); string result = await wc.PostResults(new Uri(url), "aid=" + aid); } catch (Exception) { } }
public static async Task<string> LoginBilibili(string UserName, string Password) { try { //发送第一次请求,得到access_key WebClientClass wc = new WebClientClass(); string results =await wc.GetResults(new Uri("https://api.bilibili.com/login?appkey=422fd9d7289a1dd9&platform=wp&pwd=" +WebUtility.UrlEncode(Password) + "&type=json&userid=" + WebUtility.UrlEncode(UserName))); //Json解析及数据判断 LoginModel model = new LoginModel(); model = JsonConvert.DeserializeObject<LoginModel>(results); if (model.code == -627) { return "登录失败,密码错误!"; } if (model.code == -626) { return "登录失败,账号不存在!"; } if (model.code == -625) { return "密码错误多次"; } if (model.code==-628) { return "未知错误"; } if (model.code == -1) { return "登录失败,程序注册失败!请联系作者!"; } Windows.Web.Http.HttpClient hc = new Windows.Web.Http.HttpClient(); if (model.code == 0) { access_key = model.access_key; Windows.Web.Http.HttpResponseMessage hr2 = await hc.GetAsync(new Uri("http://api.bilibili.com/login/sso?&access_key=" + model.access_key + "&appkey=422fd9d7289a1dd9&platform=wp")); hr2.EnsureSuccessStatusCode(); StorageFolder folder = ApplicationData.Current.LocalFolder; StorageFile file = await folder.CreateFileAsync("us.bili", CreationCollisionOption.OpenIfExists); await FileIO.WriteTextAsync(file, model.access_key); } //看看存不存在Cookie HttpBaseProtocolFilter hb = new HttpBaseProtocolFilter(); HttpCookieCollection cookieCollection = hb.CookieManager.GetCookies(new Uri("http://bilibili.com/")); List<string> ls = new List<string>(); foreach (HttpCookie item in cookieCollection) { ls.Add(item.Name); } if (ls.Contains("DedeUserID")) { return "登录成功"; } else { return "登录失败"; } } catch (Exception) { return "登录发生错误"; } }
protected override void OnNavigatedFrom(NavigationEventArgs e) { wc = null; }
private async void GetReply() { try { wc = new WebClientClass(); string url = string.Format("http://message.bilibili.com/api/notify/query.replyme.list.do?_device=wp&&_ulv=10000&access_key={0}&actionKey=appkey&appkey={1}&build=410005&data_type=1&page_size=40&platform=android&ts={2}", ApiHelper.access_key, ApiHelper._appKey, ApiHelper.GetTimeSpen); url += "&sign=" + ApiHelper.GetSign(url); string results = await wc.GetResults(new Uri(url)); MessageReplyModel model = JsonConvert.DeserializeObject<MessageReplyModel>(results); if (model.code == 0) { List<MessageReplyModel> list = JsonConvert.DeserializeObject<List<MessageReplyModel>>(model.data.ToString()); foreach (var item in list) { MessageReplyModel models = JsonConvert.DeserializeObject<MessageReplyModel>(item.publisher.ToString()); item.mid = models.mid; item.name = models.name; item.face = models.face; } list_Reply.ItemsSource = list; } else { messShow.Show("读取失败" + model.message, 3000); } } catch (Exception) { messShow.Show("读取失败", 3000); } }