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 ee2935274..ad1b647ac 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 @@ -37,6 +37,7 @@ import com.fongmi.android.tv.ui.custom.CustomScroller; import com.fongmi.android.tv.ui.custom.CustomSelector; import com.fongmi.android.tv.ui.presenter.FilterPresenter; import com.fongmi.android.tv.ui.presenter.VodPresenter; +import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.ResUtil; import com.github.catvod.utils.Prefers; import com.google.common.collect.Lists; @@ -138,6 +139,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback private void setViewModel() { mViewModel = new ViewModelProvider(this).get(SiteViewModel.class); + mViewModel.action.observe(getViewLifecycleOwner(), result -> Notify.show(result.getMsg())); mViewModel.result.observe(getViewLifecycleOwner(), result -> { boolean first = mScroller.first(); int size = result.getList().size(); @@ -278,7 +280,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback @Override public void onItemClick(Vod item) { if (item.isAction()) { - getSite().spider().action(item.getAction()); + mViewModel.action(getKey(), item.getAction()); } else if (item.isFolder()) { mPages.add(Page.get(item, mBinding.recycler.getSelectedPosition())); mBinding.recycler.setMoveTop(false); diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index b4698d074..fea875e6e 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -45,6 +45,7 @@ public class SiteViewModel extends ViewModel { public MutableLiveData result; public MutableLiveData player; public MutableLiveData search; + public MutableLiveData action; private ExecutorService executor; public SiteViewModel() { @@ -52,6 +53,7 @@ public class SiteViewModel extends ViewModel { this.result = new MutableLiveData<>(); this.player = new MutableLiveData<>(); this.search = new MutableLiveData<>(); + this.action = new MutableLiveData<>(); } public void setEpisode(Episode value) { @@ -189,6 +191,14 @@ public class SiteViewModel extends ViewModel { }); } + public void action(String key, String action) { + execute(this.action, () -> { + Site site = VodConfig.get().getSite(key); + if (site.getType() != 3) return Result.empty(); + return Result.fromJson(site.recent().spider().action(action)); + }); + } + public void searchContent(Site site, String keyword, boolean quick) throws Throwable { if (site.getType() == 3) { String searchContent = site.spider().searchContent(Trans.t2s(keyword), quick); 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 401e4c133..656bc1480 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 @@ -27,6 +27,7 @@ import com.fongmi.android.tv.ui.activity.VideoActivity; import com.fongmi.android.tv.ui.adapter.VodAdapter; import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.custom.CustomScroller; +import com.fongmi.android.tv.utils.Notify; import java.io.Serializable; import java.util.ArrayList; @@ -131,6 +132,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac private void setViewModel() { mViewModel = new ViewModelProvider(this).get(SiteViewModel.class); mViewModel.result.observe(getViewLifecycleOwner(), this::setAdapter); + mViewModel.action.observe(getViewLifecycleOwner(), result -> Notify.show(result.getMsg())); } private void getHome() { @@ -222,7 +224,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac @Override public void onItemClick(Vod item) { if (item.isAction()) { - getSite().spider().action(item.getAction()); + mViewModel.action(getKey(), item.getAction()); } else if (item.isFolder()) { mPages.add(Page.get(item, findPosition())); getVideo(item.getVodId(), "1"); 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 421160d49..a5ff9cd6d 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -64,7 +64,8 @@ public abstract class Spider { return null; } - public void action(String action) { + public String action(String action) throws Exception { + return null; } 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 4c156e901..5b887ebe7 100644 --- a/chaquo/src/main/java/com/fongmi/chaquo/Spider.java +++ b/chaquo/src/main/java/com/fongmi/chaquo/Spider.java @@ -104,8 +104,8 @@ public class Spider extends com.github.catvod.crawler.Spider { } @Override - public void action(String action) { - app.callAttr("action", obj, action); + public String action(String action) { + return app.callAttr("action", obj, action).toString(); } @Override diff --git a/chaquo/src/main/python/app.py b/chaquo/src/main/python/app.py index 55cc0e09f..ca1ab201e 100644 --- a/chaquo/src/main/python/app.py +++ b/chaquo/src/main/python/app.py @@ -97,7 +97,9 @@ def localProxy(ru, param): def action(ru, action): - ru.action(action) + result = ru.action(action) + formatJo = json.dumps(result, ensure_ascii=False) + return formatJo def destroy(ru): diff --git a/chaquo/src/main/python/runner.py b/chaquo/src/main/python/runner.py index 130d3f67a..16cd739da 100644 --- a/chaquo/src/main/python/runner.py +++ b/chaquo/src/main/python/runner.py @@ -45,4 +45,4 @@ class Runner(): return self.spider.action(action) def destroy(self): - return self.spider.destroy() + self.spider.destroy() diff --git a/chaquo/src/main/python/trigger.py b/chaquo/src/main/python/trigger.py index 544ec145a..419bfb5cf 100644 --- a/chaquo/src/main/python/trigger.py +++ b/chaquo/src/main/python/trigger.py @@ -45,4 +45,4 @@ class Trigger(): @staticmethod def destroy(sp_obj): - return sp_obj.destroy() + 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 2f441ff23..22db32db4 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java @@ -125,12 +125,8 @@ public class Spider extends com.github.catvod.crawler.Spider { } @Override - public void action(String action) { - try { - call("action", action); - } catch (Throwable e) { - e.printStackTrace(); - } + public String action(String action) throws Exception { + return (String) call("action", action); } @Override