Merge pull request #107 from CatVodTVOfficial/dev

完善解析逻辑,支持原配置格式中采集站配置json解析的格式,支持json解析ext头设置
pull/1/head
DreamDSTR 3 years ago committed by GitHub
commit 60c1f2c83b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 58
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java

@ -50,6 +50,7 @@ import com.github.tvbox.osc.util.XWalkUtils;
import com.github.tvbox.osc.viewmodel.SourceViewModel; import com.github.tvbox.osc.viewmodel.SourceViewModel;
import com.lzy.okgo.OkGo; import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.AbsCallback; import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.HttpHeaders;
import com.lzy.okgo.model.Response; import com.lzy.okgo.model.Response;
import com.orhanobut.hawk.Hawk; import com.orhanobut.hawk.Hawk;
@ -439,9 +440,24 @@ public class PlayActivity extends BaseActivity {
if (useParse) { if (useParse) {
parseBean = ApiConfig.get().getDefaultParse(); parseBean = ApiConfig.get().getDefaultParse();
} else { } else {
parseBean = new ParseBean(); if (playUrl.startsWith("json:")) {
parseBean.setType(0); parseBean = new ParseBean();
parseBean.setUrl(playUrl); parseBean.setType(1);
parseBean.setUrl(playUrl.substring(5));
} else if (playUrl.startsWith("parse:")) {
String parseRedirect = playUrl.substring(6);
for (ParseBean pb : ApiConfig.get().getParseBeanList()) {
if (pb.getName().equals(parseRedirect)) {
parseBean = pb;
break;
}
}
}
if (parseBean == null) {
parseBean = new ParseBean();
parseBean.setType(0);
parseBean.setUrl(playUrl);
}
} }
loadFound = false; loadFound = false;
doParse(parseBean); doParse(parseBean);
@ -498,8 +514,24 @@ public class PlayActivity extends BaseActivity {
loadWebView(pb.getUrl() + webUrl); loadWebView(pb.getUrl() + webUrl);
} else if (pb.getType() == 1) { // json 解析 } else if (pb.getType() == 1) { // json 解析
setTip("正在解析播放地址", true, false); setTip("正在解析播放地址", true, false);
// 解析ext
HttpHeaders reqHeaders = new HttpHeaders();
try {
JSONObject jsonObject = new JSONObject(pb.getExt());
if (jsonObject.has("header")) {
JSONObject headerJson = jsonObject.optJSONObject("header");
Iterator<String> keys = headerJson.keys();
while (keys.hasNext()) {
String key = keys.next();
reqHeaders.put(key, headerJson.optString(key, ""));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
OkGo.<String>get(pb.getUrl() + webUrl) OkGo.<String>get(pb.getUrl() + webUrl)
.tag("json_jx") .tag("json_jx")
.headers(reqHeaders)
.execute(new AbsCallback<String>() { .execute(new AbsCallback<String>() {
@Override @Override
public String convertResponse(okhttp3.Response response) throws Throwable { public String convertResponse(okhttp3.Response response) throws Throwable {
@ -576,6 +608,14 @@ public class PlayActivity extends BaseActivity {
} }
} }
if (rs.has("jxFrom")) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "解析来自:" + rs.optString("jxFrom"), Toast.LENGTH_SHORT).show();
}
});
}
boolean parseWV = rs.optInt("parse", 0) == 1; boolean parseWV = rs.optInt("parse", 0) == 1;
if (parseWV) { if (parseWV) {
String wvUrl = DefaultConfig.checkReplaceProxy(rs.optString("url", "")); String wvUrl = DefaultConfig.checkReplaceProxy(rs.optString("url", ""));
@ -625,6 +665,14 @@ public class PlayActivity extends BaseActivity {
} }
} }
if (rs.has("jxFrom")) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "解析来自:" + rs.optString("jxFrom"), Toast.LENGTH_SHORT).show();
}
});
}
playUrl(rs.optString("url", ""), headers); playUrl(rs.optString("url", ""), headers);
} }
} }
@ -653,14 +701,14 @@ public class PlayActivity extends BaseActivity {
@Override @Override
public void fail() { public void fail() {
Toast.makeText(mContext, "XWalkView不兼容,已替换为系统自带WebView", Toast.LENGTH_LONG).show(); Toast.makeText(mContext, "XWalkView不兼容,已替换为系统自带WebView", Toast.LENGTH_SHORT).show();
initWebView(true); initWebView(true);
loadUrl(url); loadUrl(url);
} }
@Override @Override
public void ignore() { public void ignore() {
Toast.makeText(mContext, "XWalkView运行组件未下载,已替换为系统自带WebView", Toast.LENGTH_LONG).show(); Toast.makeText(mContext, "XWalkView运行组件未下载,已替换为系统自带WebView", Toast.LENGTH_SHORT).show();
initWebView(true); initWebView(true);
loadUrl(url); loadUrl(url);
} }

Loading…
Cancel
Save