Add trans for live and danmaku

pull/605/head
jhengazuji 5 months ago
parent d5f64d2d07
commit 463f2e54c7
  1. 8
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/ChannelPresenter.java
  3. 18
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  4. 17
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  5. 10
      app/src/main/java/com/fongmi/android/tv/bean/DanmakuData.java
  6. 9
      app/src/main/java/com/fongmi/android/tv/bean/Flag.java
  7. 7
      app/src/main/java/com/fongmi/android/tv/bean/Group.java
  8. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  9. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java

@ -578,7 +578,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
if (item.isSelected()) {
fetch(item);
} else if (mChannel.hasCatchup()) {
mBinding.widget.title.setText(getString(R.string.detail_title, mChannel.getName(), item.getTitle()));
mBinding.widget.title.setText(getString(R.string.detail_title, mChannel.getShow(), item.getTitle()));
Notify.show(getString(R.string.play_ready, item.getTitle()));
setActivated(item);
fetch(item);
@ -614,8 +614,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.widget.name.setMaxEms(48);
mChannel.loadLogo(mBinding.widget.logo);
mBinding.widget.title.setSelected(true);
mBinding.widget.name.setText(mChannel.getName());
mBinding.widget.title.setText(mChannel.getName());
mBinding.widget.name.setText(mChannel.getShow());
mBinding.widget.title.setText(mChannel.getShow());
mBinding.widget.line.setText(mChannel.getLineText());
mBinding.widget.number.setText(mChannel.getNumber());
mBinding.control.line.setText(mChannel.getLineText());
@ -627,7 +627,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
EpgData data = mChannel.getData().getEpgData();
boolean hasTitle = !data.getTitle().isEmpty();
mEpgDataAdapter.setItems(mChannel.getData().getList(), null);
if (hasTitle) mBinding.widget.title.setText(getString(R.string.detail_title, mChannel.getName(), data.getTitle()));
if (hasTitle) mBinding.widget.title.setText(getString(R.string.detail_title, mChannel.getShow(), data.getTitle()));
mBinding.widget.name.setMaxEms(hasTitle ? 12 : 48);
mBinding.widget.play.setText(data.format());
setWidth(mChannel.getData());

@ -38,7 +38,7 @@ public class ChannelPresenter extends Presenter {
Channel item = (Channel) object;
ViewHolder holder = (ViewHolder) viewHolder;
item.loadLogo(holder.binding.logo);
holder.binding.name.setText(item.getName());
holder.binding.name.setText(item.getShow());
holder.binding.number.setText(item.getNumber());
holder.binding.getRoot().setSelected(item.isSelected());
setOnClickListener(holder, view -> listener.onItemClick(item));

@ -58,25 +58,23 @@ public class LiveParser {
}
public static void text(Live live, String text) {
int number = 0;
if (!live.getGroups().isEmpty()) return;
if (M3U.matcher(text).find()) m3u(live, text);
else txt(live, text);
for (Group group : live.getGroups()) {
for (Channel channel : group.getChannel()) {
if (channel.getNumber().isEmpty()) channel.setNumber(++number);
channel.live(live);
}
}
apply(live);
}
private static void json(Live live, String text) {
int number = 0;
live.getGroups().addAll(Group.arrayFrom(text));
apply(live);
}
private static void apply(Live live) {
int number = 0;
for (Group group : live.getGroups()) {
for (Channel channel : group.getChannel()) {
for (Channel channel : group.trans().getChannel()) {
if (channel.getNumber().isEmpty()) channel.setNumber(++number);
channel.live(live);
channel.trans().live(live);
}
}
}

@ -11,6 +11,7 @@ import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.utils.Json;
import com.github.catvod.utils.Trans;
import com.google.common.net.HttpHeaders;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
@ -57,6 +58,7 @@ public class Channel {
private boolean selected;
private Group group;
private String show;
private Epg data;
private int line;
@ -123,6 +125,14 @@ public class Channel {
this.name = name;
}
public String getShow() {
return TextUtils.isEmpty(show) ? getName() : show;
}
public void setShow(String show) {
this.show = show;
}
public String getUa() {
return TextUtils.isEmpty(ua) ? "" : ua;
}
@ -340,6 +350,7 @@ public class Channel {
setTvgId(item.getTvgId());
setLogo(item.getLogo());
setName(item.getName());
setShow(item.getShow());
setUrls(item.getUrls());
setData(item.getData());
setDrm(item.getDrm());
@ -359,6 +370,12 @@ public class Channel {
return result;
}
public Channel trans() {
if (Trans.pass()) return this;
this.show = Trans.s2t(name);
return this;
}
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) return true;

@ -3,20 +3,23 @@ package com.fongmi.android.tv.bean;
import android.graphics.Color;
import android.text.TextUtils;
import com.github.catvod.utils.Trans;
import java.util.regex.Matcher;
public class DanmakuData {
private final String text;
private int type;
private int color;
private int shadow;
private long time;
private float size;
private String text;
public DanmakuData(Matcher matcher, float density) throws Exception {
this.param(matcher.group(1), density);
this.text = matcher.group(2);
this.trans();
}
private void param(String param, float density) throws Exception {
@ -52,4 +55,9 @@ public class DanmakuData {
public String getText() {
return TextUtils.isEmpty(text) ? "" : text.replace("&amp;", "&").replace("&quot;", "\"").replace("&gt;", ">").replace("&lt;", "<");
}
public void trans() {
if (Trans.pass()) return;
this.text = Trans.s2t(text);
}
}

@ -38,12 +38,11 @@ public class Flag implements Parcelable, Diffable<Flag> {
private int position;
public static Flag create(String flag) {
return new Flag(flag);
return new Flag(flag).trans();
}
public Flag(String flag) {
this.episodes = new ArrayList<>();
this.show = Trans.s2t(flag);
this.flag = flag;
this.position = -1;
}
@ -123,6 +122,12 @@ public class Flag implements Parcelable, Diffable<Flag> {
return Arrays.asList(item);
}
public Flag trans() {
if (Trans.pass()) return this;
this.show = Trans.s2t(flag);
return this;
}
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) return true;

@ -8,6 +8,7 @@ import androidx.annotation.StringRes;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.utils.Trans;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
@ -154,6 +155,12 @@ public class Group {
return getChannel().get(getPosition()).group(this);
}
public Group trans() {
if (Trans.pass()) return this;
this.name = Trans.s2t(name);
return this;
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj == null) return false;

@ -610,7 +610,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
if (item.isSelected()) {
fetch(item);
} else if (mChannel.hasCatchup()) {
mBinding.control.title.setText(getString(R.string.detail_title, mChannel.getName(), item.getTitle()));
mBinding.control.title.setText(getString(R.string.detail_title, mChannel.getShow(), item.getTitle()));
Notify.show(getString(R.string.play_ready, item.getTitle()));
mEpgDataAdapter.setSelected(item);
fetch(item);
@ -637,9 +637,9 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
mBinding.widget.name.setMaxEms(48);
mChannel.loadLogo(mBinding.widget.logo);
mBinding.control.title.setSelected(true);
mBinding.widget.name.setText(mChannel.getName());
mBinding.control.title.setText(mChannel.getName());
mBinding.widget.namePip.setText(mChannel.getName());
mBinding.widget.name.setText(mChannel.getShow());
mBinding.control.title.setText(mChannel.getShow());
mBinding.widget.namePip.setText(mChannel.getShow());
mBinding.widget.line.setText(mChannel.getLineText());
mBinding.widget.number.setText(mChannel.getNumber());
mBinding.widget.numberPip.setText(mChannel.getNumber());
@ -652,7 +652,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
EpgData data = mChannel.getData().getEpgData();
boolean hasTitle = !data.getTitle().isEmpty();
mEpgDataAdapter.addAll(mChannel.getData().getList());
if (hasTitle) mBinding.control.title.setText(getString(R.string.detail_title, mChannel.getName(), data.getTitle()));
if (hasTitle) mBinding.control.title.setText(getString(R.string.detail_title, mChannel.getShow(), data.getTitle()));
mBinding.widget.name.setMaxEms(hasTitle ? 12 : 48);
mBinding.widget.play.setText(data.format());
setWidth(mChannel.getData());

@ -75,7 +75,7 @@ public class ChannelAdapter extends RecyclerView.Adapter<ChannelAdapter.ViewHold
public void onBindViewHolder(@NonNull ChannelAdapter.ViewHolder holder, int position) {
Channel item = mItems.get(position);
item.loadLogo(holder.binding.logo);
holder.binding.name.setText(item.getName());
holder.binding.name.setText(item.getShow());
holder.binding.number.setText(item.getNumber());
holder.binding.getRoot().setSelected(item.isSelected());
holder.binding.getRoot().setOnClickListener(view -> listener.onItemClick(item));

Loading…
Cancel
Save