Optimize push system

pull/171/head
FongMi 3 years ago
parent 2d8ef9ccd4
commit d7b921aad8
  1. 2
      app/src/leanback/AndroidManifest.xml
  2. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  3. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java
  4. 13
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  5. 2
      app/src/main/java/com/fongmi/android/tv/App.java
  6. 2
      app/src/main/java/com/fongmi/android/tv/player/extractor/Push.java
  7. 8
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java
  8. 2
      app/src/mobile/AndroidManifest.xml
  9. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java
  10. 9
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  11. 8
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/LinkDialog.java

@ -64,6 +64,8 @@
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="smb" />
<data android:scheme="rtmp" />
<data android:scheme="rtsp" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:mimeType="video/*" />

@ -2,7 +2,6 @@ package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
@ -119,12 +118,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
private void checkAction(Intent intent) {
if (Intent.ACTION_SEND.equals(intent.getAction())) {
VideoActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT)));
VideoActivity.push(this, intent.getStringExtra(Intent.EXTRA_TEXT));
} else if (Intent.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null) {
if ("text/plain".equals(intent.getType()) || UrlUtil.path(intent.getData()).endsWith(".m3u")) {
loadLive("file:/" + FileChooser.getPathFromUri(this, intent.getData()));
} else {
VideoActivity.push(this, intent.getData());
VideoActivity.push(this, intent.getData().toString());
}
}
}
@ -394,7 +393,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
CollectActivity.start(this, event.getText(), true);
break;
case PUSH:
VideoActivity.push(this, event.getText(), true);
VideoActivity.push(this, event.getText());
break;
}
}

@ -13,6 +13,7 @@ import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.utils.QRCode;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Util;
public class PushActivity extends BaseActivity {
@ -37,7 +38,7 @@ public class PushActivity extends BaseActivity {
}
private void onClip(View view) {
CharSequence text = Util.getClipText();
if (!TextUtils.isEmpty(text)) VideoActivity.push(this, text.toString(), false);
String text = Sniffer.getUrl(Util.getClipText().toString());
if (!TextUtils.isEmpty(text)) VideoActivity.start(this, text, false);
}
}

@ -150,9 +150,10 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private View mFocus1;
private View mFocus2;
public static void push(FragmentActivity activity, Uri uri) {
if (Sniffer.isPush(uri)) push(activity, uri.toString(), true);
else file(activity, FileChooser.getPathFromUri(activity, uri));
public static void push(FragmentActivity activity, String text) {
String url = Sniffer.getUrl(text);
if (url.length() > 0) start(activity, url);
else file(activity, FileChooser.getPathFromUri(activity, Uri.parse(text)));
}
public static void file(FragmentActivity activity, String path) {
@ -169,7 +170,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
start(activity, key, id, name, pic, null, false, false, true);
}
public static void push(Activity activity, String url, boolean clear) {
public static void start(Activity activity, String url) {
start(activity, url, true);
}
public static void start(Activity activity, String url, boolean clear) {
start(activity, "push_agent", url, url, clear);
}

@ -11,10 +11,12 @@ import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.os.HandlerCompat;
import androidx.media3.common.util.Log;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.ui.activity.CrashActivity;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.Init;
import com.github.catvod.bean.Doh;
import com.github.catvod.net.OkHttp;

@ -18,7 +18,7 @@ public class Push implements Source.Extractor {
@Override
public String fetch(String url) throws Exception {
VideoActivity.push((FragmentActivity) App.activity(), Uri.parse(url.substring(7)));
VideoActivity.start(App.activity(), url.substring(7));
SystemClock.sleep(500);
return "";
}

@ -13,6 +13,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Sniffer {
@ -21,11 +22,12 @@ public class Sniffer {
public static final Pattern CLICKER = Pattern.compile("\\[a=cr:(\\{.*?\\})\\/](.*?)\\[\\/a]");
public static final String RULE = "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*";
public static final List<String> PUSH = Arrays.asList("smb", "http", "https", "thunder", "magnet", "ed2k", "mitv", "jianpian");
public static final List<String> THUNDER = Arrays.asList("thunder", "magnet", "ed2k");
public static boolean isPush(Uri uri) {
return PUSH.contains(uri.getScheme());
public static String getUrl(String text) {
Matcher m = Pattern.compile("(http|https|rtmp|rtsp|smb|thunder|magnet|ed2k|mitv|tvbox-xg|jianpian):[^\\s]+", Pattern.MULTILINE).matcher(text);
if (m.find()) return m.group(0);
return "";
}
public static boolean isThunder(String url) {

@ -48,6 +48,8 @@
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="smb" />
<data android:scheme="rtmp" />
<data android:scheme="rtsp" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:mimeType="video/*" />

@ -3,7 +3,6 @@ package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.MenuItem;
@ -72,12 +71,12 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt
private void checkAction(Intent intent) {
if (Intent.ACTION_SEND.equals(intent.getAction())) {
VideoActivity.push(this, Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT)));
VideoActivity.push(this, intent.getStringExtra(Intent.EXTRA_TEXT));
} else if (Intent.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null) {
if ("text/plain".equals(intent.getType()) || UrlUtil.path(intent.getData()).endsWith(".m3u")) {
loadLive("file:/" + FileChooser.getPathFromUri(this, intent.getData()));
} else {
VideoActivity.push(this, intent.getData());
VideoActivity.push(this, intent.getData().toString());
}
}
}

@ -155,9 +155,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private Clock mClock;
private PiP mPiP;
public static void push(FragmentActivity activity, Uri uri) {
if (Sniffer.isPush(uri)) push(activity, uri.toString());
else file(activity, FileChooser.getPathFromUri(activity, uri));
public static void push(FragmentActivity activity, String text) {
String url = Sniffer.getUrl(text);
if (url.length() > 0) start(activity, url);
else file(activity, FileChooser.getPathFromUri(activity, Uri.parse(text)));
}
public static void file(FragmentActivity activity, String path) {
@ -174,7 +175,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
start(activity, key, id, name, pic, null, true);
}
public static void push(Activity activity, String url) {
public static void start(Activity activity, String url) {
start(activity, "push_agent", url, url, null);
}

@ -47,12 +47,12 @@ public class LinkDialog {
}
private void initView() {
CharSequence text = Util.getClipText();
binding.input.setEndIconOnClickListener(this::onChoose);
if (!TextUtils.isEmpty(text) && (Sniffer.isPush(Uri.parse(text.toString())))) binding.text.setText(text);
String text = Sniffer.getUrl(Util.getClipText().toString());
if (!TextUtils.isEmpty(text)) binding.text.setText(text);
}
private void initEvent() {
binding.input.setEndIconOnClickListener(this::onChoose);
binding.text.setOnEditorActionListener((textView, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
return true;
@ -66,7 +66,7 @@ public class LinkDialog {
private void onPositive(DialogInterface dialog, int which) {
String text = binding.text.getText().toString().trim();
if (!text.isEmpty()) VideoActivity.push(App.activity(), text);
if (!text.isEmpty()) VideoActivity.start(App.activity(), text);
dialog.dismiss();
}

Loading…
Cancel
Save