Merge branch 'dev' into release

pull/211/head
FongMi 2 years ago
commit f6f427692e
  1. 3
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. BIN
      app/src/main/assets/favicon.ico
  4. 2
      app/src/main/assets/js/script.js
  5. 4
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  7. 5
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  8. 2
      app/src/main/java/com/fongmi/android/tv/server/process/Local.java
  9. 6
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  10. 7
      app/src/main/java/com/fongmi/android/tv/utils/UrlUtil.java
  11. 1
      app/src/main/res/xml/file_paths.xml
  12. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  13. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  14. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java
  15. 2
      catvod/src/main/java/com/github/catvod/net/OkhttpInterceptor.java

@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.v4.media.MediaMetadataCompat;
import android.view.KeyEvent;
import android.view.View;
@ -379,7 +378,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("headers", mPlayers.getHeaderArray());
intent.putExtra("title", mBinding.widget.name.getText());
intent.setDataAndType(Uri.parse(mPlayers.getUrl()), "video/*");
intent.setDataAndType(mPlayers.getUri(), "video/*");
startActivity(Util.getChooser(intent));
return true;
}

@ -880,7 +880,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
intent.putExtra("headers", mPlayers.getHeaderArray());
intent.putExtra("position", (int) mPlayers.getPosition());
intent.putExtra("title", mBinding.widget.title.getText());
intent.setDataAndType(Uri.parse(mPlayers.getUrl()), "video/*");
intent.setDataAndType(mPlayers.getUri(), "video/*");
startActivityForResult(Util.getChooser(intent), 1001);
return true;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -90,7 +90,7 @@ function hideFileInfo() {
function listFile(path) {
$('#loadingToast').show();
$.get('/file/' + path, function (res) {
$.get('/file' + path, function (res) {
let info = JSON.parse(res);
let parent = info.parent;
let canDel = info.parent != '.';

@ -36,7 +36,7 @@ public class LiveParser {
if (live.getGroups().size() > 0) return;
if (live.getType() == 0) text(live, getText(live.getUrl()));
if (live.getType() == 1) json(live, getText(live.getUrl()));
if (live.getType() == 2) proxy(live, getText(UrlUtil.convert(live.getUrl())));
if (live.getType() == 2) proxy(live, getText(live.getUrl()));
}
public static void text(Live live, String text) {
@ -114,7 +114,7 @@ public class LiveParser {
private static String getText(String url) {
if (url.startsWith("file")) return Path.read(url);
if (url.startsWith("http")) return OkHttp.string(url);
if (url.startsWith("assets")) return getText(UrlUtil.convert(url));
if (url.startsWith("assets") || url.startsWith("proxy")) return getText(UrlUtil.convert(url));
if (url.length() > 0 && url.length() % 4 == 0) return getText(new String(Base64.decode(url, Base64.DEFAULT)));
return "";
}

@ -215,15 +215,13 @@ public class VodConfig {
}
private String parseApi(String api) {
if (api.startsWith("http")) return api;
if (api.startsWith("file") || api.startsWith("assets")) return UrlUtil.convert(api);
return api;
}
private String parseExt(String ext) {
if (ext.startsWith("http")) return ext;
if (ext.startsWith("img+")) return Decoder.getExt(ext);
if (ext.startsWith("file") || ext.startsWith("assets")) return UrlUtil.convert(ext);
if (ext.startsWith("img+")) return Decoder.getExt(ext);
return ext;
}

@ -32,6 +32,7 @@ import com.fongmi.android.tv.event.ErrorEvent;
import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.impl.ParseCallback;
import com.fongmi.android.tv.impl.SessionCallback;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.UrlUtil;
@ -171,6 +172,10 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
return url;
}
public Uri getUri() {
return getUrl().startsWith("file://") || getUrl().startsWith("/") ? FileUtil.getShareUri(getUrl()) : Uri.parse(getUrl());
}
public void clean() {
this.headers = null;
this.url = null;

@ -42,7 +42,7 @@ public class Local implements Process {
private NanoHTTPD.Response getFile(Map<String, String> headers, String path) {
try {
File file = Path.root(path.substring(6));
File file = Path.root(path.substring(5));
if (file.isDirectory()) return getFolder(file);
if (file.isFile()) return getFile(headers, file, NanoHTTPD.getMimeTypeForFile(path));
throw new FileNotFoundException();

@ -60,7 +60,11 @@ public class FileUtil {
});
}
private static Uri getShareUri(File file) {
public static Uri getShareUri(String path) {
return getShareUri(new File(path.replace("file://", "")));
}
public static Uri getShareUri(File file) {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.N ? Uri.fromFile(file) : FileProvider.getUriForFile(App.get(), App.get().getPackageName() + ".provider", file);
}

@ -35,11 +35,10 @@ public class UrlUtil {
}
public static String convert(String url) {
String host = host(url);
String scheme = scheme(url);
if ("file".equals(scheme)) return Server.get().getAddress(url);
if ("local".equals(scheme)) return Server.get().getAddress(host);
if ("assets".equals(scheme)) return Server.get().getAddress(url.substring(9));
if ("local".equals(scheme)) return url.replace("local://", Server.get().getAddress(""));
if ("assets".equals(scheme)) return url.replace("assets://", Server.get().getAddress(""));
if ("file".equals(scheme)) return url.replace("file://", Server.get().getAddress("file/"));
if ("proxy".equals(scheme)) return url.replace("proxy://", Server.get().getAddress("proxy?"));
return url;
}

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<root-path name="root" path="." />
<cache-path name="cache_files" path="." />
<external-path name="external_files" path="." />
</paths>

@ -6,7 +6,6 @@ import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.media.MediaMetadataCompat;
@ -436,7 +435,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("headers", mPlayers.getHeaderArray());
intent.putExtra("title", mBinding.control.title.getText());
intent.setDataAndType(Uri.parse(mPlayers.getUrl()), "video/*");
intent.setDataAndType(mPlayers.getUri(), "video/*");
startActivity(Util.getChooser(intent));
setRedirect(true);
return true;

@ -891,7 +891,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
intent.putExtra("headers", mPlayers.getHeaderArray());
intent.putExtra("position", (int) mPlayers.getPosition());
intent.putExtra("title", mBinding.control.title.getText());
intent.setDataAndType(Uri.parse(mPlayers.getUrl()), "video/*");
intent.setDataAndType(mPlayers.getUri(), "video/*");
startActivityForResult(Util.getChooser(intent), 1001);
setRedirect(true);
return true;

@ -76,7 +76,7 @@ public class CastDialog extends BaseDialog implements DeviceAdapter.OnClickListe
public CastDialog history(History history) {
String id = history.getVodId();
String fd = history.getVodId();
if (fd.startsWith("/")) fd = Server.get().getAddress() + "/file://" + fd.replace(Path.rootPath(), "");
if (fd.startsWith("/")) fd = Server.get().getAddress() + "/file" + fd.replace(Path.rootPath(), "");
if (fd.startsWith("file")) fd = Server.get().getAddress() + "/" + fd.replace(Path.rootPath(), "");
if (fd.contains("127.0.0.1")) fd = fd.replace("127.0.0.1", Util.getIp());
body.add("history", history.toString().replace(id, fd));

@ -51,7 +51,7 @@ public class OkhttpInterceptor implements Interceptor {
Request request = chain.request();
String url = request.url().toString();
Request.Builder builder = request.newBuilder();
if (url.contains("/file://")) builder.url(url.replace("+", "%2B"));
if (url.contains("/file/")) builder.url(url.replace("+", "%2B"));
if (url.contains("gitcode.net")) builder.addHeader(HttpHeaders.USER_AGENT, Util.CHROME);
return builder.build();
}

Loading…
Cancel
Save