bili support owner
This commit is contained in:
parent
b2f3535a93
commit
a60914d0e8
|
|
@ -44,6 +44,10 @@ public class Data {
|
||||||
private List<Page> pages;
|
private List<Page> pages;
|
||||||
@SerializedName("dash")
|
@SerializedName("dash")
|
||||||
private Dash dash;
|
private Dash dash;
|
||||||
|
@SerializedName("owner")
|
||||||
|
private Owner owner;
|
||||||
|
@SerializedName("wbi_img")
|
||||||
|
private Wbi wbi;
|
||||||
|
|
||||||
public JsonElement getResult() {
|
public JsonElement getResult() {
|
||||||
return result;
|
return result;
|
||||||
|
|
@ -116,4 +120,12 @@ public class Data {
|
||||||
public Dash getDash() {
|
public Dash getDash() {
|
||||||
return dash == null ? new Dash() : dash;
|
return dash == null ? new Dash() : dash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Owner getOwner() {
|
||||||
|
return owner == null ? new Owner() : owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Wbi getWbi() {
|
||||||
|
return wbi == null ? new Wbi() : wbi;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.github.catvod.bean.bili;
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
public class Owner {
|
||||||
|
|
||||||
|
@SerializedName("mid")
|
||||||
|
private int mid;
|
||||||
|
@SerializedName("name")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public int getMid() {
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return TextUtils.isEmpty(name) ? "" : name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFormat() {
|
||||||
|
return String.format("[a=cr:{\"id\":\"%s\",\"name\":\"%s\"}/]%s[/a]", getMid() + "/{pg}", getName(), getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -42,6 +42,8 @@ public class Resp {
|
||||||
private String pic;
|
private String pic;
|
||||||
@SerializedName("duration")
|
@SerializedName("duration")
|
||||||
private String duration;
|
private String duration;
|
||||||
|
@SerializedName("length")
|
||||||
|
private String length;
|
||||||
|
|
||||||
public static List<Result> arrayFrom(JsonElement str) {
|
public static List<Result> arrayFrom(JsonElement str) {
|
||||||
Type listType = new TypeToken<List<Result>>() {}.getType();
|
Type listType = new TypeToken<List<Result>>() {}.getType();
|
||||||
|
|
@ -61,7 +63,11 @@ public class Resp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDuration() {
|
public String getDuration() {
|
||||||
return TextUtils.isEmpty(duration) ? "" : duration;
|
return TextUtils.isEmpty(duration) ? getLength() : duration.split(":")[0] + "分鐘";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLength() {
|
||||||
|
return TextUtils.isEmpty(length) ? "" : length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPic() {
|
public String getPic() {
|
||||||
|
|
@ -72,8 +78,8 @@ public class Resp {
|
||||||
Vod vod = new Vod();
|
Vod vod = new Vod();
|
||||||
vod.setVodId(getBvId() + "@" + getAid());
|
vod.setVodId(getBvId() + "@" + getAid());
|
||||||
vod.setVodName(Jsoup.parse(getTitle()).text());
|
vod.setVodName(Jsoup.parse(getTitle()).text());
|
||||||
vod.setVodRemarks(getDuration().split(":")[0] + "分鐘");
|
|
||||||
vod.setVodPic(getPic().startsWith("//") ? "https:" + getPic() : getPic());
|
vod.setVodPic(getPic().startsWith("//") ? "https:" + getPic() : getPic());
|
||||||
|
vod.setVodRemarks(getDuration());
|
||||||
return vod;
|
return vod;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.github.catvod.bean.bili;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.github.catvod.utils.Utils;
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
|
public class Wbi {
|
||||||
|
|
||||||
|
private final int[] mixinKeyEncTab = new int[]{46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, 36, 20, 34, 44, 52};
|
||||||
|
|
||||||
|
@SerializedName("img_url")
|
||||||
|
private String imgUrl;
|
||||||
|
@SerializedName("sub_url")
|
||||||
|
private String subUrl;
|
||||||
|
|
||||||
|
public String getImgUrl() {
|
||||||
|
return TextUtils.isEmpty(imgUrl) ? "" : imgUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSubUrl() {
|
||||||
|
return TextUtils.isEmpty(subUrl) ? "" : subUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getMixinKey(String imgKey, String subKey) {
|
||||||
|
String s = imgKey + subKey;
|
||||||
|
StringBuilder key = new StringBuilder();
|
||||||
|
for (int i = 0; i < 32; i++) key.append(s.charAt(mixinKeyEncTab[i]));
|
||||||
|
return key.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParam(LinkedHashMap<String, Object> params) {
|
||||||
|
String imgKey = Uri.parse(getImgUrl()).getLastPathSegment().split("\\.")[0];
|
||||||
|
String subKey = Uri.parse(getSubUrl()).getLastPathSegment().split("\\.")[0];
|
||||||
|
String mixinKey = getMixinKey(imgKey, subKey);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
params.put("wts", System.currentTimeMillis() / 1000);
|
||||||
|
for (String key : params.keySet()) sb.append(key).append("=").append(URLEncoder.encode(params.get(key).toString())).append("&");
|
||||||
|
String param = Utils.substring(sb.toString());
|
||||||
|
String wbiSign = Utils.MD5(param + mixinKey);
|
||||||
|
return param + "&w_rid=" + wbiSign;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -113,6 +113,13 @@ public class Bili extends Spider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) throws Exception {
|
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) throws Exception {
|
||||||
|
if (tid.endsWith("/{pg}")) {
|
||||||
|
String mid = tid.split("/")[0];
|
||||||
|
List<Vod> list = new ArrayList<>();
|
||||||
|
String json = OkHttp.string("https://api.bilibili.com/x/space/wbi/arc/search?mid=" + mid + "&pn=" + pg, getHeader());
|
||||||
|
for (Resp.Result item : Resp.Result.arrayFrom(Resp.objectFrom(json).getData().getList().getAsJsonObject().get("vlist"))) list.add(item.getVod());
|
||||||
|
return Result.string(list);
|
||||||
|
} else {
|
||||||
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";
|
||||||
if (extend.containsKey("tid")) tid = tid + " " + extend.get("tid");
|
if (extend.containsKey("tid")) tid = tid + " " + extend.get("tid");
|
||||||
|
|
@ -123,6 +130,7 @@ public class Bili extends Spider {
|
||||||
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());
|
||||||
return Result.string(list);
|
return Result.string(list);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String detailContent(List<String> ids) throws Exception {
|
public String detailContent(List<String> ids) throws Exception {
|
||||||
|
|
@ -141,6 +149,7 @@ public class Bili extends Spider {
|
||||||
vod.setVodName(detail.getTitle());
|
vod.setVodName(detail.getTitle());
|
||||||
vod.setTypeName(detail.getType());
|
vod.setTypeName(detail.getType());
|
||||||
vod.setVodContent(detail.getDesc());
|
vod.setVodContent(detail.getDesc());
|
||||||
|
vod.setVodDirector(detail.getOwner().getFormat());
|
||||||
vod.setVodRemarks(detail.getDuration() / 60 + "分鐘");
|
vod.setVodRemarks(detail.getDuration() / 60 + "分鐘");
|
||||||
|
|
||||||
List<String> acceptDesc = new ArrayList<>();
|
List<String> acceptDesc = new ArrayList<>();
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
77f83df61dccdda0e660148285fcc94a
|
447dbd3dd81f649465abb48b68deb958
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue