diff --git a/app/src/main/java/com/fongmi/android/tv/server/Nano.java b/app/src/main/java/com/fongmi/android/tv/server/Nano.java index 20c26decd..9297080b1 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/Nano.java +++ b/app/src/main/java/com/fongmi/android/tv/server/Nano.java @@ -7,7 +7,7 @@ import com.fongmi.android.tv.server.process.Cache; import com.fongmi.android.tv.server.process.Local; import com.fongmi.android.tv.server.process.Media; import com.fongmi.android.tv.server.process.Parse; -import com.fongmi.android.tv.server.process.Process; +import com.fongmi.android.tv.server.impl.Process; import com.fongmi.android.tv.server.process.Proxy; import com.github.catvod.utils.Asset; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Process.java b/app/src/main/java/com/fongmi/android/tv/server/impl/Process.java similarity index 86% rename from app/src/main/java/com/fongmi/android/tv/server/process/Process.java rename to app/src/main/java/com/fongmi/android/tv/server/impl/Process.java index e90159fdd..5dbd57d93 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Process.java +++ b/app/src/main/java/com/fongmi/android/tv/server/impl/Process.java @@ -1,4 +1,4 @@ -package com.fongmi.android.tv.server.process; +package com.fongmi.android.tv.server.impl; import org.nanohttpd.protocols.http.IHTTPSession; import org.nanohttpd.protocols.http.response.Response; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Action.java b/app/src/main/java/com/fongmi/android/tv/server/process/Action.java index 90d4b71cb..2e5b25bee 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Action.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Action.java @@ -14,6 +14,7 @@ import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.ServerEvent; import com.fongmi.android.tv.impl.Callback; import com.fongmi.android.tv.server.Nano; +import com.fongmi.android.tv.server.impl.Process; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Notify; import com.github.catvod.net.OkHttp; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java b/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java index da3589deb..0c228b6b7 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Cache.java @@ -3,6 +3,7 @@ package com.fongmi.android.tv.server.process; import android.text.TextUtils; import com.fongmi.android.tv.server.Nano; +import com.fongmi.android.tv.server.impl.Process; import com.github.catvod.utils.Prefers; import org.nanohttpd.protocols.http.IHTTPSession; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Local.java b/app/src/main/java/com/fongmi/android/tv/server/process/Local.java index 96ebbb25b..c7cb5260a 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Local.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Local.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.server.process; import com.fongmi.android.tv.server.Nano; +import com.fongmi.android.tv.server.impl.Process; import com.fongmi.android.tv.utils.FileUtil; import com.github.catvod.utils.Path; import com.google.common.net.HttpHeaders; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Media.java b/app/src/main/java/com/fongmi/android/tv/server/process/Media.java index 0d16318b8..07449ec5d 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Media.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Media.java @@ -7,6 +7,7 @@ import android.text.TextUtils; import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.server.Nano; import com.fongmi.android.tv.server.Server; +import com.fongmi.android.tv.server.impl.Process; import com.google.gson.JsonObject; import org.nanohttpd.protocols.http.IHTTPSession; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java b/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java index 0f756a33f..50517fad1 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Parse.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.server.process; import com.fongmi.android.tv.server.Nano; +import com.fongmi.android.tv.server.impl.Process; import com.github.catvod.utils.Asset; import org.nanohttpd.protocols.http.IHTTPSession; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/Proxy.java b/app/src/main/java/com/fongmi/android/tv/server/process/Proxy.java index 909528b47..48c0d5e87 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/Proxy.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/Proxy.java @@ -2,6 +2,7 @@ package com.fongmi.android.tv.server.process; import com.fongmi.android.tv.api.loader.BaseLoader; import com.fongmi.android.tv.server.Nano; +import com.fongmi.android.tv.server.impl.Process; import org.nanohttpd.protocols.http.IHTTPSession; import org.nanohttpd.protocols.http.response.Response; diff --git a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java index 43361da9f..c405b1803 100644 --- a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java +++ b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java @@ -92,14 +92,13 @@ public class Spider extends com.github.catvod.crawler.Spider { @Override public Object[] proxyLocal(Map params) { List list = app.callAttr("localProxy", obj, gson.toJson(params)).asList(); - Map headers = list.size() > 3 ? list.get(3).asMap() : null; boolean base64 = list.size() > 4 && list.get(4).toInt() == 1; - PyObject r2 = list.get(2); + boolean header = list.size() > 3 && list.get(3) != null; Object[] result = new Object[4]; result[0] = list.get(0).toInt(); result[1] = list.get(1).toString(); - result[2] = r2 == null ? null : getStream(r2, base64); - result[3] = headers; + result[2] = getStream(list.get(2), base64); + result[3] = header ? getHeader(list.get(3)) : null; return result; } @@ -116,16 +115,24 @@ public class Spider extends com.github.catvod.crawler.Spider { } } - private ByteArrayInputStream getStream(PyObject o, boolean base64) { - if (o.type().toString().contains("bytes")) { - return new ByteArrayInputStream(o.toJava(byte[].class)); - } else { - String content = o.toString(); - if (base64 && content.contains("base64,")) content = content.split("base64,")[1]; - return new ByteArrayInputStream(base64 ? Util.decode(content) : content.getBytes()); + private Map getHeader(PyObject obj) { + try { + Map header = new HashMap<>(); + for (Map.Entry entry : obj.asMap().entrySet()) header.put(entry.getKey().toString(), entry.getValue().toString()); + return header; + } catch (Exception e) { + return null; } } + private ByteArrayInputStream getStream(PyObject o, boolean base64) { + if (o == null) return null; + if (o.type().toString().contains("bytes")) return new ByteArrayInputStream(o.toJava(byte[].class)); + String content = o.toString(); + if (base64 && content.contains("base64,")) content = content.split("base64,")[1]; + return new ByteArrayInputStream(base64 ? Util.decode(content) : content.getBytes()); + } + private void download(String name) { String path = Path.py(name).getAbsolutePath(); String url = UriUtil.resolve(api, name);