[leanback] support translate vod

pull/123/head
FongMi 3 years ago
parent fed84ddb69
commit 67c784bdc2
  1. 3
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/bean/Class.java
  3. 21
      app/src/main/java/com/fongmi/android/tv/bean/Filter.java
  4. 13
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  5. 6
      app/src/main/java/com/fongmi/android/tv/bean/Sub.java
  6. 14
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  7. 4
      app/src/main/java/com/fongmi/android/tv/gson/FilterAdapter.java
  8. 4
      app/src/main/java/com/fongmi/android/tv/utils/Trans.java
  9. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java

@ -28,6 +28,7 @@ import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.fragment.VodFragment;
import com.fongmi.android.tv.ui.presenter.TypePresenter;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Trans;
import com.fongmi.android.tv.utils.Utils;
import com.google.gson.Gson;
@ -101,7 +102,7 @@ public class VodActivity extends BaseActivity {
private List<Class> getTypes(Result result) {
List<Class> types = new ArrayList<>();
for (String cate : getSite().getCategories()) for (Class type : result.getTypes()) if (cate.equals(type.getTypeName())) types.add(type);
for (String cate : getSite().getCategories()) for (Class type : result.getTypes()) if (Trans.get(cate).equals(type.getTypeName())) types.add(type);
return types;
}

@ -2,6 +2,7 @@ package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import com.fongmi.android.tv.utils.Trans;
import com.google.gson.annotations.SerializedName;
import org.simpleframework.xml.Attribute;
@ -88,6 +89,11 @@ public class Class {
return getTypeId().equals("home");
}
public void trans() {
if (Trans.pass()) return;
this.typeName = Trans.get(typeName);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;

@ -1,5 +1,8 @@
package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import com.fongmi.android.tv.utils.Trans;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
@ -33,11 +36,17 @@ public class Filter {
}
public String getName() {
return name;
return TextUtils.isEmpty(name) ? "" : name;
}
public List<Value> getValue() {
return value;
return value == null ? Collections.emptyList() : value;
}
public Filter trans() {
if (Trans.pass()) return this;
for (Value value : getValue()) value.trans();
return this;
}
public static class Value {
@ -50,11 +59,11 @@ public class Filter {
private boolean activated;
public String getN() {
return n;
return TextUtils.isEmpty(n) ? "" : n;
}
public String getV() {
return v;
return TextUtils.isEmpty(v) ? "" : v;
}
public boolean isActivated() {
@ -65,6 +74,10 @@ public class Filter {
this.activated = item.equals(this);
}
public void trans() {
this.n = Trans.get(n);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;

@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
import com.fongmi.android.tv.gson.FilterAdapter;
import com.fongmi.android.tv.utils.Json;
import com.fongmi.android.tv.utils.Trans;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
@ -59,7 +60,7 @@ public class Result {
public static Result fromJson(String str) {
try {
Result result = FilterAdapter.gson().fromJson(str, Result.class);
return result == null ? empty() : result;
return result == null ? empty() : result.trans();
} catch (Exception e) {
return empty();
}
@ -67,7 +68,7 @@ public class Result {
public static Result fromXml(String str) {
try {
return new Persister().read(Result.class, str);
return new Persister().read(Result.class, str).trans();
} catch (Exception e) {
return empty();
}
@ -202,6 +203,14 @@ public class Result {
return this;
}
public Result trans() {
if (Trans.pass()) return this;
for (Class type : getTypes()) type.trans();
for (Vod vod : getList()) vod.trans();
for (Sub sub : getSubs()) sub.trans();
return this;
}
@NonNull
@Override
public String toString() {

@ -5,6 +5,7 @@ import android.text.TextUtils;
import androidx.media3.common.MediaItem;
import com.fongmi.android.tv.utils.Trans;
import com.google.gson.annotations.SerializedName;
public class Sub {
@ -34,6 +35,11 @@ public class Sub {
return TextUtils.isEmpty(format) ? "" : format;
}
public void trans() {
if (Trans.pass()) return;
this.name = Trans.get(name);
}
public MediaItem.SubtitleConfiguration getExo() {
return new MediaItem.SubtitleConfiguration.Builder(Uri.parse(getUrl())).setLabel(getName()).setMimeType(getFormat()).setLanguage(getLang()).build();
}

@ -5,6 +5,7 @@ import android.view.View;
import androidx.annotation.NonNull;
import com.fongmi.android.tv.utils.Trans;
import com.fongmi.android.tv.utils.Utils;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
@ -175,6 +176,17 @@ public class Vod {
return getVodTag().equals("folder");
}
public void trans() {
if (Trans.pass()) return;
this.vodName = Trans.get(vodName);
this.vodArea = Trans.get(vodArea);
this.typeName = Trans.get(typeName);
this.vodActor = Trans.get(vodActor);
this.vodRemarks = Trans.get(vodRemarks);
this.vodContent = Trans.get(vodContent);
this.vodDirector = Trans.get(vodDirector);
}
public void setVodFlags() {
String[] playFlags = getVodPlayFrom().split("\\$\\$\\$");
String[] playUrls = getVodPlayUrl().split("\\$\\$\\$");
@ -296,7 +308,7 @@ public class Vod {
public Episode(String name, String url) {
this.number = Utils.getDigit(name);
this.name = name;
this.name = Trans.get(name);
this.url = url;
}

@ -30,8 +30,8 @@ public class FilterAdapter implements JsonDeserializer<LinkedHashMap<String, Lis
for (String key : filters.keySet()) {
List<Filter> items = new ArrayList<>();
JsonElement element = filters.get(key);
if (element.isJsonObject()) items.add(Filter.objectFrom(element));
else for (JsonElement item : element.getAsJsonArray()) items.add(Filter.objectFrom(item));
if (element.isJsonObject()) items.add(Filter.objectFrom(element).trans());
else for (JsonElement item : element.getAsJsonArray()) items.add(Filter.objectFrom(item).trans());
filterMap.put(key, items);
}
return filterMap;

@ -31,6 +31,10 @@ public class Trans {
for (int i = 0, n = UTF8T.length; i < n; ++i) map.put(UTF8S[i], UTF8T[i]);
}
public static boolean pass() {
return !get().trans;
}
public static String get(String text) {
if (!get().trans || TextUtils.isEmpty(text)) return text;
char[] chars = text.toCharArray();

@ -145,7 +145,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
private Result handle(Result result) {
List<Class> types = new ArrayList<>();
for (String cate : getSite().getCategories()) for (Class type : result.getTypes()) if (cate.equals(type.getTypeName())) types.add(type);
for (String cate : getSite().getCategories()) for (Class type : result.getTypes()) if (Trans.get(cate).equals(type.getTypeName())) types.add(type);
result.setTypes(types);
return result;
}

Loading…
Cancel
Save