Merge branch 'FongMi:dev' into dev

pull/186/head
okcaptain 2 years ago committed by GitHub
commit 8d358a00a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      app/build.gradle
  2. 1
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  3. 9
      catvod/src/main/java/com/github/catvod/utils/Json.java
  4. 47
      pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java

@ -11,7 +11,7 @@ android {
minSdk 21
targetSdk 28
versionCode 212
versionName "2.1.2"
versionName "20231218"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]

@ -89,7 +89,6 @@ public class Nano extends NanoHTTPD {
if (boundary != null) session.getHeaders().put("content-type", "multipart/form-data; charset=utf-8; " + boundary);
}
try {
session.parseBody(session.getParms());
session.parseBody(files);
} catch (Exception ignored) {
}

@ -1,5 +1,7 @@
package com.github.catvod.utils;
import androidx.collection.ArrayMap;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@ -66,6 +68,13 @@ public class Json {
return map;
}
public static ArrayMap<String, String> toArrayMap(JsonElement element) {
ArrayMap<String, String> map = new ArrayMap<>();
JsonObject object = safeObject(element);
for (String key : object.keySet()) map.put(key, safeString(object, key));
return map;
}
public static JsonObject toObject(Map<String, String> map) {
JsonObject object = new JsonObject();
for (String key : map.keySet()) object.addProperty(key, map.get(key));

@ -1,21 +1,19 @@
package com.undcover.freedom.pyramid;
import android.content.Context;
import android.text.TextUtils;
import androidx.collection.ArrayMap;
import com.chaquo.python.PyObject;
import com.github.catvod.Proxy;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.ByteArrayInputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@ -93,43 +91,20 @@ public class Spider extends com.github.catvod.crawler.Spider {
List<PyObject> list = app.callAttr("localProxy", obj, gson.toJson(params)).asList();
int code = list.get(0).toInt();
String type = list.get(1).toString();
String action = list.get(2).toString();
String content = list.get(3).toString();
JSONObject object = new JSONObject(action);
String url = object.optString("url");
Headers header = getHeader(object.optString("header"));
ArrayMap<String, String> param = getParam(object.optString("param"));
if (object.optString("type").equals("stream")) {
return new Object[]{code, type, OkHttp.newCall(url, header, param).execute().body().byteStream()};
JsonObject action = JsonParser.parseString(list.get(2).toString()).getAsJsonObject();
Headers headers = Headers.of(Json.toMap(action.get("header")));
String url = action.get("url").getAsString();
if (action.get("type").getAsString().equals("stream")) {
ArrayMap<String, String> param = Json.toArrayMap(action.get("param"));
return new Object[]{code, type, OkHttp.newCall(url, headers, param).execute().body().byteStream()};
} else {
if (content.isEmpty()) content = OkHttp.newCall(url, header).execute().body().string();
if (content.isEmpty()) content = OkHttp.newCall(url, headers).execute().body().string();
return new Object[]{code, type, new ByteArrayInputStream(replaceProxy(content).getBytes())};
}
}
private String replaceProxy(String content) {
return content.replace("http://127.0.0.1:UndCover/proxy?", Proxy.getUrl(true) + "?do=py&");
}
private Headers getHeader(String header) throws JSONException {
Headers.Builder builder = new Headers.Builder();
if (TextUtils.isEmpty(header)) return builder.build();
JSONObject object = new JSONObject(header);
for (Iterator<String> iterator = object.keys(); iterator.hasNext(); ) {
String key = iterator.next();
builder.add(key, object.optString(key));
}
return builder.build();
}
private ArrayMap<String, String> getParam(String param) throws JSONException {
ArrayMap<String, String> params = new ArrayMap<>();
if (TextUtils.isEmpty(param)) return params;
JSONObject object = new JSONObject(param);
for (Iterator<String> iterator = object.keys(); iterator.hasNext(); ) {
String key = iterator.next();
params.put(key, object.optString(key));
}
return params;
return content.replace("http://127.0.0.1:UndCover/proxy", Proxy.getUrl(true));
}
}

Loading…
Cancel
Save