From 9abe4af647ef0b2803ccf9bd93dba0536b593b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E4=BF=8A?= <215613905@qq.com> Date: Sat, 15 Oct 2022 17:00:39 +0800 Subject: [PATCH] =?UTF-8?q?1=E5=85=BC=E5=AE=B9=E9=81=93=E9=95=BF=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0js(drpy);2=E9=A6=96=E9=A1=B5UI=E8=B0=83=E6=95=B4;3?= =?UTF-8?q?=E7=83=AD=E6=90=9C=E8=AF=8D=E8=81=94=E6=83=B3=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E4=B8=BA=E7=88=B1=E5=A5=87=E8=89=BA;4=20js=E5=BC=95=E6=93=8E-r?= =?UTF-8?q?eq=E6=96=B9=E6=B3=95=E8=AF=86=E5=88=ABContent-Type;5=E5=97=85?= =?UTF-8?q?=E6=8E=A2=E5=B8=A6=E4=B8=8Acookie=E6=92=AD=E6=94=BE;6=E9=83=A8?= =?UTF-8?q?=E5=88=86pk=E9=85=8D=E7=BD=AE=E4=BB=BB=E7=84=B6=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=A4=B1=E8=B4=A5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/tvbox/osc/api/ApiConfig.java | 2 +- .../tvbox/osc/ui/activity/PlayActivity.java | 6 +- .../tvbox/osc/ui/activity/SearchActivity.java | 69 +-- .../tvbox/osc/ui/fragment/PlayFragment.java | 13 +- .../tvbox/osc/ui/fragment/UserFragment.java | 4 +- .../github/tvbox/osc/util/js/JSEngine.java | 69 ++- .../github/tvbox/osc/util/js/SpiderJS.java | 1 + app/src/main/res/layout/fragment_user.xml | 532 +++++++++--------- 8 files changed, 384 insertions(+), 312 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java index 4cd9b78f..39f5ed0e 100644 --- a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java @@ -88,7 +88,7 @@ public class ApiConfig { String content = json; try { if (AES.isJson(content)) return content; - if(!content.startsWith("2423")){ + if(content.contains("\\*\\*")){ String[] data = json.split("\\*\\*"); content = new String(Base64.decode(data[1], Base64.DEFAULT)); } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index e9535f4a..164cbecf 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -1489,7 +1489,8 @@ public class PlayActivity extends BaseActivity { for (String k : hds.keySet()) { if (k.equalsIgnoreCase("user-agent") || k.equalsIgnoreCase("referer") - || k.equalsIgnoreCase("origin")) { + || k.equalsIgnoreCase("origin") + || k.equalsIgnoreCase("cookie")) { webHeaders.put(k, hds.get(k)); } } @@ -1624,7 +1625,8 @@ public class PlayActivity extends BaseActivity { for (String k : hds.keySet()) { if (k.equalsIgnoreCase("user-agent") || k.equalsIgnoreCase("referer") - || k.equalsIgnoreCase("origin")) { + || k.equalsIgnoreCase("origin") + || k.equalsIgnoreCase("cookie")) { webHeaders.put(k, hds.get(k)); } } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java index 4afd3d26..6898bd21 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java @@ -275,23 +275,49 @@ public class SearchActivity extends BaseActivity { * 拼音联想 */ private void loadRec(String key) { - OkGo.get("https://s.video.qq.com/smartbox") - .params("plat", 2) - .params("ver", 0) - .params("num", 20) - .params("otype", "json") - .params("query", key) +// OkGo.get("https://s.video.qq.com/smartbox") +// .params("plat", 2) +// .params("ver", 0) +// .params("num", 20) +// .params("otype", "json") +// .params("query", key) +// .execute(new AbsCallback() { +// @Override +// public void onSuccess(Response response) { +// try { +// ArrayList hots = new ArrayList<>(); +// String result = response.body(); +// JsonObject json = JsonParser.parseString(result.substring(result.indexOf("{"), result.lastIndexOf("}") + 1)).getAsJsonObject(); +// JsonArray itemList = json.get("item").getAsJsonArray(); +// for (JsonElement ele : itemList) { +// JsonObject obj = (JsonObject) ele; +// hots.add(obj.get("word").getAsString().trim().replaceAll("<|>|《|》|-", "").split(" ")[0]); +// } +// wordAdapter.setNewData(hots); +// } catch (Throwable th) { +// th.printStackTrace(); +// } +// } +// +// @Override +// public String convertResponse(okhttp3.Response response) throws Throwable { +// return response.body().string(); +// } +// }); + OkGo.get("https://suggest.video.iqiyi.com/") + .params("if", "mobile") + .params("key", key) .execute(new AbsCallback() { @Override public void onSuccess(Response response) { try { ArrayList hots = new ArrayList<>(); String result = response.body(); - JsonObject json = JsonParser.parseString(result.substring(result.indexOf("{"), result.lastIndexOf("}") + 1)).getAsJsonObject(); - JsonArray itemList = json.get("item").getAsJsonArray(); + JsonObject json = JsonParser.parseString(result).getAsJsonObject(); + JsonArray itemList = json.get("data").getAsJsonArray(); for (JsonElement ele : itemList) { JsonObject obj = (JsonObject) ele; - hots.add(obj.get("word").getAsString().trim().replaceAll("<|>|《|》|-", "").split(" ")[0]); + hots.add(obj.get("name").getAsString().trim().replaceAll("<|>|《|》|-", "")); } wordAdapter.setNewData(hots); } catch (Throwable th) { @@ -304,31 +330,6 @@ public class SearchActivity extends BaseActivity { return response.body().string(); } }); -// OkGo.get("https://suggest.video.iqiyi.com/") -// .params("if", "mobile") -// .params("key", key) -// .execute(new AbsCallback() { -// @Override -// public void onSuccess(Response response) { -// try { -// ArrayList hots = new ArrayList<>(); -// String result = response.body(); -// JsonObject json = JsonParser.parseString(result).getAsJsonObject(); -// JsonArray itemList = json.get("data").getAsJsonArray(); -// for (JsonElement ele : itemList) { -// JsonObject obj = (JsonObject) ele; -// hots.add(obj.get("name").getAsString().trim()); -// } -// } catch (Throwable th) { -// th.printStackTrace(); -// } -// } -// -// @Override -// public String convertResponse(okhttp3.Response response) throws Throwable { -// return response.body().string(); -// } -// }); } private void initData() { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index 597786ac..4e4b0b8b 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -1507,7 +1507,8 @@ public class PlayFragment extends BaseLazyFragment { for (String k : hds.keySet()) { if (k.equalsIgnoreCase("user-agent") || k.equalsIgnoreCase("referer") - || k.equalsIgnoreCase("origin")) { + || k.equalsIgnoreCase("origin") + || k.equalsIgnoreCase("cookie")) { webHeaders.put(k, hds.get(k)); } } @@ -1609,13 +1610,6 @@ public class PlayFragment extends BaseLazyFragment { @Override public void onLoadFinished(XWalkView view, String url) { super.onLoadFinished(view, url); - String click=sourceBean.getClickSelector(); - LOG.i("onLoadFinished url:" + url); - if(!click.isEmpty() && url.contains(click.split(";")[0])){ - String js="$(\""+ click.split(";")[1]+"\").click();"; - LOG.i(js); - mXwalkWebView.loadUrl("javascript:"+js); - } } @Override @@ -1650,7 +1644,8 @@ public class PlayFragment extends BaseLazyFragment { for (String k : hds.keySet()) { if (k.equalsIgnoreCase("user-agent") || k.equalsIgnoreCase("referer") - || k.equalsIgnoreCase("origin")) { + || k.equalsIgnoreCase("origin") + || k.equalsIgnoreCase("cookie")) { webHeaders.put(k, hds.get(k)); } } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java index 65ca7b29..944cb6eb 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java @@ -35,6 +35,7 @@ import com.lzy.okgo.callback.AbsCallback; import com.lzy.okgo.model.Response; import com.orhanobut.hawk.Hawk; import com.owen.tvrecyclerview.widget.TvRecyclerView; +import com.owen.tvrecyclerview.widget.V7GridLayoutManager; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -119,7 +120,8 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen tvPush.setOnFocusChangeListener(focusChangeListener); tvCollect.setOnFocusChangeListener(focusChangeListener); TvRecyclerView tvHotList = findViewById(R.id.tvHotList); - homeHotVodAdapter = new HomeHotVodAdapter(); + tvHotList.setHasFixedSize(true); + tvHotList.setLayoutManager(new V7GridLayoutManager(this.mContext, 6)); homeHotVodAdapter = new HomeHotVodAdapter(); homeHotVodAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { diff --git a/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java b/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java index 8f45dedd..3b42799d 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java +++ b/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java @@ -17,8 +17,14 @@ import com.github.tvbox.quickjs.QuickJSContext; import com.lzy.okgo.OkGo; import org.json.JSONObject; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; import java.util.Iterator; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -220,8 +226,8 @@ public class JSEngine { } if (body == null) { String dataBody = opt.optString("body", "").trim(); - if (!dataBody.isEmpty() && headers.get("content-type") != null) { - body = RequestBody.create(MediaType.parse(headers.get("content-type")), opt.optString("body", "")); + if (!dataBody.isEmpty() && headers.get("Content-Type") != null) { + body = RequestBody.create(MediaType.parse(headers.get("Content-Type")), opt.optString("body", "")); } } if (body == null) { @@ -252,7 +258,11 @@ public class JSEngine { } else if (returnBuffer == 2) { jsObject.setProperty("content", Base64.encodeToString(response.body().bytes(), Base64.DEFAULT)); } else { - jsObject.setProperty("content", response.body().string()); + String res=response.body().string(); + if(headers.get("Content-Type")!=null && headers.get("Content-Type").contains("=")){ + res=new String(res.getBytes(),headers.get("Content-Type").split("=")[1].trim()); + } + jsObject.setProperty("content", res); } return jsObject; } catch (Throwable throwable) { @@ -261,6 +271,59 @@ public class JSEngine { return ""; } }); + jsContext.getGlobalObject().setProperty("joinUrl", new JSCallFunction() { + @Override + public String call(Object... args) { + URL url; + String q=""; + try { + String parent = args[0].toString(); + String child = args[1].toString(); + // TODO + if(parent.isEmpty()){ + return child; + } + url = new URL(new URL(parent),child); + q= url.toExternalForm(); + } catch (Throwable throwable) { + throwable.printStackTrace(); + } + return q; + } + }); + jsContext.getGlobalObject().setProperty("pdfh", new JSCallFunction() { + @Override + public Element call(Object... args) { + try { + // TODO + String html=args[0].toString(); + Document doc=Jsoup.parse(html); + return doc.selectFirst(args[1].toString().trim()); + } catch (Throwable throwable) { + throwable.printStackTrace(); + } + return null; + } + }); + jsContext.getGlobalObject().setProperty("pdfa", new JSCallFunction() { + @Override + public ArrayList call(Object... args) { + try { + // TODO + String html=args[0].toString(); + Document doc=Jsoup.parse(html); + Elements list=doc.select(args[1].toString().trim()); + ArrayList arraylist=new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + arraylist.add(list.get(i).html()); + } + return arraylist; + } catch (Throwable throwable) { + throwable.printStackTrace(); + } + return null; + } + }); } } diff --git a/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java b/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java index f2a3c9bb..69498c66 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java +++ b/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java @@ -50,6 +50,7 @@ public class SpiderJS extends Spider { } catch (Exception e) { e.printStackTrace(); } + jsContent = jsContent.replace("export default {", "__JS_SPIDER__ ={"); jsContent = jsContent.replace("__JS_SPIDER__", "globalThis." + moduleKey); ctx.evaluateModule(jsContent, js); jsObject = (JSObject) ctx.getProperty(globalThis, moduleKey); diff --git a/app/src/main/res/layout/fragment_user.xml b/app/src/main/res/layout/fragment_user.xml index f38f4f05..5306f81c 100644 --- a/app/src/main/res/layout/fragment_user.xml +++ b/app/src/main/res/layout/fragment_user.xml @@ -1,275 +1,283 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:paddingLeft="@dimen/vs_40" + android:paddingRight="@dimen/vs_40"> + - - - - - - - - + android:layout_height="wrap_content"> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - \ No newline at end of file + android:layout_below="@+id/tvUserHome" + android:paddingLeft="@dimen/vs_0" + android:paddingTop="@dimen/vs_30" + android:paddingRight="@dimen/vs_0" + android:paddingBottom="@dimen/vs_20" + app:tv_horizontalSpacingWithMargins="@dimen/vs_10" + app:tv_selectedItemIsCentered="true" + app:tv_verticalSpacingWithMargins="@dimen/vs_10" /> + + + + + \ No newline at end of file