|
|
|
@ -1290,6 +1290,7 @@ public class PlayFragment extends BaseLazyFragment { |
|
|
|
setTip("正在解析播放地址", true, false); |
|
|
|
setTip("正在解析播放地址", true, false); |
|
|
|
parseThreadPool = Executors.newSingleThreadExecutor(); |
|
|
|
parseThreadPool = Executors.newSingleThreadExecutor(); |
|
|
|
LinkedHashMap<String, HashMap<String, String>> jxs = new LinkedHashMap<>(); |
|
|
|
LinkedHashMap<String, HashMap<String, String>> jxs = new LinkedHashMap<>(); |
|
|
|
|
|
|
|
LinkedHashMap<String, String> json_jxs = new LinkedHashMap<>(); |
|
|
|
String extendName = ""; |
|
|
|
String extendName = ""; |
|
|
|
for (ParseBean p : ApiConfig.get().getParseBeanList()) { |
|
|
|
for (ParseBean p : ApiConfig.get().getParseBeanList()) { |
|
|
|
HashMap<String, String> data = new HashMap<String, String>(); |
|
|
|
HashMap<String, String> data = new HashMap<String, String>(); |
|
|
|
@ -1300,65 +1301,112 @@ public class PlayFragment extends BaseLazyFragment { |
|
|
|
data.put("type", p.getType() + ""); |
|
|
|
data.put("type", p.getType() + ""); |
|
|
|
data.put("ext", p.getExt()); |
|
|
|
data.put("ext", p.getExt()); |
|
|
|
jxs.put(p.getName(), data); |
|
|
|
jxs.put(p.getName(), data); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (p.getType() == 1) { |
|
|
|
|
|
|
|
json_jxs.put(p.getName(), p.mixUrl()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
String finalExtendName = extendName; |
|
|
|
String finalExtendName = extendName; |
|
|
|
parseThreadPool.execute(new Runnable() { |
|
|
|
parseThreadPool.execute(new Runnable() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
public void run() { |
|
|
|
JSONObject rs = isSuper? SuperParse.parse(jxs, parseFlag, webUrl):ApiConfig.get().jsonExtMix(parseFlag + "111", pb.getUrl(), finalExtendName, jxs, webUrl); |
|
|
|
if(isSuper){ |
|
|
|
if (rs == null || !rs.has("url") || rs.optString("url").isEmpty()) { |
|
|
|
//并发执行 嗅探和json
|
|
|
|
// errorWithRetry("解析错误", false);
|
|
|
|
JSONObject rs = SuperParse.parse(jxs, parseFlag+"123", webUrl); |
|
|
|
setTip("解析错误", false, true); |
|
|
|
if (!rs.has("url") || rs.optString("url").isEmpty()) { |
|
|
|
} else { |
|
|
|
setTip("解析错误", false, true); |
|
|
|
if (rs.has("parse") && rs.optInt("parse", 0) == 1) { |
|
|
|
|
|
|
|
if (rs.has("ua")) { |
|
|
|
|
|
|
|
webUserAgent = rs.optString("ua").trim(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(!isAdded())return; |
|
|
|
|
|
|
|
requireActivity().runOnUiThread(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
String mixParseUrl = DefaultConfig.checkReplaceProxy(rs.optString("url", "")); |
|
|
|
|
|
|
|
stopParse(); |
|
|
|
|
|
|
|
setTip("正在嗅探播放地址", true, false); |
|
|
|
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
|
|
|
mHandler.sendEmptyMessageDelayed(100, 20 * 1000); |
|
|
|
|
|
|
|
loadWebView(mixParseUrl); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
HashMap<String, String> headers = null; |
|
|
|
if (rs.has("parse") && rs.optInt("parse", 0) == 1) { |
|
|
|
if (rs.has("header")) { |
|
|
|
if (rs.has("ua")) { |
|
|
|
try { |
|
|
|
webUserAgent = rs.optString("ua").trim(); |
|
|
|
JSONObject hds = rs.getJSONObject("header"); |
|
|
|
|
|
|
|
Iterator<String> keys = hds.keys(); |
|
|
|
|
|
|
|
while (keys.hasNext()) { |
|
|
|
|
|
|
|
String key = keys.next(); |
|
|
|
|
|
|
|
if (headers == null) { |
|
|
|
|
|
|
|
headers = new HashMap<>(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
headers.put(key, hds.getString(key)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
|
|
|
th.printStackTrace(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
setTip("超级解析中", true, false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!isAdded())return; |
|
|
|
|
|
|
|
requireActivity().runOnUiThread(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
String mixParseUrl = DefaultConfig.checkReplaceProxy(rs.optString("url", "")); |
|
|
|
|
|
|
|
stopParse(); |
|
|
|
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
|
|
|
mHandler.sendEmptyMessageDelayed(100, 20 * 1000); |
|
|
|
|
|
|
|
loadWebView(mixParseUrl); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
parseThreadPool.execute(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
JSONObject res = SuperParse.doJsonJx(webUrl); |
|
|
|
|
|
|
|
rsJsonJX(res, true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
rsJsonJX(rs,false); |
|
|
|
} |
|
|
|
} |
|
|
|
if (rs.has("jxFrom")) { |
|
|
|
} |
|
|
|
|
|
|
|
}else { |
|
|
|
|
|
|
|
JSONObject rs = ApiConfig.get().jsonExtMix(parseFlag + "111", pb.getUrl(), finalExtendName, jxs, webUrl); |
|
|
|
|
|
|
|
if (rs == null || !rs.has("url") || rs.optString("url").isEmpty()) { |
|
|
|
|
|
|
|
// errorWithRetry("解析错误", false);
|
|
|
|
|
|
|
|
setTip("解析错误", false, true); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
if (rs.has("parse") && rs.optInt("parse", 0) == 1) { |
|
|
|
|
|
|
|
if (rs.has("ua")) { |
|
|
|
|
|
|
|
webUserAgent = rs.optString("ua").trim(); |
|
|
|
|
|
|
|
} |
|
|
|
if(!isAdded())return; |
|
|
|
if(!isAdded())return; |
|
|
|
requireActivity().runOnUiThread(new Runnable() { |
|
|
|
requireActivity().runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
public void run() { |
|
|
|
Toast.makeText(mContext, "解析来自:" + rs.optString("jxFrom"), Toast.LENGTH_SHORT).show(); |
|
|
|
String mixParseUrl = DefaultConfig.checkReplaceProxy(rs.optString("url", "")); |
|
|
|
|
|
|
|
stopParse(); |
|
|
|
|
|
|
|
setTip("正在嗅探播放地址", true, false); |
|
|
|
|
|
|
|
mHandler.removeMessages(100); |
|
|
|
|
|
|
|
mHandler.sendEmptyMessageDelayed(100, 20 * 1000); |
|
|
|
|
|
|
|
loadWebView(mixParseUrl); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
rsJsonJX(rs,false); |
|
|
|
} |
|
|
|
} |
|
|
|
playUrl(rs.optString("url", ""), headers); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void rsJsonJX(JSONObject rs,boolean isSuper){ |
|
|
|
|
|
|
|
if(isSuper){ |
|
|
|
|
|
|
|
if(rs==null || !rs.has("url"))return; |
|
|
|
|
|
|
|
stopLoadWebView(false); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
HashMap<String, String> headers = null; |
|
|
|
|
|
|
|
if (rs.has("header")) { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
JSONObject hds = rs.getJSONObject("header"); |
|
|
|
|
|
|
|
Iterator<String> keys = hds.keys(); |
|
|
|
|
|
|
|
while (keys.hasNext()) { |
|
|
|
|
|
|
|
String key = keys.next(); |
|
|
|
|
|
|
|
if (headers == null) { |
|
|
|
|
|
|
|
headers = new HashMap<>(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
headers.put(key, hds.getString(key)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
|
|
|
th.printStackTrace(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (rs.has("jxFrom")) { |
|
|
|
|
|
|
|
if(!isAdded())return; |
|
|
|
|
|
|
|
requireActivity().runOnUiThread(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
Toast.makeText(mContext, "解析来自:" + rs.optString("jxFrom"), Toast.LENGTH_SHORT).show(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
playUrl(rs.optString("url", ""), headers); |
|
|
|
|
|
|
|
} |
|
|
|
public MyVideoView getPlayer() { |
|
|
|
public MyVideoView getPlayer() { |
|
|
|
return mVideoView; |
|
|
|
return mVideoView; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1695,6 +1743,7 @@ public class PlayFragment extends BaseLazyFragment { |
|
|
|
if(!TextUtils.isEmpty(cookie))headers.put("Cookie", " " + cookie);//携带cookie
|
|
|
|
if(!TextUtils.isEmpty(cookie))headers.put("Cookie", " " + cookie);//携带cookie
|
|
|
|
playUrl(url, headers); |
|
|
|
playUrl(url, headers); |
|
|
|
stopLoadWebView(false); |
|
|
|
stopLoadWebView(false); |
|
|
|
|
|
|
|
SuperParse.stopJsonJx(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1881,6 +1930,7 @@ public class PlayFragment extends BaseLazyFragment { |
|
|
|
if(!TextUtils.isEmpty(cookie))webHeaders.put("Cookie", " " + cookie);//携带cookie
|
|
|
|
if(!TextUtils.isEmpty(cookie))webHeaders.put("Cookie", " " + cookie);//携带cookie
|
|
|
|
playUrl(url, webHeaders); |
|
|
|
playUrl(url, webHeaders); |
|
|
|
stopLoadWebView(false); |
|
|
|
stopLoadWebView(false); |
|
|
|
|
|
|
|
SuperParse.stopJsonJx(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|