Support jar md5 check

pull/102/head
FongMi 4 years ago
parent 3ed351b2d3
commit 18201d7089
  1. 18
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  2. 7
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  3. 29
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java

@ -139,14 +139,18 @@ public class ApiConfig {
}
private void parseJar(String spider) throws Exception {
if (spider.contains(";md5")) spider = spider.split(";md5")[0];
if (spider.startsWith("http")) {
FileUtil.write(FileUtil.getJar(), OKHttp.newCall(spider).execute().body().bytes());
String[] texts = spider.split(";md5;");
String md5 = texts.length > 1 ? texts[1].trim() : "";
String url = texts[0];
if (md5.length() > 0 && FileUtil.isSame(md5)) {
loader.load(FileUtil.getJar());
} else if (spider.startsWith("file")) {
loader.load(FileUtil.getLocal(spider));
} else if (!spider.isEmpty()) {
parseJar(convert(spider));
} else if (url.startsWith("http")) {
FileUtil.write(FileUtil.getJar(), OKHttp.newCall(url).execute().body().bytes());
loader.load(FileUtil.getJar());
} else if (url.startsWith("file")) {
loader.load(FileUtil.getLocal(url));
} else if (!url.isEmpty()) {
parseJar(convert(url));
}
}

@ -10,11 +10,14 @@ import android.util.Log;
import androidx.core.content.FileProvider;
import com.fongmi.android.tv.App;
import com.google.common.hash.Hashing;
import com.google.common.io.Files;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URLConnection;
@ -76,6 +79,10 @@ public class FileUtil {
}
}
public static boolean isSame(String md5) throws IOException {
return Files.hash(FileUtil.getJar(), Hashing.md5()).toString().equalsIgnoreCase(md5);
}
public static void clearDir(File dir) {
if (dir == null) return;
if (dir.isDirectory()) for (File file : dir.listFiles()) clearDir(file);

@ -1,19 +1,13 @@
package com.fongmi.android.tv.utils;
import android.app.Activity;
import android.app.PictureInPictureParams;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.IBinder;
import android.provider.Settings;
import android.util.Base64;
import android.util.Rational;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import com.fongmi.android.tv.App;
import com.google.android.exoplayer2.util.Util;
import java.util.regex.Pattern;
@ -21,34 +15,11 @@ public class Utils {
private static final Pattern SNIFFER = 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).)*?cdn-tos[^\\?]*|http((?!http).)*?\\/obj\\/tos[^\\?]*|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 hasPIP() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && App.get().getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE);
}
public static void enterPIP(Activity activity) {
try {
if (!hasPIP() || activity.isInPictureInPictureMode()) return;
PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder();
builder.setAspectRatio(new Rational(16, 9)).build();
activity.enterPictureInPictureMode(builder.build());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void hideSystemUI(Activity activity) {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
activity.getWindow().getDecorView().setSystemUiVisibility(flags);
}
public static String getUUID() {
return Settings.Secure.getString(App.get().getContentResolver(), Settings.Secure.ANDROID_ID);
}
public static String getUserAgent() {
return Util.getUserAgent(App.get(), App.get().getPackageName().concat(".").concat(getUUID()));
}
public static boolean isVideoFormat(String url) {
if (url.contains("=http") || url.contains("=https") || url.contains("=https%3a%2f") || url.contains("=http%3a%2f")) return false;
if (SNIFFER.matcher(url).find()) return !url.contains("cdn-tos") || (!url.contains(".js") && !url.contains(".css"));

Loading…
Cancel
Save