

看到最近网上有很多这样的程序,他们有网页脚本,PC电脑端,但是我发现几乎没有正式的Android端,所有呢我就用Java写了个Android的,免费使用,这里也提醒大家在使用过程中不得商用,不得做违法侵权行为。
我通过到处搜集B站的接口 参考大量文献才实现的 我的程序也已经开源了
唉,不过马上高二了,我会很努力更新视频,大家一定要多多支持呀awa
最后面我也简单提供下自己的匹配算法
软件已经实现了扫码WEB端方式接入登录 并且可以记录你的登录历史记录
我还加入了 投币 点赞 三连 功能
实现了扫码登录 下载速度稍微有点慢,依赖于B站接口。
当前还在测试程序
下载地址 https://www.lanzoui.com/iisi8fds5ab
这里简单说一下软件目前存在的问题
本程序依赖于B站的API 也就是不要想什么4K画质,就1080P60格式都需要登录大会员账号下载。画质问题就不要在问了,我也没有突破的意思。
同样的付费番剧也需要登录大会员账号,否则无法下载,画质最高1080。全部视频均携带水印,这也是对B站视频的保护。
如果你的Android10闪退,请重新进入一次,等待软件公告出现后再操作,这是我们软件公告获取节点问题,部分地区无法访问到这个接口,如果还是闪退,你试一下流量进入。
进入后点击解析,没有登录会调到登录页面,登录一次后会记录下来在你本地,下次直接解析即可,登录记录消失,会重新提醒。
登录页面进入后耐心等待加载,如果加载不出来二维码就刷新一下页面,点击后耐心等待,并非没有响应,还是网站节点问题,我们正在想办法,

BILIBILI AS截图

下面我把自己的计算用户输入的内容,分别分配到BVID和AID的接口算法放出来。
看代码吧,就不再多解释了,注意里面调用的方法,我已经开源了,分配后二次处理的方法你去开源项目里看看。
public class bvUrl extends Thread { @Override public void run() {
/*修什么BUG???写个try罩住 【手动滑稽】哈哈好吧,这里实际上是我有点懒了,不想再分析空指针也就是其中有必需值为空时提示解析失败所以最快的方法就是罩住,我以后一定改写一下*/try { String name = null; //定位数据 //判断下这是不是个纯bv号 if (isENChar(bvid)) { //先检测av是否具备,因为av接口更为苛刻 if (bvid.contains("av")) { //过滤掉多余的东西 //判断这是不是一个链接 if(bvid.contains("https")||bvid.contains("http")){ //给特殊的方法处理判断,传导这个链接进去 即为公共解析 public_jx(bvid); }else { //如果不是,就直接让接口解析 bvid = bvid.replaceAll("av", ""); name = HttpUtils.doGet("网页链接; + bvid,cookie); abvGo(name); } } else if(bvid.contains("bv")||bvid.contains("BV")) { //有BV也有链接头 if(bvid.contains("https")||bvid.contains("http")){ //给特殊的方法处理判断,传导这个链接进去 即为公共解析 public_jx(bvid); }else{ //相反没有携带则就是BV编号 name = HttpUtils.doGet("网页链接; + bvid,cookie); abvGo(name); } }else { //AV/BV都没有,则可能是番剧的或者是手机分享的av,bv链接 //给番剧接口处理即可,这里先判断是不是手机分享地址 if(bvid.contains("https://b23.tv/")){ //这里来看看是不是番剧 if(bvid.contains("ep")){ epGo(bvid); }else{ //如果不是则一定是视频地址 public_jx(bvid); } }else { //如果都不是那就应该是电脑番剧链接 epGo(bvid); } } } else { //全数字一定是av name = HttpUtils.doGet("网页链接; + bvid,cookie); abvGo(name); } }catch (Exception e) { runOnUiThread(new Runnable() { @Override public void run() { //关闭弹窗,提示失败 pd2.cancel(); Toast.makeText(getApplicationContext(), "看起来没有解析到", Toast.LENGTH_SHORT).show(); } }); } } }
下面是正则匹配是否有英文的方法
//bv和av号的检测 -- 正则表达匹配是否有英文 public static boolean isENChar(String string) { //赋值初始类型 boolean flag = false; //正则表达式执行返回结果 Pattern p = Pattern.compile("[a-zA-z]"); //判断是否满足matcher()是完全匹配find()是部分满足 if(p.matcher(string).find()) { flag = true; } return flag; }