小窗模式下取消循环播放;点击播放嗅探配置兼容不带域名的方式;修正非小窗模式不支持click

pull/62/head
21561 4 years ago
parent 8a1727a0cf
commit bcf7bef52d
  1. 6
      app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java
  2. 33
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  3. 38
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java

@ -256,7 +256,11 @@ public class ApiConfig {
sb.setQuickSearch(DefaultConfig.safeJsonInt(obj, "quickSearch", 1));
sb.setFilterable(DefaultConfig.safeJsonInt(obj, "filterable", 1));
sb.setPlayerUrl(DefaultConfig.safeJsonString(obj, "playUrl", ""));
sb.setExt(DefaultConfig.safeJsonString(obj, "ext", ""));
if(obj.has("ext") && (obj.get("ext").isJsonArray() || obj.get("ext").isJsonObject())){
sb.setExt(obj.get("ext").toString());
}else {
sb.setExt(DefaultConfig.safeJsonString(obj, "ext", ""));
}
sb.setJar(DefaultConfig.safeJsonString(obj, "jar", ""));
sb.setPlayerType(DefaultConfig.safeJsonInt(obj, "playerType", -1));
sb.setCategories(DefaultConfig.safeJsonStringList(obj, "categories"));

@ -1,9 +1,11 @@
package com.github.tvbox.osc.ui.activity;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.http.SslError;
import android.os.Build;
@ -827,7 +829,7 @@ public class PlayActivity extends BaseActivity {
//重新播放清除现有进度
if (reset) {
CacheManager.delete(MD5.string2MD5(progressKey), 0);
CacheManager.delete(MD5.string2MD5(subtitleCacheKey), "");
CacheManager.delete(MD5.string2MD5(subtitleCacheKey), 0);
}
if (Thunder.play(vs.url, new Thunder.ThunderCallback() {
@Override
@ -1171,7 +1173,7 @@ public class PlayActivity extends BaseActivity {
XWalkUtils.tryUseXWalk(mContext, new XWalkUtils.XWalkState() {
@Override
public void success() {
initWebView(false);
initWebView(!sourceBean.getClickSelector().isEmpty());
loadUrl(url);
}
@ -1317,6 +1319,7 @@ public class PlayActivity extends BaseActivity {
}
}
@SuppressLint("SetJavaScriptEnabled")
private void configWebViewSys(WebView webView) {
if (webView == null) {
return;
@ -1404,6 +1407,29 @@ public class PlayActivity extends BaseActivity {
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted( view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view,url);
String click=sourceBean.getClickSelector();
LOG.i("onPageFinished url:" + url);
if(!click.isEmpty()){
String selector;
if(click.contains(";")){
if(!url.contains(click.split(";")[0]))return;
selector=click.split(";")[1];
}else {
selector=click.trim();
}
String js="$(\""+ selector+"\").click();";
mSysWebView.loadUrl("javascript:"+js);
}
}
WebResourceResponse checkIsVideo(String url, HashMap<String, String> headers) {
if (url.endsWith("/favicon.ico")) {
if (url.startsWith("http://127.0.0.1")) {
@ -1476,6 +1502,7 @@ public class PlayActivity extends BaseActivity {
}
}
@SuppressLint("SetJavaScriptEnabled")
private void configWebViewX5(XWalkView webView) {
if (webView == null) {
return;
@ -1606,7 +1633,7 @@ public class PlayActivity extends BaseActivity {
if (loadFoundCount.incrementAndGet() == 1) {
mHandler.removeMessages(100);
url = loadFoundVideoUrls.poll();
if (webHeaders != null && !webHeaders.isEmpty()) {
if (!webHeaders.isEmpty()) {
playUrl(url, webHeaders);
} else {
playUrl(url, null);

@ -1,5 +1,6 @@
package com.github.tvbox.osc.ui.fragment;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
@ -766,20 +767,15 @@ public class PlayFragment extends BaseLazyFragment {
private SourceBean sourceBean;
private void playNext(boolean isProgress) {
boolean hasNext = true;
boolean hasNext;
if (mVodInfo == null || mVodInfo.seriesMap.get(mVodInfo.playFlag) == null) {
hasNext = false;
} else {
hasNext = mVodInfo.playIndex + 1 < mVodInfo.seriesMap.get(mVodInfo.playFlag).size();
}
if (!hasNext) {
if(isProgress && mVodInfo!=null){
mVodInfo.playIndex=0;
Toast.makeText(requireContext(), "已经是最后一集了!,即将跳到第一集继续播放", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(requireContext(), "已经是最后一集了!", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(requireContext(), "已经是最后一集了!", Toast.LENGTH_SHORT).show();
return;
}else {
mVodInfo.playIndex++;
}
@ -846,7 +842,7 @@ public class PlayFragment extends BaseLazyFragment {
//重新播放清除现有进度
if (reset) {
CacheManager.delete(MD5.string2MD5(progressKey), 0);
CacheManager.delete(MD5.string2MD5(subtitleCacheKey), "");
CacheManager.delete(MD5.string2MD5(subtitleCacheKey), 0);
}
if (Thunder.play(vs.url, new Thunder.ThunderCallback() {
@Override
@ -1189,7 +1185,7 @@ public class PlayFragment extends BaseLazyFragment {
XWalkUtils.tryUseXWalk(mContext, new XWalkUtils.XWalkState() {
@Override
public void success() {
initWebView(false);
initWebView(!sourceBean.getClickSelector().isEmpty());
loadUrl(url);
}
@ -1340,6 +1336,7 @@ public class PlayFragment extends BaseLazyFragment {
}
}
@SuppressLint("SetJavaScriptEnabled")
private void configWebViewSys(WebView webView) {
if (webView == null) {
return;
@ -1435,8 +1432,18 @@ public class PlayFragment extends BaseLazyFragment {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view,url);
String click=sourceBean.getClickSelector();
if(!click.isEmpty() && url.contains(click.split(";")[0])){
mSysWebView.loadUrl("javascript:$(\""+ click.split(";")[1]+"\").click();");
LOG.i("onPageFinished url:" + url);
if(!click.isEmpty()){
String selector;
if(click.contains(";")){
if(!url.contains(click.split(";")[0]))return;
selector=click.split(";")[1];
}else {
selector=click.trim();
}
String js="$(\""+ selector+"\").click();";
mSysWebView.loadUrl("javascript:"+js);
}
}
@ -1512,6 +1519,7 @@ public class PlayFragment extends BaseLazyFragment {
}
}
@SuppressLint("SetJavaScriptEnabled")
private void configWebViewX5(XWalkView webView) {
if (webView == null) {
return;
@ -1599,8 +1607,11 @@ public class PlayFragment extends BaseLazyFragment {
public void onLoadFinished(XWalkView view, String url) {
super.onLoadFinished(view, url);
String click=sourceBean.getClickSelector();
LOG.i("onLoadFinished url:" + url);
if(!click.isEmpty() && url.contains(click.split(";")[0])){
mXwalkWebView.loadUrl("javascript:$(\""+ click.split(";")[1]+"\").click();");
String js="$(\""+ click.split(";")[1]+"\").click();";
LOG.i(js);
mXwalkWebView.loadUrl("javascript:"+js);
}
}
@ -1628,6 +1639,7 @@ public class PlayFragment extends BaseLazyFragment {
ad = loadedUrls.get(url);
}
if (!ad ) {
if (checkVideoFormat(url)) {
HashMap<String, String> webHeaders = new HashMap<>();
Map<String, String> hds = request.getRequestHeaders();

Loading…
Cancel
Save