From bcf7bef52d6c6d14dd40264ccf6b8494f42263ad Mon Sep 17 00:00:00 2001 From: 21561 <215613905@qq.com> Date: Mon, 10 Oct 2022 23:41:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=AA=97=E6=A8=A1=E5=BC=8F=E4=B8=8B?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=BE=AA=E7=8E=AF=E6=92=AD=E6=94=BE;?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=92=AD=E6=94=BE=E5=97=85=E6=8E=A2=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=85=BC=E5=AE=B9=E4=B8=8D=E5=B8=A6=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E5=BC=8F;=E4=BF=AE=E6=AD=A3=E9=9D=9E?= =?UTF-8?q?=E5=B0=8F=E7=AA=97=E6=A8=A1=E5=BC=8F=E4=B8=8D=E6=94=AF=E6=8C=81?= =?UTF-8?q?click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/tvbox/osc/api/ApiConfig.java | 6 ++- .../tvbox/osc/ui/activity/PlayActivity.java | 33 ++++++++++++++-- .../tvbox/osc/ui/fragment/PlayFragment.java | 38 ++++++++++++------- 3 files changed, 60 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java index 4bb927d8..dd063a8b 100644 --- a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.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")); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index 1f301955..a37bf55d 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -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 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); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index b3637f20..d38bb68c 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -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 webHeaders = new HashMap<>(); Map hds = request.getRequestHeaders();