导航菜单

页面标题

页面副标题

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

正在查看: 哔哩哔哩 v1.6.6 应用的 BiliLiveContent.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package mybl;

import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import bl.mg;
import bl.pz;
import bl.qa;
import bl.qb;
import bl.qe;
import com.alibaba.fastjson.annotation.JSONField;
import com.bilibili.api.BiliConfig;
import com.bilibili.tv.MainApplication;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import org.json.JSONObject;
import tv.danmaku.ijk.media.player.IjkMediaMeta;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;
import u.aly.au;

public class BiliLiveContent implements Parcelable {
    public static final Parcelable.Creator<BiliLiveContent> CREATOR = new Parcelable.Creator<BiliLiveContent>() {
        @Override
        public BiliLiveContent createFromParcel(Parcel parcel) {
            return new BiliLiveContent(parcel);
        }

        @Override
        public BiliLiveContent[] newArray(int i) {
            return new BiliLiveContent[i];
        }
    };
    public int[] mAcceptQuality;
    public String mArea;
    public int mAreaId;
    public String mCorner;

    @JSONField(name = "cover")
    public String mCover;
    public int mCurrentQuality;

    @JSONField(name = "face")
    public String mFace;
    public int mIndex;
    public boolean mIsRound;
    public int mIsTv;

    @JSONField(name = "online")
    public long mOnline;
    public long mParsedTime;
    public String mPlayUrl;
    public List<String> mPlayUrls;
    public String mRealUrl;

    @JSONField(name = "roomid")
    public int mRoomId;

    @JSONField(name = "title")
    public String mTitle;

    @JSONField(name = "uid")
    public long mUid;

    @JSONField(name = "uname")
    public String mUname;

    @Override
    public int describeContents() {
        return 0;
    }

    public boolean hasPlayUrl() {
        return TextUtils.isEmpty(this.mPlayUrl);
    }

    public boolean hasPlayUrlResolved() {
        return TextUtils.isEmpty(this.mRealUrl);
    }

    public String toString() {
        return "BiliLive{roomId=" + this.mRoomId + ", title='" + this.mTitle + "'}";
    }

    public BiliLiveContent() {
        this.mCurrentQuality = 10000;
        this.mParsedTime = System.currentTimeMillis();
    }

    public int getPlayUrl() {
        try {
            return ((Integer) Executors.newSingleThreadExecutor().submit(new Callable<Integer>() {
                @Override
                public Integer call() {
                    return Integer.valueOf(((playUrlResponse) pz.a(new qa.a(playUrlResponse.class).a("https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo").a(true).b(au.a, BiliConfig.a()).b("access_key", mg.a(MainApplication.a()).e()).b("room_id", String.valueOf(BiliLiveContent.this.mRoomId)).b("qn", String.valueOf(BiliLiveContent.this.mCurrentQuality)).b("protocol", "1").b(IjkMediaMeta.IJKM_KEY_FORMAT, "1,2").b("codec", "0").a(new qb()).a(), "GET")).e(BiliLiveContent.this));
                }
            }).get()).intValue();
        } catch (Exception e) {
            return -1;
        }
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(this.mArea);
        parcel.writeInt(this.mAreaId);
        parcel.writeString(this.mCover);
        parcel.writeLong(this.mOnline);
        parcel.writeLong(this.mUid);
        parcel.writeString(this.mUname);
        parcel.writeString(this.mFace);
        parcel.writeLong(this.mParsedTime);
        parcel.writeString(this.mPlayUrl);
        parcel.writeString(this.mRealUrl);
        parcel.writeInt(this.mRoomId);
        parcel.writeString(this.mTitle);
        parcel.writeInt(this.mCurrentQuality);
        parcel.writeSerializable(this.mAcceptQuality);
    }

    protected BiliLiveContent(Parcel parcel) {
        this.mCurrentQuality = 10000;
        this.mArea = parcel.readString();
        this.mAreaId = parcel.readInt();
        this.mCover = parcel.readString();
        this.mOnline = parcel.readLong();
        this.mUid = parcel.readLong();
        this.mUname = parcel.readString();
        this.mFace = parcel.readString();
        this.mParsedTime = parcel.readLong();
        this.mPlayUrl = parcel.readString();
        this.mRealUrl = parcel.readString();
        this.mRoomId = parcel.readInt();
        this.mTitle = parcel.readString();
        this.mCurrentQuality = parcel.readInt();
        this.mAcceptQuality = (int[]) parcel.readSerializable();
    }

    public static class playUrlResponse extends qe {
        public int e(BiliLiveContent biliLiveContent) {
            JSONObject optJSONObject;
            try {
                if (!a() || (optJSONObject = new JSONObject(new String(this.b)).optJSONObject("data")) == null) {
                    return -1;
                }
                JSONObject optJSONObject2 = optJSONObject.optJSONObject("playurl_info").optJSONObject("playurl").optJSONArray("stream").optJSONObject(0).optJSONArray(IjkMediaMeta.IJKM_KEY_FORMAT).optJSONObject(0).optJSONArray("codec").optJSONObject(0);
                biliLiveContent.mPlayUrls = new ArrayList();
                for (int i = 0; i < optJSONObject2.optJSONArray("url_info").length(); i++) {
                    biliLiveContent.mPlayUrls.add(optJSONObject2.optJSONArray("url_info").optJSONObject(i).optString(IjkMediaPlayer.OnNativeInvokeListener.ARG_DNS_HOST) + optJSONObject2.optString("base_url") + optJSONObject2.optJSONArray("url_info").optJSONObject(i).optString("extra"));
                }
                biliLiveContent.mPlayUrl = biliLiveContent.mPlayUrls.get(biliLiveContent.mPlayUrls.size() - 1);
                int i2 = biliLiveContent.mCurrentQuality != optJSONObject2.optInt("current_qn") ? 1 : 0;
                biliLiveContent.mCurrentQuality = optJSONObject2.optInt("current_qn");
                biliLiveContent.mAcceptQuality = new int[optJSONObject2.optJSONArray("accept_qn").length()];
                for (int i3 = 0; i3 < optJSONObject2.optJSONArray("accept_qn").length(); i3++) {
                    biliLiveContent.mAcceptQuality[i3] = optJSONObject2.optJSONArray("accept_qn").optInt(i3);
                }
                return i2;
            } catch (Exception e) {
                return -1;
            }
        }
    }
}