导航菜单

页面标题

页面副标题

哔哩哔哩 v1.6.6 - qh.java 源代码

正在查看: 哔哩哔哩 v1.6.6 应用的 qh.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 com.bilibili.tv.player.basic.context.ResolveResourceParams;
import tv.danmaku.ijk.media.player.IjkMediaMeta;
import tv.danmaku.videoplayer.core.danmaku.DanmakuConfig;
import tv.danmaku.videoplayer.core.danmaku.DanmakuStrategy;

public class qh implements IMediaResolver {
    static final SparseArray<qn> a = new SparseArray<>();
    private qx b;

    static {
        qn qnVar = new qn("bb2api", String.valueOf(15), "流畅 360P", "MPEG-4", "MP4A", "H264", 1, 90);
        qn qnVar2 = new qn("bb2api", String.valueOf(16), "流畅 360P", "MPEG-4", "MP4A", "H264", 1, 100);
        qn qnVar3 = new qn("bb2api", String.valueOf(32), "清晰 480P", "FLV", "MP4A", "H264", 2, DanmakuStrategy.DANMAKU_MAX_ON_SCREEN_NO_LIMIT);
        qn qnVar4 = new qn("bb2api", String.valueOf(48), "高清 720P", "MPEG-4", "MP4A", "H264", 3, 175);
        qn qnVar5 = new qn("bb2api", String.valueOf(64), "高清 720P", "FLV", "MP4A", "H264", 4, 200);
        qn qnVar6 = new qn("bb2api", String.valueOf(80), "高清 1080P", "FLV", "MP4A", "H264", 5, 400);
        qn qnVar7 = new qn("bb2api", "bd", "高清 1080P+", "FLV", "MP4A", "H264", 11, 800);
        qn qnVar8 = new qn("bb2api", IjkMediaMeta.IJKM_VAL_TYPE__UNKNOWN, IjkMediaMeta.IJKM_VAL_TYPE__UNKNOWN, IjkMediaMeta.IJKM_VAL_TYPE__UNKNOWN, "", "", 6, -100000);
        qnVar3.a(qnVar2);
        qnVar5.a(qnVar4);
        a.put(15, qnVar);
        a.put(16, qnVar2);
        a.put(32, qnVar3);
        a.put(48, qnVar4);
        a.put(64, qnVar5);
        a.put(80, qnVar6);
        a.put(112, qnVar7);
        a.put(-1000, qnVar8);
    }

    @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, false);
    }

    @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, boolean z) throws ResolveException {
        a(resolveMediaResourceParams);
        int a2 = a(resolveMediaResourceParams, psVar);
        qa a3 = new qa.a(qi.class).a("https://api.bilibili.com/pgc/player/web/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", "android_tv_yst").b("mobi_app", psVar.d()).b("build", psVar.a()).b("buvid", psVar.b()).b("device", psVar.c()).b("type", resolveMediaResourceParams.g()).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("module", resolveMediaResourceParams.b()).b(ResolveResourceParams.KEY_TRACK_PATH, resolveResourceExtra.e()).b("model", a2 == 0 ? psVar.e() : null).b(u.aly.au.r, a2 == 0 ? psVar.f() : null).b("unicom_free", resolveResourceExtra.f() ? "1" : null).b(ResolveResourceParams.KEY_SEASON_TYPE, resolveResourceExtra.g()).b("fnval", String.valueOf(DanmakuConfig.MIN_TAKE_OFF_DURATION)).a(new qd()).a();
        this.b.a(a3.g());
        qi qiVar = (qi) pz.a(a3);
        if (qiVar == null) {
            throw new ResolveMediaSourceException("empty response", -5);
        }
        this.b.a(qiVar.b(), qiVar.c());
        if (!qiVar.a()) {
            throw new ResolveMediaSourceException("connect error", -5);
        }
        try {
            MediaResource a4 = qiVar.a(context, resolveMediaResourceParams, a2, (SparseArray<qn>) null, (int[]) null);
            if (a4 == null) {
                throw new ResolveMediaSourceException("resolve fake", -3);
            }
            this.b.a(a4);
            return a4;
        } catch (ResolveException e) {
            this.b.a(e, new String(qiVar.c()));
            throw e;
        }
    }

    private int a(ResolveMediaResourceParams resolveMediaResourceParams, ps psVar) {
        int a2;
        String f = resolveMediaResourceParams.f();
        int e = resolveMediaResourceParams.e();
        if (e == 0) {
            e = (TextUtils.isEmpty(psVar.e()) && TextUtils.isEmpty(psVar.f())) ? 64 : 0;
        } else if (e == 100) {
            e = a(100);
        } else if (e == 150) {
            e = a(DanmakuStrategy.DANMAKU_MAX_ON_SCREEN_NO_LIMIT);
        } else if (e == 175) {
            e = a(175);
        } else if (e == 200) {
            e = a(200);
        } else if (e == 400) {
            e = a(400);
        } else if (e == 800) {
            e = a(800);
        }
        return (TextUtils.isEmpty(f) || !qn.a(f) || (a2 = a(f)) == -1000) ? e : a2;
    }

    private void a(ResolveMediaResourceParams resolveMediaResourceParams) {
        String f = resolveMediaResourceParams.f();
        if (!TextUtils.isEmpty(f) && !qn.a(f)) {
            resolveMediaResourceParams.a((String) null);
        }
    }

    private int a(int i) {
        int i2 = 0;
        while (true) {
            int i3 = i2;
            if (i3 < a.size()) {
                if (a.valueAt(i3).g != i) {
                    i2 = i3 + 1;
                } else {
                    return a.keyAt(i3);
                }
            } else {
                return 64;
            }
        }
    }

    private int a(String str) {
        int b;
        if (TextUtils.isEmpty(str) || (b = qn.b(str)) < 0) {
            return -1000;
        }
        return b;
    }
}