Merge branch 'dev' into release

pull/137/head
FongMi 3 years ago
commit 1d0319f9c0
  1. 10
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  2. 33
      app/src/main/java/com/fongmi/android/tv/bean/Drm.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  5. 14
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  6. 3
      app/src/main/java/com/fongmi/android/tv/player/extractor/Magnet.java
  7. 4
      app/src/mobile/java/com/fongmi/android/tv/Product.java
  8. 8
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpisodeAdapter.java

@ -37,8 +37,6 @@ public class Channel {
private String referer;
@SerializedName("header")
private JsonElement header;
@SerializedName("drm")
private Drm drm;
private boolean selected;
private Group group;
@ -133,14 +131,6 @@ public class Channel {
this.header = header;
}
public Drm getDrm() {
return drm;
}
public void setDrm(Drm drm) {
this.drm = drm;
}
public Group getGroup() {
return group;
}

@ -1,33 +0,0 @@
package com.fongmi.android.tv.bean;
import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import com.google.gson.annotations.SerializedName;
import java.nio.charset.StandardCharsets;
public class Drm {
@SerializedName("licenseType")
private String licenseType;
@SerializedName("licenseKey")
private String licenseKey;
public Drm(String licenseType, String licenseKey) {
this.licenseType = licenseType;
this.licenseKey = licenseKey;
}
public String getLicenseType() {
return licenseType;
}
public String getLicenseKey() {
return licenseKey;
}
public MediaItem.DrmConfiguration get() {
return new MediaItem.DrmConfiguration.Builder(C.CLEARKEY_UUID).setKeySetId(getLicenseKey().getBytes(StandardCharsets.UTF_8)).build();
}
}

@ -456,7 +456,7 @@ public class Vod {
public static class Sorter implements Comparator<Episode> {
public static List<Episode> sort(List<Episode> items) {
Collections.sort(items, new Sorter());
if (items.size() > 1) Collections.sort(items, new Sorter());
return items;
}

@ -167,7 +167,7 @@ public class SiteViewModel extends ViewModel {
Result result = new Result();
result.setParse(0);
result.setFlag(flag);
result.setUrl(Source.get().fetch(result.getUrl()));
result.setUrl(Source.get().fetch(id));
return result;
} else {
String url = id;

@ -37,7 +37,6 @@ import androidx.media3.ui.CaptionStyleCompat;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.Drm;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.bean.Sub;
import com.fongmi.android.tv.utils.Utils;
@ -98,28 +97,27 @@ public class ExoUtil {
}
public static MediaSource getSource(Result result, int errorCode) {
return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), null, errorCode);
return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), errorCode);
}
public static MediaSource getSource(Channel channel, int errorCode) {
return getSource(channel.getHeaders(), channel.getUrl(), null, Collections.emptyList(), channel.getDrm(), errorCode);
return getSource(channel.getHeaders(), channel.getUrl(), null, Collections.emptyList(), errorCode);
}
public static MediaSource getSource(Map<String, String> headers, String url, int errorCode) {
return getSource(headers, url, null, Collections.emptyList(), null, errorCode);
return getSource(headers, url, null, Collections.emptyList(), errorCode);
}
private static MediaSource getSource(Map<String, String> headers, String url, String format, List<Sub> subs, Drm drm, int errorCode) {
private static MediaSource getSource(Map<String, String> headers, String url, String format, List<Sub> subs, int errorCode) {
Uri uri = Uri.parse(url.trim().replace("\\", ""));
String mimeType = getMimeType(format, errorCode);
if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, "Basic " + Util.base64(uri.getUserInfo()));
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm));
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs));
}
private static MediaItem getMediaItem(Uri uri, String mimeType, List<Sub> subs, Drm drm) {
private static MediaItem getMediaItem(Uri uri, String mimeType, List<Sub> subs) {
MediaItem.Builder builder = new MediaItem.Builder().setUri(uri);
if (subs.size() > 0) builder.setSubtitleConfigurations(getSubtitles(subs));
if (drm != null) builder.setDrmConfiguration(drm.get());
if (mimeType != null) builder.setMimeType(mimeType);
return builder.build();
}

@ -51,7 +51,8 @@ public class Magnet implements Callable<List<Vod.Flag.Episode>> {
public static void addAll(List<Vod.Flag.Episode> items, Future<List<Vod.Flag.Episode>> future) {
try {
items.addAll(Vod.Flag.Episode.Sorter.sort(future.get()));
} catch (Exception ignored) {
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -40,4 +40,8 @@ public class Product {
int height = (int) (width / style.getRatio());
return new int[]{width, height};
}
public static int getEms() {
return Math.min(ResUtil.getScreenWidth() / ResUtil.sp2px(18), 35);
}
}

@ -7,6 +7,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.databinding.AdapterEpisodeGridBinding;
import com.fongmi.android.tv.databinding.AdapterEpisodeListBinding;
@ -84,8 +85,8 @@ public class EpisodeAdapter extends RecyclerView.Adapter<EpisodeAdapter.ViewHold
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Vod.Flag.Episode item = mItems.get(position);
if (holder.gridBinding != null) holder.initView(holder.gridBinding.text, item);
if (holder.listBinding != null) holder.initView(holder.listBinding.text, item);
if (holder.gridBinding != null) holder.initView(holder.gridBinding.text, item, false);
if (holder.listBinding != null) holder.initView(holder.listBinding.text, item, true);
}
class ViewHolder extends RecyclerView.ViewHolder {
@ -103,10 +104,11 @@ public class EpisodeAdapter extends RecyclerView.Adapter<EpisodeAdapter.ViewHold
this.gridBinding = binding;
}
void initView(TextView view, Vod.Flag.Episode item) {
void initView(TextView view, Vod.Flag.Episode item, boolean ems) {
view.setText(item.getName());
view.setSelected(item.isActivated());
view.setActivated(item.isActivated());
if (ems) view.setMaxEms(Product.getEms());
view.setOnClickListener(v -> mListener.onItemClick(item));
}
}

Loading…
Cancel
Save