正在查看: 哔哩哔哩 v1.6.6 应用的 qj.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 哔哩哔哩 v1.6.6 应用的 qj.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package bl;
import android.content.Context;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.SparseArray;
import bl.qa;
import com.bilibili.lib.media.resolver.exception.ResolveException;
import com.bilibili.lib.media.resolver.exception.ResolveMediaSourceException;
import com.bilibili.lib.media.resolver.params.ResolveMediaResourceParams;
import com.bilibili.lib.media.resolver.params.ResolveResourceExtra;
import com.bilibili.lib.media.resolver.resolve.IMediaResolver;
import com.bilibili.lib.media.resource.MediaResource;
import com.bilibili.lib.media.resource.Segment;
import tv.danmaku.ijk.media.player.IjkMediaMeta;
public class qj implements IMediaResolver {
private static final SparseArray<qn> a = new SparseArray<>();
private qx b;
static {
qn qnVar = new qn("bl2api", String.valueOf(1), "流畅", "MPEG-4", "MP4A", "H264", 1, 100);
qn qnVar2 = new qn("bl2api", String.valueOf(2), "高清", "MPEG-4", "MP4A", "H264", 2, 200);
qn qnVar3 = new qn("bl2api", String.valueOf(3), "超清", "FLV", "MP4A", "H264", 3, 400);
qn qnVar4 = new qn("bl2api", IjkMediaMeta.IJKM_VAL_TYPE__UNKNOWN, IjkMediaMeta.IJKM_VAL_TYPE__UNKNOWN, IjkMediaMeta.IJKM_VAL_TYPE__UNKNOWN, "", "", 4, -100000);
a.put(1, qnVar);
a.put(2, qnVar2);
a.put(3, qnVar3);
a.put(-1000, qnVar4);
}
@Override
public MediaResource resolveMediaResource(Context context, ResolveMediaResourceParams resolveMediaResourceParams, ps psVar, pu puVar, ResolveResourceExtra resolveResourceExtra) throws ResolveException {
if (resolveMediaResourceParams == null || resolveMediaResourceParams.c() <= 0 || psVar == null) {
throw new ResolveMediaSourceException("invalid resolve params", -1);
}
this.b = new qx(psVar.b(), resolveMediaResourceParams.b(), resolveMediaResourceParams.c());
this.b.a();
this.b.b();
return a(context, resolveMediaResourceParams.i(), psVar, puVar, resolveResourceExtra);
}
@Override
public Segment resolveSegment(Context context, pt ptVar, String str) {
return ptVar.a();
}
@NonNull
private MediaResource a(Context context, ResolveMediaResourceParams resolveMediaResourceParams, ps psVar, pu puVar, ResolveResourceExtra resolveResourceExtra) throws ResolveException {
int a2 = a(resolveMediaResourceParams);
qa a3 = new qa.a(qk.class).a("http://live.bilibili.com/api/playurl").b("Bilibili Freedoooooom/MarkII").a(true).b("cid", String.valueOf(resolveMediaResourceParams.c())).b("qn", String.valueOf(a2)).b(u.aly.au.a, qy.a(3, "fSDRQgpusmIbrzyc")).b("otype", "json").b("platform", psVar.d()).b("build", psVar.a()).b("buvid", psVar.b()).b("device", psVar.c()).b("access_key", puVar != null ? puVar.c : null).b("mid", puVar != null ? String.valueOf(puVar.b) : null).b("expire", puVar != null ? String.valueOf(puVar.a) : null).b("npcybs", resolveMediaResourceParams.d() ? "1" : "0").b("unicom_free", resolveResourceExtra.f() ? "1" : null).a(new qd()).a();
this.b.a(a3.g());
qk qkVar = (qk) pz.a(a3);
if (qkVar == null) {
throw new ResolveMediaSourceException("empty response", -5);
}
this.b.a(qkVar.b(), qkVar.c());
if (!qkVar.a()) {
throw new ResolveMediaSourceException("connect error", -5);
}
try {
MediaResource a4 = qkVar.a(context, resolveMediaResourceParams, a2, a, new int[]{1, 2, 3});
if (a4 == null) {
throw new ResolveMediaSourceException("resolve fake", -3);
}
this.b.a(a4);
return a4;
} catch (ResolveException e) {
this.b.b(new String(qkVar.c()));
throw e;
}
}
private int a(ResolveMediaResourceParams resolveMediaResourceParams) {
int a2;
int a3;
String f = resolveMediaResourceParams.f();
int e = resolveMediaResourceParams.e();
if (e <= 100) {
a2 = a(100);
} else if (e <= 200) {
a2 = a(200);
} else {
a2 = e <= 400 ? a(400) : 1;
}
return (TextUtils.isEmpty(f) || !qn.a(f) || (a3 = a(f)) == -1000) ? a2 : a3;
}
private int a(int i) {
for (int i2 = 0; i2 < a.size(); i2++) {
if (a.valueAt(i2).g == i) {
return a.keyAt(i2);
}
}
return 1;
}
private int a(String str) {
if (TextUtils.isEmpty(str)) {
return -1000;
}
for (int i = 0; i < a.size(); i++) {
if (str.endsWith(a.valueAt(i).a)) {
return a.keyAt(i);
}
}
return -1000;
}
}