diff --git a/.androidide/editor/openedFiles.json b/.androidide/editor/openedFiles.json index ae4c51b..f793d0d 100644 --- a/.androidide/editor/openedFiles.json +++ b/.androidide/editor/openedFiles.json @@ -4,62 +4,17 @@ "file": "/storage/emulated/0/MoonLeaf/Projects/FuckMaoNemo/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java", "selection": { "end": { - "column": 101, - "index": 9409, - "line": 222 + "column": 34, + "index": 10304, + "line": 244 }, "start": { - "column": 101, - "index": 9409, - "line": 222 - } - } - }, - { - "file": "/storage/emulated/0/MoonLeaf/Projects/FuckMaoNemo/app/build.gradle", - "selection": { - "end": { - "column": 22, - "index": 272, - "line": 14 - }, - "start": { - "column": 22, - "index": 272, - "line": 14 - } - } - }, - { - "file": "/storage/emulated/0/MoonLeaf/Projects/FuckMaoNemo/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/ConfigActivity.java", - "selection": { - "end": { - "column": 8, - "index": 2261, - "line": 57 - }, - "start": { - "column": 8, - "index": 2261, - "line": 57 - } - } - }, - { - "file": "/storage/emulated/0/MoonLeaf/Projects/FuckMaoNemo/app/src/main/res/xml/config.xml", - "selection": { - "end": { - "column": 48, - "index": 2950, - "line": 86 - }, - "start": { - "column": 25, - "index": 2927, - "line": 86 + "column": 34, + "index": 10304, + "line": 244 } } } ], - "selectedFile": "/storage/emulated/0/MoonLeaf/Projects/FuckMaoNemo/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/ConfigActivity.java" + "selectedFile": "/storage/emulated/0/MoonLeaf/Projects/FuckMaoNemo/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java" } \ No newline at end of file diff --git a/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java b/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java index a54b07f..4adfd63 100644 --- a/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java +++ b/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java @@ -232,20 +232,37 @@ public class Hook implements IXposedHookLoadPackage { filters.add(nwf); } + + XposedBridge.hookMethod( + getMethod( + XposedHelpers.findClass("com.codemao.nemo.bean.LatestWorks", classLoader), + "getLimit", + null //List.class + ), + new XC_MethodReplacement() { + @Override + protected Object replaceHookedMethod(MethodHookParam mp) throws Throwable { + return 100; + } + } + ); + XposedBridge.hookMethod( getMethod( XposedHelpers.findClass("com.codemao.nemo.bean.LatestWorks", classLoader), "getItems", - null + null //List.class ), new XC_MethodReplacement() { @Override protected Object replaceHookedMethod(MethodHookParam mp) throws Throwable { - List ls = (List) XposedHelpers.getObjectField(mp.thisObject, "items"); + List ls = (List) XposedHelpers.getObjectField(mp.thisObject, "items"); // mp.args[0]; // ArrayList al = new ArrayList(); + int passed = 0; + for (Object o : ls) { String workName = (String) XposedHelpers.getObjectField(o, "work_name"); String userId = "" + XposedHelpers.getLongField(o, "user_id"); @@ -255,6 +272,7 @@ public class Hook implements IXposedHookLoadPackage { for (NewestWorksFilter filter : filters) { if (filter.matches(userId, workName)) { disadd = true; + passed++; break; } } @@ -268,7 +286,18 @@ public class Hook implements IXposedHookLoadPackage { al.add(o); } + // XposedHelpers.setObjectField(mp.thisObject, "items", al); + + int offset = XposedHelpers.getIntField(mp.thisObject, "offset"); + XposedHelpers.setIntField(mp.thisObject, "offset", offset + passed); + + int total = XposedHelpers.getIntField(mp.thisObject, "total"); + // XposedHelpers.setIntField(mp.thisObject, "total", total - passed); + + XposedBridge.log("[FuckMaoNemo] 过滤完毕 原数据: offset=" + offset + " total=" + total); + return al; + // return null; } } );