diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 7ab3504b..02273b64 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -201,5 +201,7 @@ -keep class com.github.catvod.crawler.*{*;} # 迅雷下载模块 -keep class com.xunlei.downloadlib.** {*;} - --keep class com.github.tvbox.quickjs.** {*;} \ No newline at end of file +# quickjs引擎 +-keep class com.github.tvbox.quickjs.** {*;} +# 支持影视的ali相关的jar +-keep class com.google.gson.**{*;} \ No newline at end of file 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 7f8573ed..8cca4bdd 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 @@ -62,7 +62,7 @@ public class ApiConfig { private JarLoader jarLoader = new JarLoader(); - private String userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"; + private String userAgent = "okhttp/3.15"; private String requestAccept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java index 3c84fafd..01e22a01 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java @@ -604,16 +604,16 @@ public class DetailActivity extends BaseActivity { if (event.obj != null) { if (event.obj instanceof Integer) { int index = (int) event.obj; - if (index != vodInfo.playIndex) { - seriesAdapter.getData().get(vodInfo.playIndex).selected = false; - seriesAdapter.notifyItemChanged(vodInfo.playIndex); - seriesAdapter.getData().get(index).selected = true; - seriesAdapter.notifyItemChanged(index); - mGridView.setSelection(index); - vodInfo.playIndex = index; - //保存历史 - insertVod(sourceKey, vodInfo); + for (int j = 0; j < vodInfo.seriesMap.get(vodInfo.playFlag).size(); j++) { + seriesAdapter.getData().get(j).selected = false; + seriesAdapter.notifyItemChanged(j); } + seriesAdapter.getData().get(index).selected = true; + seriesAdapter.notifyItemChanged(index); + mGridView.setSelection(index); + vodInfo.playIndex = index; + //保存历史 + insertVod(sourceKey, vodInfo); } else if (event.obj instanceof JSONObject) { vodInfo.playerCfg = ((JSONObject) event.obj).toString(); //保存历史 diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java index 8b5d7562..48737666 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java @@ -619,7 +619,7 @@ public class HomeActivity extends BaseActivity { dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { - if (homeSourceKey != null && !homeSourceKey.equals(Hawk.get(HawkConfig.HOME_API, ""))) { +// if (homeSourceKey != null && !homeSourceKey.equals(Hawk.get(HawkConfig.HOME_API, ""))) { // Intent intent = getApplicationContext().getPackageManager().getLaunchIntentForPackage(getApplication().getPackageName()); // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP // | Intent.FLAG_ACTIVITY_CLEAR_TASK); @@ -638,7 +638,7 @@ public class HomeActivity extends BaseActivity { // HomeActivity.this.startActivity(intent); - } +// } } }); dialog.show(); 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 d88c862e..00fa206a 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 @@ -149,11 +149,7 @@ public class PlayActivity extends BaseActivity { ProgressManager progressManager = new ProgressManager() { @Override public void saveProgress(String url, long progress) { - if (videoDuration != -1) { - if (videoDuration <= 6000) { - return; - } - } + if (videoDuration ==0) return; CacheManager.save(MD5.string2MD5(url), progress); } @@ -238,13 +234,20 @@ public class PlayActivity extends BaseActivity { void initVideoDurationSomeThing() { videoDuration = mVideoView.getMediaPlayer().getDuration(); - if (videoDuration <= 6000) { + if (videoDuration ==0) { mController.mPlayerSpeedBtn.setVisibility(View.GONE); mController.mPlayerTimeStartEndText.setVisibility(View.GONE); mController.mPlayerTimeStartBtn.setVisibility(View.GONE); mController.mPlayerTimeSkipBtn.setVisibility(View.GONE); mController.mPlayerTimeStepBtn.setVisibility(View.GONE); mController.mPlayerTimeResetBtn.setVisibility(View.GONE); + }else { + mController.mPlayerSpeedBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeStartEndText.setVisibility(View.VISIBLE); + mController.mPlayerTimeStartBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeSkipBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeStepBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeResetBtn.setVisibility(View.VISIBLE); } } 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 3fdb9100..1c673e37 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 @@ -149,11 +149,7 @@ public class PlayFragment extends BaseLazyFragment { ProgressManager progressManager = new ProgressManager() { @Override public void saveProgress(String url, long progress) { - if (videoDuration != -1) { - if (videoDuration <= 6000) { - return; - } - } + if (videoDuration ==0) return; CacheManager.save(MD5.string2MD5(url), progress); } @@ -238,13 +234,20 @@ public class PlayFragment extends BaseLazyFragment { void initVideoDurationSomeThing() { videoDuration = mVideoView.getMediaPlayer().getDuration(); - if (videoDuration <= 6000) { + if (videoDuration == 0) { mController.mPlayerSpeedBtn.setVisibility(View.GONE); mController.mPlayerTimeStartEndText.setVisibility(View.GONE); mController.mPlayerTimeStartBtn.setVisibility(View.GONE); mController.mPlayerTimeSkipBtn.setVisibility(View.GONE); mController.mPlayerTimeStepBtn.setVisibility(View.GONE); mController.mPlayerTimeResetBtn.setVisibility(View.GONE); + }else { + mController.mPlayerSpeedBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeStartEndText.setVisibility(View.VISIBLE); + mController.mPlayerTimeStartBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeSkipBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeStepBtn.setVisibility(View.VISIBLE); + mController.mPlayerTimeResetBtn.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java index 04c06234..ee4273ee 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java @@ -106,28 +106,37 @@ public class DefaultConfig { return start > -1 ? fileName.substring(0, start) : fileName; } - private static final String[] videoSuffix = {"m3u8","mp4","flv","avi","mkv","rm","wmv","mpg"}; +// private static final String[] videoSuffix = {"m3u8","mp4","flv","avi","mkv","rm","wmv","mpg"}; +// public static boolean isVideoFormat(String url) { +// if (url.contains("=http")) { +// return false; +// } +// Uri uri = Uri.parse(url); +// String path = uri.getPath(); +// if (path == null || path.isEmpty()) { +// return false; +// } +// if (path.endsWith(".js") || path.endsWith(".css") || path.endsWith(".html")) { +// return false; +// } +// String query = uri.getQuery(); +// if (query != null && query.startsWith("http")) { +// return false; +// } +// for(String oneSubfix : videoSuffix) { +// if (path.contains("." + oneSubfix)) { +// return true; +// } +// } +// return false; +// } + + private static final Pattern snifferMatch = Pattern.compile("http((?!http).){20,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){20,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){20,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?dycdn-tos\\.pstatp[^\\?]*|http.*?/play.{0,3}\\?[^url]{2,8}=.*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); public static boolean isVideoFormat(String url) { - if (url.contains("=http")) { - return false; - } - Uri uri = Uri.parse(url); - String path = uri.getPath(); - if (path == null || path.isEmpty()) { - return false; - } - if (path.endsWith(".js") || path.endsWith(".css") || path.endsWith(".html")) { + if (url.contains("=http") || url.contains(".html")) { return false; } - String query = uri.getQuery(); - if (query != null && query.startsWith("http")) { - return false; - } - for(String oneSubfix : videoSuffix) { - if (path.endsWith("." + oneSubfix)) { - return true; - } - } + if (snifferMatch.matcher(url).find()) return true; return false; } diff --git a/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java b/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java index bd51dbf3..99f7f693 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java +++ b/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java @@ -27,10 +27,7 @@ public class VideoParseRuler { public static boolean checkIsVideoForParse(String webUrl, String url) { try { boolean isVideo = DefaultConfig.isVideoFormat(url); - if (webUrl == null || webUrl.isEmpty()) { - return isVideo; - } - if (!isVideo) { + if (!HOSTS_RULE.isEmpty() && !isVideo && webUrl != null) { Uri uri = Uri.parse(webUrl); isVideo = checkVideoForOneHostRules(uri.getHost(), url); if (!isVideo) {