From 6c1e83fadf40822a8f73d1069acbb33186edc61e Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 19 Feb 2025 18:46:10 +0800 Subject: [PATCH] Support catchup utcend and utc --- .../leanback/res/layout/view_widget_live.xml | 1 - .../com/fongmi/android/tv/bean/Catchup.java | 17 +++++++++++++++-- .../com/fongmi/android/tv/bean/EpgData.java | 10 ---------- .../android/tv/ui/activity/LiveActivity.java | 3 +++ app/src/mobile/res/layout/view_control_live.xml | 9 +++++++++ 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/src/leanback/res/layout/view_widget_live.xml b/app/src/leanback/res/layout/view_widget_live.xml index 2ef0369e3..910812b22 100644 --- a/app/src/leanback/res/layout/view_widget_live.xml +++ b/app/src/leanback/res/layout/view_widget_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" diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java b/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java index 0ca08e964..9fadee74d 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java @@ -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 ""; + } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java b/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java index e9fc22c3b..4fe73d9c9 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java @@ -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()); 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 e05a5a76c..0ee3a19aa 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 @@ -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()); diff --git a/app/src/mobile/res/layout/view_control_live.xml b/app/src/mobile/res/layout/view_control_live.xml index e44512fd4..357933460 100644 --- a/app/src/mobile/res/layout/view_control_live.xml +++ b/app/src/mobile/res/layout/view_control_live.xml @@ -31,6 +31,15 @@ android:textSize="14sp" tools:text="CCTV-1" /> + +