private void buttonDlMP4_Click(object sender, EventArgs e) { string[] lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n"); timer1.Enabled = true; tsd.Progressbar = verticalProgressBar1; Log.Info("获取所有视频MP4地址"); foreach (string s in lines) { if (s != "") { BiliInterfaceInfo info = BiliInterface.GetMP4info(s, 1); //TODO:多页视频 if (info != null) { listb.Add(info); } } } Log.Info("所有视频MP4地址获取完成"); Log.Info("开始批量下载"); DlNext(); }
private void buttonDLold_Click(object sender, EventArgs e) { string[] lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n"); tsd.Progressbar = verticalProgressBar1; Log.Info("获取所有视频信息"); listb.Clear(); foreach (string s in lines) { if (s != "") { BiliInterfaceInfo info = BiliInterface.GetFlvInfo(s); if (info.flvurl != null) { listb.Add(info); //Log.Info("正在下载视频 - " + info.AVNUM); //tsd = new TSDownload("http://www.bilibilijj.com/DownLoad/Cid/" + info.cid, System.Environment.CurrentDirectory + @"\video\" + info.AVNUM + ".flv"); //tsd.Progressbar = progressBar1; //tsd.Start(); } } } Log.Info("所有视频信息获取完成"); Log.Info("开始批量下载"); if (downloader != null && downloader.Status == DownloadStatus.Downloading) { downloader.Cancel(); } timer1.Enabled = true; DlNextST(); }
private void buttonDL_Click(object sender, EventArgs e) { string[] lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n"); Log.Info("获取所有视频信息"); listb.Clear(); foreach (string s in lines) { if (s != "") { BiliInterfaceInfo info = BiliInterface.GetFlvInfo(s); if (info.flvurl != null) { listb.Add(info); } } } Log.Info("所有视频信息获取完成"); Log.Info("开始批量下载"); timer1.Stop(); try { tsd.Stop(); //tsd.Progressbar = null; } catch { } //verticalProgressBar1.Maximum = 100; DlNext(); //Log.Info("批量下载完成"); }
private void buttenGen_Click(object sender, RoutedEventArgs e) { BiliInterfaceInfo bi = BiliInterface.GetInfo(textBoxAv.Text); BiliInterface.GetFace(bi); BiliInterface.GetPic(bi); //text|font|ptSize|#colorcode|RightAlign TrueOrFalse|pointX|pointY|rectX|rectY|rectWidth|rectHeight|AutoOffsetY TrueOrFalse|MaxWidth List <TemplateInfo> tis = new List <TemplateInfo>(); string text = textBoxInfo.Text; text = Fubang.DoReplace(text, bi); var lines = Regex.Split(text, "\r\n|\r|\n"); foreach (string line in lines) { if (string.IsNullOrEmpty(line)) { continue; } var cells = Regex.Split(line, "[|]"); TemplateInfo ti = new TemplateInfo() { text = cells[0], font = new Font(cells[1], Convert.ToSingle(cells[2]), GraphicsUnit.Point), brush = new SolidBrush(ColorTranslator.FromHtml(cells[3])), isRightAlign = bool.Parse(cells[4]) }; if (!ti.isRightAlign) { ti.point = new PointF(Convert.ToSingle(cells[5]), Convert.ToSingle(cells[6])); } else { ti.rectangle = new RectangleF(Convert.ToSingle(cells[7]), Convert.ToSingle(cells[8]), Convert.ToSingle(cells[9]), Convert.ToSingle(cells[10])); } if (cells.Length >= 12) { ti.autoOffsetY = bool.Parse(cells[11]); } if (cells.Length >= 13) { ti.maxWidth = Convert.ToSingle(cells[12]); } tis.Add(ti); } Zhubang zb = new Zhubang(); System.Drawing.Image re; if (bgimg == null) { re = zb.GenStardustTemplate(tis); } else { re = zb.GenWithTemplate((System.Drawing.Image)bgimg.Clone(), tis); } imageMain.Source = ConvertDrawingImage2MediaImageSource(re); }
private async void buttonRawRead_Click(object sender, EventArgs e) { if (openFileDialogGuichu.ShowDialog() == DialogResult.OK) { MemoryStream tempMs = new MemoryStream(); using (FileStream fs = new FileStream(openFileDialogGuichu.FileName, FileMode.Open)) { using (GZipStream Compress = new GZipStream(fs, CompressionMode.Decompress)) { Compress.CopyTo(tempMs); } } byte[] bytes = tempMs.ToArray(); string str = Encoding.GetEncoding("UTF-8").GetString(bytes); BiliShell bs = JsonConvert.DeserializeObject <BiliShell>(str); if (bs.ver != 1) { MessageBox.Show("此文件是使用新版BR生成的,无法打开!"); return; } List <BiliInterfaceInfo> bi = JsonConvert.DeserializeObject <List <BiliInterfaceInfo> >(bs.infos.ToString()); textBoxAV.Text = ""; //TODO: 判断是否为空文件 foreach (BiliInterfaceInfo i in bi) { textBoxAV.Text += i.AVNUM + "\r\n"; } dataGridViewRAW.DataSource = bi; Log.Info("文件加载完成,正在生成csv"); textBoxOut.Text = await BiliInterface.GetCsvInfosAsync(bi); Log.Info("生成csv完成"); } }
private void buttonGet_Click(object sender, RoutedEventArgs e) { var avs = SharedData.SortedAVs; string re = ""; string renames = ""; foreach (string item in avs) { var urls = BiliInterface.GetAVFlvUrl(item, out var rename, SharedData.Infos?.ToList() ?? null); if (urls != null) { foreach (string u in urls) { re += u + "\r\n"; } } if (rename != null) { foreach (string renn in rename) { renames += renn + "\r\n"; } } re += "\r\n"; } textBox.Text = re; textBoxRename.Text = renames; }
private void buttonDlFace_Click(object sender, RoutedEventArgs e) { foreach (BiliInterfaceInfo i in (List <BiliInterfaceInfo>)SharedData.Infos) { BiliInterface.GetFace(i); } }
private void 进入唧唧下载MP4ToolStripMenuItem_Click(object sender, EventArgs e) { //http://www.bilibilijj.com/Files/DownLoad/9626305.mp4 BiliInterfaceInfo curr = ((List <BiliInterfaceInfo>)dataGridViewRAW.DataSource)[CurrentRowIndex]; Process.Start($"http://www.bilibilijj.com/Files/DownLoad/{curr.cid}.mp4"); string html = BiliInterface.GetHtml($"http://www.bilibilijj.com/Files/DownLoad/{curr.cid}.mp4"); }
public void GetInfoAsyncTest() { BiliInterfaceInfo info = new BiliInterfaceInfo(); info = AsyncHelper.RunSync(() => BiliInterface.GetInfoAsync("av2680512")); Assert.AreEqual(info.title, "【创刊号】哔哩哔哩月刊鬼畜排行榜#001"); }
private async void buttonInsert_Click(object sender, RoutedEventArgs e) { BiliInterfaceInfo bi = await BiliInterface.GetInfoTaskAsync(textBoxInsert.Text); if (bi.pic != null) { AddData(bi); } }
public void GetFlvInfoTest() { BiliInterfaceInfo info = new BiliInterfaceInfo(); //info = BiliInterface.GetFlvInfo("av3153761"); //TestContext.WriteLine(info.flvurl); //Debug.WriteLine(info.flvurl); info = BiliInterface.GetFlvInfo("av9472850"); Assert.IsTrue(info.flvurl.Contains(".flv")); }
private async void buttonRAWInsert_Click(object sender, EventArgs e) { if (dataGridViewRAW.DataSource == null) { MessageBox.Show("还没有生成或加载任何数据!", "NOOOOOOOOOO!"); return; } Log.Info("开始批量获取"); TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.Indeterminate); List <string> lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n").ToList <string>(); List <BiliInterfaceInfo> llraw = (List <BiliInterfaceInfo>)dataGridViewRAW.DataSource; List <BiliInterfaceInfo> ll = new List <BiliInterfaceInfo>(); llraw.ForEach(i => { if (!lines.Contains(i.avnum)) { ll.Add(i); } }); string failedAVs = ""; IEnumerable <Task <BiliInterfaceInfo> > llasync = from s in lines where s != "" select BiliInterface.GetInfoAsync(s); Task <BiliInterfaceInfo>[] lltasks = llasync.ToArray(); BiliInterfaceInfo[] lls = await Task.WhenAll(lltasks); foreach (BiliInterfaceInfo info in lls) { if (info.pic != null) { ll.Add(info); } else { failedAVs += info.avnum + ";"; } } ll.Sort(sortt); for (int i = 1; i <= ll.Count; i++) { ll[i - 1].Fpaiming = i; } dataGridViewRAW.DataSource = ll; if (failedAVs != "") { Log.Error("注意!下列视频数据未正确获取!\r\n" + failedAVs); } textBoxOut.Text = await BiliInterface.GetCsvInfosAsync(ll); TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.NoProgress); Log.Info("批量获取完成"); }
private void buttonPic_Click(object sender, EventArgs e) { Log.Info("开始批量获取"); string[] lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n"); foreach (string s in lines) { if (s != "") { BiliInterface.GetPic(s); } } Log.Info("批量获取完成"); }
private async void buttonGen_Click(object sender, EventArgs e) { Log.Info("开始批量获取"); TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.Indeterminate); List <string> lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n").ToList <string>(); List <BiliInterfaceInfo> ll = new List <BiliInterfaceInfo>(); string failedAVs = ""; var avs = from s in lines where s != "" select s; //IEnumerable<Task<BiliInterfaceInfo>> llasync = // from s in lines where s != "" select BiliInterface.GetInfoHTaskAsync(s); //Task<BiliInterfaceInfo>[] lltasks = llasync.ToArray(); //BiliInterfaceInfo[] lls = await Task.WhenAll(lltasks); Stopwatch sw = new Stopwatch(); sw.Restart(); BiliInterfaceInfo[] lls = await concurrentAsync( 100, avs, new Func <string, ScoreType, Task <BiliInterfaceInfo> >(BiliInterface.GetInfoTaskAsync), ScoreType.Guichu); Log.Info($"获取用时:{sw.ElapsedMilliseconds}ms"); sw.Stop(); Log.Info("正在排序"); foreach (BiliInterfaceInfo info in lls) { if (info.pic != null) { ll.Add(info); } else { failedAVs += info.avnum + ";"; } } ll.Sort(sortt); for (int i = 1; i <= ll.Count; i++) { ll[i - 1].Fpaiming = i; } dataGridViewRAW.DataSource = ll; if (failedAVs != "") { Log.Error("注意!下列视频数据未正确获取!\r\n" + failedAVs); } textBoxOut.Text = await BiliInterface.GetCsvInfosAsync(ll); TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.NoProgress); Log.Info("批量获取完成"); }
private void buttonListTagGen_Click(object sender, EventArgs e) { Log.Info("开始根据TAG获取数据"); string[] tags = Regex.Split(textBoxTags.Text, ";|;"); int i = 0; string html = BiliInterface.GetHtml("http://www.bilibili.com/index/tag/" + "30" + "/60d/hot/1/" + tags[i] + ".json"); if (html == null) { Log.Error("数据错误"); return; } List <BiliInterfaceInfo> infos = new List <BiliInterfaceInfo>(); System.Web.Script.Serialization.JavaScriptSerializer j = new System.Web.Script.Serialization.JavaScriptSerializer(); BiliIndexInfo info = new BiliIndexInfo(); info = j.Deserialize <BiliIndexInfo>(html); Log.Info($"一共找到了{info.pages}页的数据"); foreach (var l in info.list) { infos.Add(l); } for (int k = 2; k <= info.pages; k++) { html = BiliInterface.GetHtml("http://www.bilibili.com/index/tag/" + "30" + "/60d/hot/" + k.ToString() + "/" + tags[i] + ".json"); info = new BiliIndexInfo(); try { info = j.Deserialize <BiliIndexInfo>(html); foreach (var l in info.list) { infos.Add(l); } } catch (Exception) { html = html.Replace("\"--\"", "\"0\""); info = j.Deserialize <BiliIndexInfo>(html); foreach (var l in info.list) { infos.Add(l); } Log.Error($"在第{k.ToString()}页遇到不可读的“--”数据,B站真是不可描述= =,天书已经把不可读数据变成了0了,最好将所有数据通过API获取一遍"); } } /* 算分 * foreach (var iinfo in infos) * { * if (iinfo.play <= 500) * { * iinfo.Fdefen = iinfo.play + 5 * iinfo.review + 20 * iinfo.coins + 15 * iinfo.favorites + iinfo.video_review; * } * else if (iinfo.play <= 800) * { * iinfo.Fdefen = iinfo.play + 5 * iinfo.review + 18 * iinfo.coins + 13 * iinfo.favorites; * } * else * { * iinfo.Fdefen = 800 + 5 * iinfo.review + 18 * iinfo.coins + 13 * iinfo.favorites; * } * * } * infos.Sort(sortt); * for (int ii = 1; ii <= infos.Count; ii++) * { * infos[ii - 1].Fpaiming = ii; * } */ textBoxOut.Text = "AV号,标题,播放数,弹幕数,收藏数,硬币数,评论数,up,时间,分区,总分\r\n"; textBoxAV.Text = ""; foreach (var iinfo in infos) { textBoxAV.Text += iinfo.avnum + "\r\n"; textBoxOut.Text += GenHang(new string[] { iinfo.avnum, iinfo.title, iinfo.play.ToString(), iinfo.video_review.ToString(), iinfo.favorites.ToString(), iinfo.coins.ToString(), iinfo.review.ToString(), iinfo.author, iinfo.created_at, iinfo.typename, iinfo.Fdefen.ToString() }); textBoxOut.Text += "\"\r\n"; Application.DoEvents(); } infos.Sort(sortt); dataGridViewRAW.DataSource = infos; tabControlMain.SelectedIndex = 2; Log.Info("根据TAG获取数据完成,目前的数据是TAG接口返回的,最好重新通过API获取一遍数据"); int sortt(BiliInterfaceInfo x, BiliInterfaceInfo y) { int res = 0; if (DateTime.Parse(x.created_at) > DateTime.Parse(y.created_at)) { res = -1; } else { res = 1; } return(res); } }
public async Task <BiliVideoDataModel> ggg() { return(await BiliInterface.GetInfoNewAsync("av9698791")); }
static void Main(string[] args) { BiliInterface.GetTagSort(30, "SHARPKEY中文曲", order: "new"); Console.WriteLine("Hello World!"); Console.ReadKey(); }
public void GetFlvUrlsTest() { var c = BiliInterface.GetFlvUrls(15657517); Assert.IsTrue(c.Count() > 0); }