示例#1
0
        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();
        }
示例#2
0
        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();
        }
示例#3
0
 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("批量下载完成");
 }
示例#4
0
        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);
        }
示例#5
0
        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完成");
            }
        }
示例#6
0
        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;
        }
示例#7
0
 private void buttonDlFace_Click(object sender, RoutedEventArgs e)
 {
     foreach (BiliInterfaceInfo i in (List <BiliInterfaceInfo>)SharedData.Infos)
     {
         BiliInterface.GetFace(i);
     }
 }
示例#8
0
        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");
        }
示例#9
0
        public void GetInfoAsyncTest()
        {
            BiliInterfaceInfo info = new BiliInterfaceInfo();

            info = AsyncHelper.RunSync(() => BiliInterface.GetInfoAsync("av2680512"));

            Assert.AreEqual(info.title, "【创刊号】哔哩哔哩月刊鬼畜排行榜#001");
        }
示例#10
0
        private async void buttonInsert_Click(object sender, RoutedEventArgs e)
        {
            BiliInterfaceInfo bi = await BiliInterface.GetInfoTaskAsync(textBoxInsert.Text);

            if (bi.pic != null)
            {
                AddData(bi);
            }
        }
示例#11
0
        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"));
        }
示例#12
0
        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("批量获取完成");
        }
示例#13
0
 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("批量获取完成");
 }
示例#14
0
        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("批量获取完成");
        }
示例#15
0
        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);
            }
        }
示例#16
0
 public async Task <BiliVideoDataModel> ggg()
 {
     return(await BiliInterface.GetInfoNewAsync("av9698791"));
 }
示例#17
0
 static void Main(string[] args)
 {
     BiliInterface.GetTagSort(30, "SHARPKEY中文曲", order: "new");
     Console.WriteLine("Hello World!");
     Console.ReadKey();
 }
示例#18
0
        public void GetFlvUrlsTest()
        {
            var c = BiliInterface.GetFlvUrls(15657517);

            Assert.IsTrue(c.Count() > 0);
        }