Fix bilibili

This commit is contained in:
FongMi 2023-07-07 23:26:43 +08:00
parent fdcde40457
commit 04edc4bf76
3 changed files with 21 additions and 28 deletions

View File

@ -47,18 +47,19 @@ public class Bili extends Spider {
private static final String COOKIE = "buvid3=84B0395D-C9F2-C490-E92E-A09AB48FE26E71636infoc"; private static final String COOKIE = "buvid3=84B0395D-C9F2-C490-E92E-A09AB48FE26E71636infoc";
private ScheduledExecutorService service; private ScheduledExecutorService service;
private Map<String, String> header;
private Map<String, String> audios; private Map<String, String> audios;
private AlertDialog dialog; private AlertDialog dialog;
private String cookie;
private String extend; private String extend;
private boolean login; private boolean login;
private boolean vip; private boolean vip;
private void setHeader() { private Map<String, String> getHeader() {
header = new HashMap<>(); Map<String, String> headers = new HashMap<>();
header.put("cookie", getCookie()); headers.put("cookie", cookie);
header.put("User-Agent", Utils.CHROME); headers.put("User-Agent", Utils.CHROME);
header.put("Referer", "https://www.bilibili.com"); headers.put("Referer", "https://www.bilibili.com");
return headers;
} }
private void setAudio() { private void setAudio() {
@ -79,20 +80,12 @@ public class Bili extends Spider {
return FileUtil.getCacheFile("bilibili_user"); return FileUtil.getCacheFile("bilibili_user");
} }
private String getCookie() {
String cookie = FileUtil.read(getUserCache());
return TextUtils.isEmpty(cookie) ? COOKIE : cookie;
}
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
try {
this.extend = extend; this.extend = extend;
setHeader(); this.cookie = FileUtil.read(getUserCache());
this.cookie = TextUtils.isEmpty(cookie) ? COOKIE : cookie;
setAudio(); setAudio();
} catch (Exception e) {
e.printStackTrace();
}
} }
@Override @Override
@ -117,7 +110,7 @@ public class Bili extends Spider {
String order = extend.containsKey("order") ? extend.get("order") : "totalrank"; String order = extend.containsKey("order") ? extend.get("order") : "totalrank";
String duration = extend.containsKey("duration") ? extend.get("duration") : "0"; String duration = extend.containsKey("duration") ? extend.get("duration") : "0";
String api = "https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword=" + URLEncoder.encode(tid) + "&order=" + order + "&duration=" + duration + "&page=" + pg; String api = "https://api.bilibili.com/x/web-interface/search/type?search_type=video&keyword=" + URLEncoder.encode(tid) + "&order=" + order + "&duration=" + duration + "&page=" + pg;
String json = OkHttp.string(api, header); String json = OkHttp.string(api, getHeader());
Resp resp = Resp.objectFrom(json); Resp resp = Resp.objectFrom(json);
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
for (Resp.Result item : Resp.Result.arrayFrom(resp.getData().getResult())) list.add(item.getVod()); for (Resp.Result item : Resp.Result.arrayFrom(resp.getData().getResult())) list.add(item.getVod());
@ -130,12 +123,12 @@ public class Bili extends Spider {
String id = ids.get(0); String id = ids.get(0);
String api = "https://api.bilibili.com/x/web-interface/archive/stat?bvid=" + id; String api = "https://api.bilibili.com/x/web-interface/archive/stat?bvid=" + id;
String json = OkHttp.string(api, header); String json = OkHttp.string(api, getHeader());
Resp resp = Resp.objectFrom(json); Resp resp = Resp.objectFrom(json);
String aid = resp.getData().getAid(); String aid = resp.getData().getAid();
api = "https://api.bilibili.com/x/web-interface/view?aid=" + aid; api = "https://api.bilibili.com/x/web-interface/view?aid=" + aid;
json = OkHttp.string(api, header); json = OkHttp.string(api, getHeader());
Data detail = Resp.objectFrom(json).getData(); Data detail = Resp.objectFrom(json).getData();
Vod vod = new Vod(); Vod vod = new Vod();
vod.setVodId(id); vod.setVodId(id);
@ -146,7 +139,7 @@ public class Bili extends Spider {
vod.setVodRemarks(detail.getDuration() / 60 + "分鐘"); vod.setVodRemarks(detail.getDuration() / 60 + "分鐘");
api = "https://api.bilibili.com/x/player/playurl?avid=" + aid + "&cid=" + detail.getCid() + "&qn=127&fnval=4048&fourk=1"; api = "https://api.bilibili.com/x/player/playurl?avid=" + aid + "&cid=" + detail.getCid() + "&qn=127&fnval=4048&fourk=1";
json = OkHttp.string(api, header); json = OkHttp.string(api, getHeader());
Data play = Resp.objectFrom(json).getData(); Data play = Resp.objectFrom(json).getData();
List<String> playList = new ArrayList<>(); List<String> playList = new ArrayList<>();
List<String> playFrom = new ArrayList<>(); List<String> playFrom = new ArrayList<>();
@ -178,7 +171,7 @@ public class Bili extends Spider {
String qn = ids[2]; String qn = ids[2];
String api = "https://api.bilibili.com/x/player/playurl?avid=" + aid + "&cid=" + cid + "&qn=" + qn + "&fnval=4048&fourk=1"; String api = "https://api.bilibili.com/x/player/playurl?avid=" + aid + "&cid=" + cid + "&qn=" + qn + "&fnval=4048&fourk=1";
String json = OkHttp.string(api, header); String json = OkHttp.string(api, getHeader());
Resp resp = Resp.objectFrom(json); Resp resp = Resp.objectFrom(json);
Dash dash = resp.getData().getDash(); Dash dash = resp.getData().getDash();
@ -199,7 +192,7 @@ public class Bili extends Spider {
String mpd = getMpd(dash, videoList.toString(), audioList.toString()); String mpd = getMpd(dash, videoList.toString(), audioList.toString());
String url = "data:application/dash+xml;base64," + Base64.encodeToString(mpd.getBytes(), 0); String url = "data:application/dash+xml;base64," + Base64.encodeToString(mpd.getBytes(), 0);
return Result.get().url(url).header(header).string(); return Result.get().url(url).header(getHeader()).string();
} }
private String getMedia(Media media) { private String getMedia(Media media) {
@ -248,7 +241,7 @@ public class Bili extends Spider {
} }
private void checkLogin() { private void checkLogin() {
String json = OkHttp.string("https://api.bilibili.com/x/web-interface/nav", header); String json = OkHttp.string("https://api.bilibili.com/x/web-interface/nav", getHeader());
Data data = Resp.objectFrom(json).getData(); Data data = Resp.objectFrom(json).getData();
login = data.isLogin(); login = data.isLogin();
vip = data.getVipType() > 0; vip = data.getVipType() > 0;
@ -282,7 +275,7 @@ public class Bili extends Spider {
service = Executors.newScheduledThreadPool(1); service = Executors.newScheduledThreadPool(1);
service.scheduleAtFixedRate(() -> { service.scheduleAtFixedRate(() -> {
String url = "https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key=" + data.getQrcodeKey() + "&source=main_mini"; String url = "https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key=" + data.getQrcodeKey() + "&source=main_mini";
String json = OkHttp.string(url, header); String json = OkHttp.string(url, getHeader());
url = Resp.objectFrom(json).getData().getUrl(); url = Resp.objectFrom(json).getData().getUrl();
if (url.length() > 0) setCookie(url); if (url.length() > 0) setCookie(url);
}, 1, 1, TimeUnit.SECONDS); }, 1, 1, TimeUnit.SECONDS);
@ -297,7 +290,7 @@ public class Bili extends Spider {
StringBuilder cookie = new StringBuilder(); StringBuilder cookie = new StringBuilder();
String[] splits = Uri.parse(url).getQuery().split("&"); String[] splits = Uri.parse(url).getQuery().split("&");
for (String split : splits) cookie.append(split).append(";"); for (String split : splits) cookie.append(split).append(";");
FileUtil.write(getUserCache(), cookie.toString()); FileUtil.write(getUserCache(), this.cookie = cookie.toString());
Init.show("請重新進入播放頁"); Init.show("請重新進入播放頁");
stopService(); stopService();
} }

Binary file not shown.

View File

@ -1 +1 @@
226256cc8e7eb70afa2efb8adad9b8a5 bc8e0032bdb7abaadf265056bc6800ed