Merge pull request #520 from okcaptain/dev

Dev
pull/523/head
okcaptain 2 years ago committed by GitHub
commit a0d23d5c6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/api/Decoder.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  4. 11
      app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java
  5. 2
      app/src/main/java/com/fongmi/android/tv/bean/CastVideo.java
  6. 2
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  7. 77
      app/src/main/java/com/fongmi/android/tv/utils/IDMUtil.java
  8. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  9. 8
      app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  10. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java
  11. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java

@ -100,7 +100,7 @@ public abstract class BaseActivity extends AppCompatActivity {
try {
if (!customWall()) return;
File file = FileUtil.getWall(Setting.getWall());
if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(WallConfig.drawable(file));
if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(Drawable.createFromPath(file.getAbsolutePath()));
else getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName()));
} catch (Exception e) {
getWindow().setBackgroundDrawableResource(R.drawable.wallpaper_1);
@ -118,9 +118,7 @@ public abstract class BaseActivity extends AppCompatActivity {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshEvent(RefreshEvent event) {
if (event.getType() != RefreshEvent.Type.WALL) return;
WallConfig.get().setDrawable(null);
refreshWall();
if (event.getType() == RefreshEvent.Type.WALL) refreshWall();
}
@Override

@ -2,6 +2,7 @@ package com.fongmi.android.tv.api;
import android.util.Base64;
import androidx.media3.common.util.UriUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Asset;
@ -34,8 +35,8 @@ public class Decoder {
private static String fix(String url, String data) {
if (url.startsWith("file") || url.startsWith("clan") || url.startsWith("assets")) url = UrlUtil.convert(url);
if (data.contains("../")) data = data.replace("../", url.substring(0, url.substring(0, url.split("\\?")[0].lastIndexOf("/")).lastIndexOf("/") + 1));
if (data.contains("./")) data = data.replace("./", url.substring(0, url.split("\\?")[0].lastIndexOf("/") + 1));
if (data.contains("../")) data = data.replace("../", UriUtil.resolve(url, "../"));
if (data.contains("./")) data = data.replace("./", UriUtil.resolve(url, "./"));
return data;
}

@ -240,7 +240,7 @@ public class LiveParser {
try {
if (line.startsWith("format=")) format = line.split("format=")[1].trim();
if (line.contains("manifest_type=")) format = line.split("manifest_type=")[1].trim();
if ("mpd".equals(format)) format = MimeTypes.APPLICATION_MPD;
if ("mpd".equals(format) || "dash".equals(format)) format = MimeTypes.APPLICATION_MPD;
if ("hls".equals(format)) format = MimeTypes.APPLICATION_M3U8;
} catch (Exception e) {
format = null;

@ -24,7 +24,6 @@ import java.io.FileOutputStream;
public class WallConfig {
private Drawable drawable;
private Config config;
private boolean sync;
@ -44,12 +43,6 @@ public class WallConfig {
return get().getConfig().getDesc();
}
public static Drawable drawable(File file) {
if (get().drawable != null) return get().drawable;
get().setDrawable(Drawable.createFromPath(file.getAbsolutePath()));
return get().drawable;
}
public static void load(Config config, Callback callback) {
get().clear().config(config).load(callback);
}
@ -74,10 +67,6 @@ public class WallConfig {
return config == null ? Config.wall() : config;
}
public void setDrawable(Drawable drawable) {
this.drawable = drawable;
}
public void load(Callback callback) {
App.execute(() -> loadConfig(callback));
}

@ -16,7 +16,7 @@ public class CastVideo {
}
private CastVideo(String name, String url) {
if (url.startsWith("file")) url = Server.get().getAddress() + "/" + url.replace(Path.rootPath(), "");
if (url.startsWith("file")) url = Server.get().getAddress() + "/" + url.replace(Path.rootPath(), "").replace("://", "");
if (url.startsWith("http://127.0.0.1:7777")) url = Uri.parse(url).getQueryParameter("url");
if (url.contains("127.0.0.1")) url = url.replace("127.0.0.1", Util.getIp());
this.name = name;

@ -1,7 +1,5 @@
package com.fongmi.android.tv.server;
import android.util.Base64;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Device;

@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
@ -67,48 +68,54 @@ public class IDMUtil {
}
private static boolean downloadFilesInternal(@NonNull Activity activity, @Nullable Map<String, String> urlAndFileNames, @Nullable String url, @Nullable String referer, @Nullable String fileName, @Nullable String userAgent, @Nullable String cookies, @Nullable Map<String, String> headers, boolean secureUri, boolean askUserToInstall1DMIfNotInstalled){
int requiredVersionCode = secureUri ? SECURE_URI_1DM_SUPPORT_MIN_VERSION_CODE : !isEmpty(urlAndFileNames) || !isEmpty(headers) ? HEADERS_AND_MULTIPLE_LINKS_1DM_SUPPORT_MIN_VERSION_CODE : 0;
String packageName = "";
try {
packageName = get1DMInstalledPackageName(requiredVersionCode, askUserToInstall1DMIfNotInstalled);
} catch (Exception e) {
return false;
}
if (TextUtils.isEmpty(packageName)) return false;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setComponent(new ComponentName(packageName, DOWNLOADER_ACTIVITY_NAME_1DM));
intent.putExtra(EXTRA_SECURE_URI, secureUri);
if (isEmpty(urlAndFileNames)) {
intent.setData(Uri.parse(url));
if (!TextUtils.isEmpty(referer)) intent.putExtra(EXTRA_REFERER, referer);
if (!TextUtils.isEmpty(userAgent)) intent.putExtra(EXTRA_USERAGENT, userAgent);
if (!TextUtils.isEmpty(cookies)) intent.putExtra(EXTRA_COOKIES, cookies);
if (!TextUtils.isEmpty(fileName)) intent.putExtra(EXTRA_FILENAME, fileName);
} else {
ArrayList<String> urls = new ArrayList<>(urlAndFileNames.size());
ArrayList<String> names = new ArrayList<>(urlAndFileNames.size());
for (Map.Entry<String, String> entry : urlAndFileNames.entrySet()) {
if (TextUtils.isEmpty(entry.getKey())) continue;
urls.add(entry.getKey());
names.add(entry.getValue());
int requiredVersionCode = secureUri ? SECURE_URI_1DM_SUPPORT_MIN_VERSION_CODE : !isEmpty(urlAndFileNames) || !isEmpty(headers) ? HEADERS_AND_MULTIPLE_LINKS_1DM_SUPPORT_MIN_VERSION_CODE : 0;
String packageName = "";
try {
packageName = get1DMInstalledPackageName(requiredVersionCode, askUserToInstall1DMIfNotInstalled);
} catch (Exception e) {
return false;
}
if (TextUtils.isEmpty(packageName)) return false;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setComponent(new ComponentName(packageName, DOWNLOADER_ACTIVITY_NAME_1DM));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.putExtra(EXTRA_SECURE_URI, secureUri);
if (isEmpty(urlAndFileNames)) {
intent.setData(Uri.parse(url));
if (!TextUtils.isEmpty(referer)) intent.putExtra(EXTRA_REFERER, referer);
if (!TextUtils.isEmpty(userAgent)) intent.putExtra(EXTRA_USERAGENT, userAgent);
if (!TextUtils.isEmpty(cookies)) intent.putExtra(EXTRA_COOKIES, cookies);
if (!TextUtils.isEmpty(fileName)) intent.putExtra(EXTRA_FILENAME, fileName);
} else {
ArrayList<String> urls = new ArrayList<>(urlAndFileNames.size());
ArrayList<String> names = new ArrayList<>(urlAndFileNames.size());
for (Map.Entry<String, String> entry : urlAndFileNames.entrySet()) {
if (TextUtils.isEmpty(entry.getKey())) continue;
urls.add(entry.getKey());
names.add(entry.getValue());
}
if (urls.size() > 0) {
intent.putExtra(EXTRA_URL_LIST, urls);
intent.putExtra(EXTRA_URL_FILENAME_LIST, names);
intent.setData(Uri.parse(urls.get(0)));
}
}
if (urls.size() > 0) {
intent.putExtra(EXTRA_URL_LIST, urls);
intent.putExtra(EXTRA_URL_FILENAME_LIST, names);
intent.setData(Uri.parse(urls.get(0)));
if (!isEmpty(headers)) {
Bundle extra = new Bundle();
for (Map.Entry<String, String> entry : headers.entrySet()) extra.putString(entry.getKey(), entry.getValue());
intent.putExtra(EXTRA_HEADERS, extra);
}
activity.startActivity(intent);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
if (!isEmpty(headers)) {
Bundle extra = new Bundle();
for (Map.Entry<String, String> entry : headers.entrySet()) extra.putString(entry.getKey(), entry.getValue());
intent.putExtra(EXTRA_HEADERS, extra);
}
activity.startActivity(intent);
return true;
}
public static void install1DM(String packageName, boolean update) {
}
private static <S, T> boolean isEmpty(Map<S, T> map) {

@ -479,6 +479,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
hideSheet();
});
mViewModel.ep.observe(this, episode -> {
Notify.progress(this);
Download.get().title(mBinding.name.getText() + "-" + episode.getName());
mViewModel.download(getKey(), getFlag().getFlag(), episode.getUrl());
});

@ -2,6 +2,7 @@ package com.fongmi.android.tv.ui.base;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.DisplayCutout;
@ -15,7 +16,6 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.WallConfig;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.ResUtil;
@ -120,7 +120,7 @@ public abstract class BaseActivity extends AppCompatActivity {
try {
if (!customWall()) return;
File file = FileUtil.getWall(Setting.getWall());
if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(WallConfig.drawable(file));
if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(Drawable.createFromPath(file.getAbsolutePath()));
else getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName()));
} catch (Exception e) {
getWindow().setBackgroundDrawableResource(R.drawable.wallpaper_1);
@ -129,9 +129,7 @@ public abstract class BaseActivity extends AppCompatActivity {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshEvent(RefreshEvent event) {
if (event.getType() != RefreshEvent.Type.WALL) return;
WallConfig.get().setDrawable(null);
refreshWall();
if (event.getType() == RefreshEvent.Type.WALL) refreshWall();
}
@Override

@ -78,7 +78,7 @@ public class CastDialog extends BaseDialog implements DeviceAdapter.OnClickListe
String id = history.getVodId();
String fd = history.getVodId();
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.startsWith("file")) fd = Server.get().getAddress() + "/" + fd.replace(Path.rootPath(), "").replace("://", "");
if (fd.startsWith("http://127.0.0.1:7777")) fd = Uri.parse(fd).getQueryParameter("url");
if (fd.contains("127.0.0.1")) fd = fd.replace("127.0.0.1", Util.getIp());
body.add("history", history.toString().replace(id, fd));

@ -77,8 +77,7 @@ public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnCl
@Override
public void onItemClick(Episode item) {
boolean download = getDownload();
if (download) mViewModel.setDownload(item);
if (getDownload()) mViewModel.setDownload(item);
else mViewModel.setEpisode(item);
}
}

Loading…
Cancel
Save