Merge remote-tracking branch 'origin/dev' into dev

pull/307/head
okjack 2 years ago
commit efe401d03c
  1. 1
      README.md
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 1
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  4. 42
      app/src/main/java/com/fongmi/android/tv/bean/Part.java
  5. 27
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  6. 6
      catvod/src/main/java/com/github/catvod/utils/Shell.java

@ -10,7 +10,6 @@ https://github.com/CatVodTVOfficial/CatVodTVJarLoader
|------------|------|------|------------------|
| searchable | 1 | 是否搜索 | 0:關閉;1:啟用 |
| changeable | 1 | 是否換源 | 0:關閉;1:啟用 |
| recordable | 1 | 是否紀錄 | 0:關閉;1:啟用 |
| playerType | none | 播放器 | 0:系統;1:IJK;2:EXO |
| timeout | 15 | 播放超時 | 單位:秒 |
| header | none | 請求標頭 | 格式:json |

@ -1153,7 +1153,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void getPart(String source) {
OkHttp.newCall("http://api.pullword.com/get.php?source=" + URLEncoder.encode(source.trim()) + "&param1=0&param2=0&json=1").enqueue(new Callback() {
OkHttp.newCall("https://api.yesapi.cn/?service=App.Scws.GetWords&app_key=CEE4B8A091578B252AC4C92FB4E893C3&text=" + URLEncoder.encode(source.trim())).enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
List<String> items = Part.get(response.body().string());

@ -249,6 +249,7 @@ public class VodConfig {
}
public void setRecent(String jar) {
if (jarLoader == null) jarLoader = new JarLoader();
jarLoader.parseJar(Util.md5(jar), jar);
jarLoader.setRecent(jar);
}

@ -4,34 +4,48 @@ import android.text.TextUtils;
import com.fongmi.android.tv.App;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Part {
@SerializedName("t")
private String t;
@SerializedName("data")
private Data data;
private static List<Part> arrayFrom(String str) {
try {
Type listType = new TypeToken<List<Part>>() {}.getType();
return App.gson().fromJson(str, listType);
} catch (Exception e) {
return new ArrayList<>();
}
public static Part objectFrom(String str) {
return App.gson().fromJson(str, Part.class);
}
public static List<String> get(String str) {
List<String> items = new ArrayList<>();
if (TextUtils.isEmpty(str)) return items;
for (Part item : arrayFrom(str)) items.add(item.getT());
for (Data.Word word : objectFrom(str).getData().getWords()) items.add(word.getWord());
return items;
}
public String getT() {
return TextUtils.isEmpty(t) ? "" : t;
public Data getData() {
return data == null ? new Data() : data;
}
public static class Data {
@SerializedName("words")
private List<Word> words;
public List<Word> getWords() {
return words == null ? Collections.emptyList() : words;
}
public static class Word {
@SerializedName("word")
private String word;
public String getWord() {
return TextUtils.isEmpty(word) ? "" : word;
}
}
}
}

@ -69,6 +69,7 @@ public class CustomWebView extends WebView {
getSettings().setBuiltInZoomControls(true);
getSettings().setDisplayZoomControls(false);
getSettings().setLoadWithOverviewMode(true);
getSettings().setUserAgentString(Setting.getUa());
getSettings().setMediaPlaybackRequiresUserGesture(false);
getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
@ -76,29 +77,29 @@ public class CustomWebView extends WebView {
setWebViewClient(webViewClient());
}
private void setUserAgent(Map<String, String> headers) {
if (headers.isEmpty()) {
getSettings().setUserAgentString(Setting.getUa());
} else for (String key : headers.keySet()) {
if (key.equalsIgnoreCase(HttpHeaders.USER_AGENT)) {
getSettings().setUserAgentString(headers.get(key));
break;
}
}
}
public CustomWebView start(String key, String from, Map<String, String> headers, String url, String click, ParseCallback callback, boolean detect) {
App.post(timer, Constant.TIMEOUT_PARSE_WEB);
this.callback = callback;
setUserAgent(headers);
loadUrl(url, headers);
this.detect = detect;
this.click = click;
this.from = from;
this.key = key;
start(url, headers);
return this;
}
private void start(String url, Map<String, String> headers) {
checkHeader(url, headers);
loadUrl(url, headers);
}
private void checkHeader(String url, Map<String, String> headers) {
for (String key : headers.keySet()) {
if (key.equalsIgnoreCase(HttpHeaders.COOKIE)) CookieManager.getInstance().setCookie(url, headers.get(key));
if (key.equalsIgnoreCase(HttpHeaders.USER_AGENT)) getSettings().setUserAgentString(headers.get(key));
}
}
private WebViewClient webViewClient() {
return new WebViewClient() {
@Override

@ -1,11 +1,15 @@
package com.github.catvod.utils;
import com.orhanobut.logger.Logger;
public class Shell {
private static final String TAG = Shell.class.getSimpleName();
public static void exec(String command) {
try {
int code = Runtime.getRuntime().exec(command).waitFor();
if (code != 0) throw new RuntimeException("Shell command failed with exit code " + code);
if (code != 0) Logger.t(TAG).d("Shell command '%s' failed with exit code '%s'", command, code);
} catch (Exception e) {
e.printStackTrace();
}

Loading…
Cancel
Save