Support catchup utcend and utc

pull/587/head
FongMi 1 year ago
parent 807aa6c7dc
commit 6c1e83fadf
  1. 1
      app/src/leanback/res/layout/view_widget_live.xml
  2. 17
      app/src/main/java/com/fongmi/android/tv/bean/Catchup.java
  3. 10
      app/src/main/java/com/fongmi/android/tv/bean/EpgData.java
  4. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  5. 9
      app/src/mobile/res/layout/view_control_live.xml

@ -34,7 +34,6 @@
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_alignStart="@+id/title"
android:layout_marginBottom="16dp"
android:shadowColor="@color/grey_900"
android:shadowDx="2"
android:shadowDy="2"

@ -5,6 +5,8 @@ import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -107,8 +109,19 @@ public class Catchup {
public String format(String url, EpgData data) {
String result = getSource();
if (data.isInRange()) return url;
Matcher matcher = Pattern.compile("(\\$\\{[^}]*\\})").matcher(result);
while (matcher.find()) result = result.replace(matcher.group(1), data.format(matcher.group(1)));
Matcher matcher = Pattern.compile("(\\$?\\{[^}]*\\})").matcher(result);
while (matcher.find()) result = result.replace(matcher.group(1), format(matcher.group(1), data.getStartTime(), data.getEndTime()));
return isDefault() ? result : append(url, result);
}
private String format(String group, long start, long end) {
Matcher matcher = Pattern.compile("\\{([^}]+)\\}").matcher(group);
if (!matcher.find()) return "";
String tag = matcher.group(1);
if (tag.startsWith("(b")) return new SimpleDateFormat(tag.split("\\)")[1], Locale.getDefault()).format(start);
if (tag.startsWith("(e")) return new SimpleDateFormat(tag.split("\\)")[1], Locale.getDefault()).format(end);
if (tag.startsWith("utcend:")) return String.valueOf(end / 1000);
if (tag.startsWith("utc:")) return String.valueOf(start / 1000);
return "";
}
}

@ -8,9 +8,6 @@ import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.gson.annotations.SerializedName;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class EpgData {
@SerializedName("title")
@ -84,13 +81,6 @@ public class EpgData {
return getStartTime() > System.currentTimeMillis();
}
public String format(String group) {
String pattern = group.split("\\)")[1].split("\\}")[0];
if (group.contains("(b")) return pattern.equals("UNIX") ? String.valueOf(getStartTime() / 1000) : new SimpleDateFormat(pattern, Locale.getDefault()).format(getStartTime());
if (group.contains("(e")) return pattern.equals("UNIX") ? String.valueOf(getEndTime() / 1000) : new SimpleDateFormat(pattern, Locale.getDefault()).format(getEndTime());
return "";
}
public String format() {
if (getTitle().isEmpty()) return "";
if (getStart().isEmpty() && getEnd().isEmpty()) return ResUtil.getString(R.string.play_now, getTitle());

@ -580,6 +580,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
fetch(item);
} else if (mChannel.hasCatchup()) {
Notify.show(getString(R.string.play_ready, item.getTitle()));
mBinding.control.epg.setVisibility(View.VISIBLE);
mBinding.control.epg.setText(item.getTitle());
mEpgDataAdapter.setSelected(item);
fetch(item);
}
@ -604,6 +606,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mBinding.widget.play.setText("");
mChannel.loadLogo(mBinding.widget.logo);
mBinding.control.title.setSelected(true);
mBinding.control.epg.setVisibility(View.GONE);
mBinding.widget.name.setText(mChannel.getName());
mBinding.control.title.setText(mChannel.getName());
mBinding.widget.namePip.setText(mChannel.getName());

@ -31,6 +31,15 @@
android:textSize="14sp"
tools:text="CCTV-1" />
<TextView
android:id="@+id/epg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="14sp"
android:visibility="gone"
tools:text="秘境之眼" />
<TextView
android:id="@+id/size"
android:layout_width="wrap_content"

Loading…
Cancel
Save