diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 9296cb9be..df93a5183 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.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()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/ChannelPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/ChannelPresenter.java index ff4a10546..9f357f2e5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/ChannelPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/ChannelPresenter.java @@ -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)); diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java index f83f412e4..fe1ad939f 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java @@ -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); } } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java index 0bbb2ba62..e9d6cafb0 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java @@ -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; diff --git a/app/src/main/java/com/fongmi/android/tv/bean/DanmakuData.java b/app/src/main/java/com/fongmi/android/tv/bean/DanmakuData.java index b9cff539d..49a7fa03b 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/DanmakuData.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/DanmakuData.java @@ -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("&", "&").replace(""", "\"").replace(">", ">").replace("<", "<"); } + + public void trans() { + if (Trans.pass()) return; + this.text = Trans.s2t(text); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Flag.java b/app/src/main/java/com/fongmi/android/tv/bean/Flag.java index 321782bb3..f98d2071f 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Flag.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Flag.java @@ -38,12 +38,11 @@ public class Flag implements Parcelable, Diffable { 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 { 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; diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Group.java b/app/src/main/java/com/fongmi/android/tv/bean/Group.java index d6acb843b..9605a62f2 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Group.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Group.java @@ -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; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 93d5a7772..145cf191a 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -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()); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java index 7e48cc83f..95df700cd 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java @@ -75,7 +75,7 @@ public class ChannelAdapter extends RecyclerView.Adapter listener.onItemClick(item));