Add internal push agent

pull/137/head
FongMi 2 years ago
parent 4cb2021fb3
commit 9345dc85b8
  1. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java
  3. 4
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  4. 7
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  5. 28
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  6. 29
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  7. 3
      app/src/main/res/values-zh-rCN/strings.xml
  8. 3
      app/src/main/res/values-zh-rTW/strings.xml
  9. 3
      app/src/main/res/values/strings.xml
  10. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java
  11. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  12. 1
      app/src/mobile/res/layout/fragment_vod.xml

@ -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;
}
}

@ -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);
}
}

@ -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;
}

@ -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<Class> getTypes() {
return types == null ? Collections.emptyList() : types;
}

@ -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", "<br>");
}
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<Flag> vodFlags) {
this.vodFlags = vodFlags;
}
public Site getSite() {
return site;
}

@ -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<String, String> 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<String, String> 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");

@ -57,6 +57,9 @@
<string name="parse_god">超级解析</string>
<string name="parse_from">解析来自:<xliff:g name="name">%s</xliff:g></string>
<!-- Push -->
<string name="push">推送</string>
<!-- Setting -->
<string name="setting_vod">点播</string>
<string name="setting_live">直播</string>

@ -57,6 +57,9 @@
<string name="parse_god">超級解析</string>
<string name="parse_from">解析來自:<xliff:g name="name">%s</xliff:g></string>
<!-- Push -->
<string name="push">推送</string>
<!-- Setting -->
<string name="setting_vod">點播</string>
<string name="setting_live">直播</string>

@ -57,6 +57,9 @@
<string name="parse_god">Super</string>
<string name="parse_from">Parse from: <xliff:g name="name">%s</xliff:g></string>
<!-- Push -->
<string name="push">Push</string>
<!-- Setting -->
<string name="setting_vod">Vod</string>
<string name="setting_live">Live</string>

@ -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());
}
}

@ -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) {

@ -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"

Loading…
Cancel
Save