From ce69b84d00a5c25e43d515815905d124fceb4695 Mon Sep 17 00:00:00 2001 From: okjack Date: Wed, 21 Feb 2024 11:41:08 +0800 Subject: [PATCH] mobile suggest --- .../fongmi/android/tv/bean/SuggestTwo.java | 104 ++++++++++++++++++ .../tv/ui/activity/CollectActivity.java | 12 +- .../android/tv/ui/adapter/WordAdapter.java | 9 ++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/fongmi/android/tv/bean/SuggestTwo.java diff --git a/app/src/main/java/com/fongmi/android/tv/bean/SuggestTwo.java b/app/src/main/java/com/fongmi/android/tv/bean/SuggestTwo.java new file mode 100644 index 000000000..df994aa94 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/bean/SuggestTwo.java @@ -0,0 +1,104 @@ +package com.fongmi.android.tv.bean; + +import com.fongmi.android.tv.App; +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class SuggestTwo { + + @SerializedName("data") + private SuggestTwo.Data data; + + private static SuggestTwo objectFrom(String str) { + return App.gson().fromJson(str, SuggestTwo.class); + } + + public static List get(String str) { + try { + List items = new ArrayList<>(); + for (SuggestTwo.GroupData item : objectFrom(str).getGroupData()) items.add(item.getAction().getActionArgs().getSearchKeyword().getStrVal()); + return items; + } catch (Exception e) { + return Collections.emptyList(); + } + } + + private List getGroupData() { + return data.getSearchData().getVecGroupData().get(0).getGroupData(); + } + + static class Data { + + @SerializedName("search_data") + private SearchData searchData; + + private SearchData getSearchData() { + return searchData; + } + } + + static class SearchData { + + @SerializedName("vecGroupData") + private List vecGroupData; + + private List getVecGroupData() { + return vecGroupData; + } + } + + static class VecGroupData { + + @SerializedName("group_data") + private List groupData; + + private List getGroupData() { + return groupData; + } + } + + static class GroupData { + + @SerializedName("action") + private Action action; + + private Action getAction() { + return action; + } + } + + static class Action { + + @SerializedName("actionArgs") + private ActionArgs actionArgs; + + private ActionArgs getActionArgs() { + return actionArgs; + } + } + + static class ActionArgs { + + @SerializedName("search_keyword") + private SearchKeyword searchKeyword; + + private SearchKeyword getSearchKeyword() { + return searchKeyword; + } + } + + static class SearchKeyword { + + @SerializedName("strVal") + private String strVal; + + private String getStrVal() { + return strVal; + } + } + + +} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index 8e531349c..fdbc80e47 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -24,6 +24,7 @@ import com.fongmi.android.tv.bean.Hot; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.bean.Suggest; +import com.fongmi.android.tv.bean.SuggestTwo; import com.fongmi.android.tv.bean.Vod; import com.fongmi.android.tv.databinding.ActivityCollectBinding; import com.fongmi.android.tv.impl.Callback; @@ -210,12 +211,21 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call private void getSuggest(String text) { mBinding.word.setText(R.string.search_suggest); + mWordAdapter.clear(); + OkHttp.newCall("https://tv.aiseet.atianqi.com/i-tvbin/qtv_video/search/get_search_smart_box?format=json&page_num=0&page_size=20&key=" + text).enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { + if (mBinding.keyword.getText().toString().trim().isEmpty()) return; + List items = SuggestTwo.get(response.body().string()); + App.post(() -> mWordAdapter.appendAll(items)); + } + }); OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + text).enqueue(new Callback() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { if (mBinding.keyword.getText().toString().trim().isEmpty()) return; List items = Suggest.get(response.body().string()); - App.post(() -> mWordAdapter.addAll(items)); + App.post(() -> mWordAdapter.appendAll(items), 200); } }); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java index 08e9e4404..e6d71fb8a 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java @@ -32,6 +32,15 @@ public class WordAdapter extends RecyclerView.Adapter { notifyDataSetChanged(); } + public void clear() { + mItems.clear(); + } + + public void appendAll(List items) { + mItems.addAll(items.subList(0, Math.min(items.size(), 20))); + notifyDataSetChanged(); + } + @Override public int getItemCount() { return mItems.size();