Support multiple drm key

pull/210/head
FongMi 2 years ago
parent 4ce87c5a6d
commit b80bd365f5
  1. 6
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  2. 23
      app/src/main/java/com/fongmi/android/tv/bean/ClearKey.java
  3. 2
      gradle.properties

@ -12,7 +12,6 @@ import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.utils.UrlUtil; import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Path; import com.github.catvod.utils.Path;
import com.github.catvod.utils.Util;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -247,10 +246,7 @@ public class LiveParser {
try { try {
ClearKey.objectFrom(key); ClearKey.objectFrom(key);
} catch (Exception e) { } catch (Exception e) {
String[] split = key.replace("\"", "").replace("{", "").replace("}", "").split(":"); key = ClearKey.get(key.replace("\"", "").replace("{", "").replace("}", "")).toString();
String kid = Util.base64(Util.hex2byte(split[0].trim())).replace("=", "");
String k = Util.base64(Util.hex2byte(split[1].trim())).replace("=", "");
key = ClearKey.get(kid, k).toString();
} }
} }

@ -3,9 +3,10 @@ package com.fongmi.android.tv.bean;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.fongmi.android.tv.App; import com.fongmi.android.tv.App;
import com.github.catvod.utils.Util;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.util.Arrays; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ClearKey { public class ClearKey {
@ -21,11 +22,21 @@ public class ClearKey {
return item; return item;
} }
public static ClearKey get(String kid, String k) { public static ClearKey get(String line) {
ClearKey key = new ClearKey(); ClearKey item = new ClearKey();
key.keys = Arrays.asList(new Keys(kid, k)); item.keys = new ArrayList<>();
key.type = "temporary"; item.type = "temporary";
return key; item.addKeys(line);
return item;
}
private void addKeys(String line) {
for (String s : line.split(",")) {
String[] split = s.split(":");
String kid = Util.base64(Util.hex2byte(split[0].trim())).replace("=", "");
String k = Util.base64(Util.hex2byte(split[1].trim())).replace("=", "");
keys.add(new Keys(kid, k));
}
} }
public static class Keys { public static class Keys {

@ -8,7 +8,7 @@
# The setting is particularly useful for tweaking memory settings. # The setting is particularly useful for tweaking memory settings.
org.gradle.daemon=true org.gradle.daemon=true
org.gradle.parallel=true org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192m -Dfile.encoding=UTF-8 org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode. # When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit # This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

Loading…
Cancel
Save