From e8b6d5a2def33966ecdf95c84e55f1946b81595e Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 22 Aug 2024 16:45:25 +0800 Subject: [PATCH] Spider add action function --- .../fongmi/android/tv/ui/fragment/VodFragment.java | 4 +++- .../main/java/com/fongmi/android/tv/bean/Vod.java | 13 +++++++++++++ .../fongmi/android/tv/ui/fragment/TypeFragment.java | 4 +++- .../main/java/com/github/catvod/crawler/Spider.java | 3 +++ chaquo/src/main/java/com/fongmi/chaquo/Spider.java | 5 +++++ chaquo/src/main/python/app.py | 4 ++++ chaquo/src/main/python/base/spider.py | 3 +++ chaquo/src/main/python/runner.py | 3 +++ chaquo/src/main/python/trigger.py | 4 ++++ .../java/com/fongmi/quickjs/crawler/Spider.java | 9 +++++++++ 10 files changed, 50 insertions(+), 2 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 1d6ed168c..ee2935274 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -277,7 +277,9 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback @Override public void onItemClick(Vod item) { - if (item.isFolder()) { + if (item.isAction()) { + getSite().spider().action(item.getAction()); + } else if (item.isFolder()) { mPages.add(Page.get(item, mBinding.recycler.getSelectedPosition())); mBinding.recycler.setMoveTop(false); getVideo(item.getVodId(), "1"); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index e4ef35ed8..2efff1f84 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -73,6 +73,9 @@ public class Vod implements Parcelable { @SerializedName("vod_tag") private String vodTag; + @SerializedName("action") + private String action; + @SerializedName("cate") private Cate cate; @@ -167,6 +170,10 @@ public class Vod implements Parcelable { return TextUtils.isEmpty(vodTag) ? "" : vodTag; } + public String getAction() { + return TextUtils.isEmpty(action) ? "" : action; + } + public Cate getCate() { return cate; } @@ -231,6 +238,10 @@ public class Vod implements Parcelable { return "folder".equals(getVodTag()) || getCate() != null; } + public boolean isAction() { + return !getAction().isEmpty(); + } + public Style getStyle(Style style) { return getStyle() != null ? getStyle() : style != null ? style : Style.rect(); } @@ -299,6 +310,7 @@ public class Vod implements Parcelable { dest.writeString(this.vodPlayFrom); dest.writeString(this.vodPlayUrl); dest.writeString(this.vodTag); + dest.writeString(this.action); dest.writeInt(this.land); dest.writeInt(this.circle); dest.writeFloat(this.ratio); @@ -322,6 +334,7 @@ public class Vod implements Parcelable { this.vodPlayFrom = in.readString(); this.vodPlayUrl = in.readString(); this.vodTag = in.readString(); + this.action = in.readString(); this.land = in.readInt(); this.circle = in.readInt(); this.ratio = in.readFloat(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index b5dc130ae..401e4c133 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -221,7 +221,9 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac @Override public void onItemClick(Vod item) { - if (item.isFolder()) { + if (item.isAction()) { + getSite().spider().action(item.getAction()); + } else if (item.isFolder()) { mPages.add(Page.get(item, findPosition())); getVideo(item.getVodId(), "1"); } else { diff --git a/catvod/src/main/java/com/github/catvod/crawler/Spider.java b/catvod/src/main/java/com/github/catvod/crawler/Spider.java index 147b03624..421160d49 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -64,6 +64,9 @@ public abstract class Spider { return null; } + public void action(String action) { + } + public void destroy() { } diff --git a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java index 1504d1e4f..4c156e901 100644 --- a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java +++ b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java @@ -103,6 +103,11 @@ public class Spider extends com.github.catvod.crawler.Spider { return result; } + @Override + public void action(String action) { + app.callAttr("action", obj, action); + } + @Override public void destroy() { app.callAttr("destroy", obj); diff --git a/chaquo/src/main/python/app.py b/chaquo/src/main/python/app.py index 499dfcd49..55cc0e09f 100644 --- a/chaquo/src/main/python/app.py +++ b/chaquo/src/main/python/app.py @@ -96,6 +96,10 @@ def localProxy(ru, param): return result +def action(ru, action): + ru.action(action) + + def destroy(ru): ru.destroy() diff --git a/chaquo/src/main/python/base/spider.py b/chaquo/src/main/python/base/spider.py index b56eb8f06..d82865891 100644 --- a/chaquo/src/main/python/base/spider.py +++ b/chaquo/src/main/python/base/spider.py @@ -57,6 +57,9 @@ class Spider(metaclass=ABCMeta): def manualVideoCheck(self): pass + def action(self, action): + pass + def destroy(self): pass diff --git a/chaquo/src/main/python/runner.py b/chaquo/src/main/python/runner.py index 553822168..130d3f67a 100644 --- a/chaquo/src/main/python/runner.py +++ b/chaquo/src/main/python/runner.py @@ -41,5 +41,8 @@ class Runner(): def manualVideoCheck(self): return self.spider.manualVideoCheck() + def action(self, action): + return self.spider.action(action) + def destroy(self): return self.spider.destroy() diff --git a/chaquo/src/main/python/trigger.py b/chaquo/src/main/python/trigger.py index 87fbf8fe3..544ec145a 100644 --- a/chaquo/src/main/python/trigger.py +++ b/chaquo/src/main/python/trigger.py @@ -39,6 +39,10 @@ class Trigger(): def manualVideoCheck(sp_obj): return sp_obj.manualVideoCheck() + @staticmethod + def action(sp_obj, action): + return sp_obj.action(action) + @staticmethod def destroy(sp_obj): return sp_obj.destroy() diff --git a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java index a27840da4..2f441ff23 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java @@ -124,6 +124,15 @@ public class Spider extends com.github.catvod.crawler.Spider { else return submit(() -> proxy1(params)).get(); } + @Override + public void action(String action) { + try { + call("action", action); + } catch (Throwable e) { + e.printStackTrace(); + } + } + @Override public void destroy() { try {