Optimize push magnet

pull/137/head
FongMi 2 years ago
parent 3a2b0096b0
commit db198f11a6
  1. 11
      app/src/leanback/AndroidManifest.xml
  2. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  3. 5
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java
  4. 11
      app/src/mobile/AndroidManifest.xml
  5. 8
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  6. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/LinkDialog.java

@ -65,6 +65,17 @@
<data android:mimeType="video/*" />
<data android:mimeType="audio/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="ftp" />
<data android:scheme="ed2k" />
<data android:scheme="magnet" />
<data android:scheme="thunder" />
</intent-filter>
</activity>
<activity

@ -115,11 +115,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private Runnable mR3;
public static void push(FragmentActivity activity, Uri uri) {
if ("smb".equals(uri.getScheme()) || "http".equals(uri.getScheme()) || "https".equals(uri.getScheme())) {
push(activity, uri.toString(), true);
} else {
file(activity, FileChooser.getPathFromUri(activity, uri));
}
if (Sniffer.isPush(uri)) push(activity, uri.toString(), true);
else file(activity, FileChooser.getPathFromUri(activity, uri));
}
public static void file(FragmentActivity activity, String path) {

@ -21,6 +21,7 @@ public class Sniffer {
public static final Pattern RULE = Pattern.compile("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> VIDEO = Arrays.asList("avi", "flv", "mkv", "mov", "mp4", "mpeg", "mpe", "mpg", "wmv");
public static final List<String> AUDIO = Arrays.asList("aac", "ape", "flac", "mp3", "m4a", "ogg");
public static final List<String> PUSH = Arrays.asList("http", "https", "smb", "ftp", "ed2k", "magnet", "thunder");
private static boolean matchOrContain(String url) {
for (String regex : getRegex(Uri.parse(url))) return Pattern.compile(regex).matcher(url).find() || url.contains(regex);
@ -36,6 +37,10 @@ public class Sniffer {
return VIDEO.contains(ext) || AUDIO.contains(ext);
}
public static boolean isPush(Uri uri) {
return PUSH.contains(uri.getScheme());
}
public static boolean isVideoFormat(String url) {
return isVideoFormat(url, new HashMap<>());
}

@ -50,6 +50,17 @@
<data android:mimeType="video/*" />
<data android:mimeType="audio/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="ftp" />
<data android:scheme="ed2k" />
<data android:scheme="magnet" />
<data android:scheme="thunder" />
</intent-filter>
</activity>
<activity

@ -72,6 +72,7 @@ import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PiP;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.utils.Util;
@ -127,11 +128,8 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
private PiP mPiP;
public static void push(FragmentActivity activity, Uri uri) {
if ("smb".equals(uri.getScheme()) || "http".equals(uri.getScheme()) || "https".equals(uri.getScheme())) {
push(activity, uri.toString());
} else {
file(activity, FileChooser.getPathFromUri(activity, uri));
}
if (Sniffer.isPush(uri)) push(activity, uri.toString());
else file(activity, FileChooser.getPathFromUri(activity, uri));
}
public static void file(FragmentActivity activity, String path) {

@ -1,8 +1,8 @@
package com.fongmi.android.tv.ui.custom.dialog;
import android.content.DialogInterface;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.EditorInfo;
@ -15,6 +15,7 @@ import com.fongmi.android.tv.R;
import com.fongmi.android.tv.databinding.DialogLinkBinding;
import com.fongmi.android.tv.ui.activity.DetailActivity;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Utils;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -48,7 +49,7 @@ public class LinkDialog {
private void initView() {
CharSequence text = Utils.getClipText();
binding.input.setEndIconOnClickListener(this::onChoose);
if (!TextUtils.isEmpty(text) && Patterns.WEB_URL.matcher(text).matches()) binding.text.setText(text);
if (!TextUtils.isEmpty(text) && (Sniffer.isPush(Uri.parse(text.toString())))) binding.text.setText(text);
}
private void initEvent() {

Loading…
Cancel
Save