diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 161992e2f..a903ce15b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -100,10 +100,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void checkAction(Intent intent) { - boolean push = ApiConfig.hasPush() && intent.getAction() != null; - if (push && intent.getAction().equals(Intent.ACTION_SEND)) { + if (Intent.ACTION_SEND.equals(intent.getAction())) { DetailActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT))); - } else if (push && intent.getAction().equals(Intent.ACTION_VIEW) && intent.getData() != null) { + } else if (Intent.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null) { DetailActivity.push(this, intent.getData()); } } @@ -329,7 +328,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen CollectActivity.start(this, event.getText(), true); break; case PUSH: - if (ApiConfig.hasPush()) DetailActivity.push(this, event.getText(), true); + DetailActivity.push(this, event.getText(), true); break; } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java index 052b6c905..70a3820fe 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java @@ -38,6 +38,6 @@ public class PushActivity extends BaseActivity { private void onClip(View view) { CharSequence text = ((ClipboardManager) getSystemService(CLIPBOARD_SERVICE)).getText(); - if (text != null && ApiConfig.hasPush()) DetailActivity.push(this, text.toString(), false); + if (text != null) DetailActivity.push(this, text.toString(), false); } } diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index 076917692..746db4696 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -73,10 +73,6 @@ public class ApiConfig { return get().getSite(key).getName(); } - public static boolean hasPush() { - return get().getSite("push_agent") != null; - } - public static boolean hasParse() { return get().getParses().size() > 0; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index 2f5d41cda..567404aae 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -17,6 +17,7 @@ import org.simpleframework.xml.Path; import org.simpleframework.xml.Root; import org.simpleframework.xml.core.Persister; +import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -108,6 +109,12 @@ public class Result { return result; } + public static Result vod(Vod item) { + Result result = new Result(); + result.setList(Arrays.asList(item)); + return result; + } + public List getTypes() { return types == null ? Collections.emptyList() : types; } 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 9d7d62066..b80b0edc5 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 @@ -92,10 +92,18 @@ public class Vod { return TextUtils.isEmpty(vodId) ? "" : vodId.trim(); } + public void setVodId(String vodId) { + this.vodId = vodId; + } + public String getVodName() { return TextUtils.isEmpty(vodName) ? "" : vodName.trim(); } + public void setVodName(String vodName) { + this.vodName = vodName; + } + public String getTypeName() { return TextUtils.isEmpty(typeName) ? "" : typeName.trim(); } @@ -104,6 +112,10 @@ public class Vod { return TextUtils.isEmpty(vodPic) ? "" : vodPic.trim(); } + public void setVodPic(String vodPic) { + this.vodPic = vodPic; + } + public String getVodRemarks() { return TextUtils.isEmpty(vodRemarks) ? "" : vodRemarks.trim(); } @@ -128,14 +140,26 @@ public class Vod { return TextUtils.isEmpty(vodContent) ? "" : vodContent.trim().replace("\n", "
"); } + public void setVodContent(String vodContent) { + this.vodContent = vodContent; + } + public String getVodPlayFrom() { return TextUtils.isEmpty(vodPlayFrom) ? "" : vodPlayFrom; } + public void setVodPlayFrom(String vodPlayFrom) { + this.vodPlayFrom = vodPlayFrom; + } + public String getVodPlayUrl() { return TextUtils.isEmpty(vodPlayUrl) ? "" : vodPlayUrl; } + public void setVodPlayUrl(String vodPlayUrl) { + this.vodPlayUrl = vodPlayUrl; + } + public String getVodTag() { return TextUtils.isEmpty(vodTag) ? "" : vodTag; } @@ -144,6 +168,10 @@ public class Vod { return vodFlags = vodFlags == null ? new ArrayList<>() : vodFlags; } + public void setVodFlags(List vodFlags) { + this.vodFlags = vodFlags; + } + public Site getSite() { return site; } 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 150c167d2..28e9b663d 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 @@ -6,13 +6,17 @@ import android.util.ArrayMap; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import androidx.media3.common.util.Log; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.BuildConfig; import com.fongmi.android.tv.Constant; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.bean.Vod; +import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Sniffer; import com.fongmi.android.tv.utils.Trans; import com.fongmi.android.tv.utils.Utils; @@ -20,6 +24,7 @@ import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.net.OkHttp; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -49,8 +54,8 @@ public class SiteViewModel extends ViewModel { } public void homeContent() { - Site site = ApiConfig.get().getHome(); execute(result, () -> { + Site site = ApiConfig.get().getHome(); if (site.getType() == 3) { Spider spider = ApiConfig.get().getCSP(site); String homeContent = spider.homeContent(true); @@ -78,8 +83,8 @@ public class SiteViewModel extends ViewModel { } public void categoryContent(String key, String tid, String page, boolean filter, HashMap extend) { - Site site = ApiConfig.get().getSite(key); execute(result, () -> { + Site site = ApiConfig.get().getSite(key); if (site.getType() == 3) { Spider spider = ApiConfig.get().getCSP(site); String categoryContent = spider.categoryContent(tid, page, filter, extend); @@ -101,8 +106,8 @@ public class SiteViewModel extends ViewModel { } public void detailContent(String key, String id) { - Site site = ApiConfig.get().getSite(key); execute(result, () -> { + Site site = ApiConfig.get().getSite(key); if (site.getType() == 3) { Spider spider = ApiConfig.get().getCSP(site); String detailContent = spider.detailContent(Arrays.asList(id)); @@ -111,6 +116,16 @@ public class SiteViewModel extends ViewModel { Result result = Result.fromJson(detailContent); if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags(); return result; + } else if (key.equals("push_agent")) { + Vod vod = new Vod(); + vod.setVodId(id); + vod.setVodName(id); + vod.setVodContent(id); + Vod.Flag flag = new Vod.Flag(ResUtil.getString(R.string.push)); + flag.getEpisodes().add(new Vod.Flag.Episode(ResUtil.getString(R.string.play), id)); + vod.setVodPic("https://pic.rmb.bdstatic.com/bjh/1d0b02d0f57f0a42201f92caba5107ed.jpeg"); + vod.setVodFlags(List.of(flag)); + return Result.vod(vod); } else { ArrayMap params = new ArrayMap<>(); params.put("ac", site.getType() == 0 ? "videolist" : "detail"); @@ -125,8 +140,8 @@ public class SiteViewModel extends ViewModel { } public void playerContent(String key, String flag, String id) { - Site site = ApiConfig.get().getSite(key); execute(player, () -> { + Site site = ApiConfig.get().getSite(key); if (site.getType() == 3) { Spider spider = ApiConfig.get().getCSP(site); String playerContent = spider.playerContent(flag, id, ApiConfig.get().getFlags()); @@ -145,6 +160,12 @@ public class SiteViewModel extends ViewModel { Result result = Result.fromJson(body); if (result.getFlag().isEmpty()) result.setFlag(flag); return result; + } else if (key.equals("push_agent")) { + Result result = new Result(); + result.setFlag(flag); + result.setParse(0); + result.setUrl(id); + return result; } else { String url = id; String type = Uri.parse(url).getQueryParameter("type"); diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 7af375ee0..7a734f337 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -57,6 +57,9 @@ 超级解析 解析来自:%s + + 推送 + 点播 直播 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b94d453d0..40c4dd883 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -57,6 +57,9 @@ 超級解析 解析來自:%s + + 推送 + 點播 直播 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 63b5a083d..9fe0205c7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -57,6 +57,9 @@ Super Parse from: %s + + Push + Vod Live diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 8b924078c..262c04ae4 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -59,10 +59,9 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt } private void checkAction(Intent intent) { - boolean push = ApiConfig.hasPush() && intent.getAction() != null; - if (push && intent.getAction().equals(Intent.ACTION_SEND)) { + if (Intent.ACTION_SEND.equals(intent.getAction())) { DetailActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT))); - } else if (push && intent.getAction().equals(Intent.ACTION_VIEW) && intent.getData() != null) { + } else if (Intent.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null) { DetailActivity.push(this, intent.getData()); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 9c0cb0cde..e776f5616 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -163,8 +163,8 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal private void setFabVisible(int position) { if (mAdapter.getItemCount() == 0) { - mBinding.link.setVisibility(View.GONE); mBinding.filter.setVisibility(View.GONE); + mBinding.link.setVisibility(View.VISIBLE); } else if (mAdapter.get(position).getFilters().size() > 0) { mBinding.link.setVisibility(View.GONE); mBinding.filter.show(); @@ -179,8 +179,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } private void onLink(View view) { - if (ApiConfig.hasPush()) LinkDialog.create(this).show(); - else mBinding.link.hide(); + LinkDialog.create(this).show(); } private void onLogo(View view) { diff --git a/app/src/mobile/res/layout/fragment_vod.xml b/app/src/mobile/res/layout/fragment_vod.xml index f0d0cd938..0cb228b0d 100644 --- a/app/src/mobile/res/layout/fragment_vod.xml +++ b/app/src/mobile/res/layout/fragment_vod.xml @@ -132,7 +132,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" - android:visibility="gone" app:backgroundTint="@color/blue_500" app:layout_anchor="@id/pager" app:layout_anchorGravity="end|bottom"