From cc200aee385f12153db99eb1c3fe5dbf4726a2e2 Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Mon, 8 Dec 2025 14:54:55 +0800 Subject: [PATCH] Clean code --- .../android/tv/ui/activity/HomeActivity.java | 6 +- .../android/tv/ui/activity/VideoActivity.java | 52 +++++----- .../tv/ui/fragment/CollectFragment.java | 2 +- .../android/tv/ui/fragment/TypeFragment.java | 8 +- .../android/tv/ui/holder/VodListHolder.java | 6 +- .../android/tv/ui/holder/VodOvalHolder.java | 4 +- .../android/tv/ui/holder/VodRectHolder.java | 8 +- .../tv/ui/presenter/QuickPresenter.java | 4 +- .../leanback/res/layout/view_widget_cast.xml | 4 +- .../leanback/res/layout/view_widget_vod.xml | 4 +- .../java/com/fongmi/android/tv/bean/Flag.java | 34 +++---- .../com/fongmi/android/tv/bean/Result.java | 4 +- .../java/com/fongmi/android/tv/bean/Vod.java | 99 ++++++++++--------- .../android/tv/model/SiteViewModel.java | 31 +++--- .../com/fongmi/android/tv/player/Source.java | 2 +- .../android/tv/player/extractor/Youtube.java | 12 +-- .../android/tv/ui/activity/VideoActivity.java | 52 +++++----- .../android/tv/ui/adapter/QuickAdapter.java | 4 +- .../android/tv/ui/adapter/SearchAdapter.java | 6 +- .../tv/ui/fragment/CollectFragment.java | 2 +- .../android/tv/ui/fragment/TypeFragment.java | 8 +- .../android/tv/ui/holder/VodListHolder.java | 6 +- .../android/tv/ui/holder/VodOvalHolder.java | 4 +- .../android/tv/ui/holder/VodRectHolder.java | 8 +- 24 files changed, 187 insertions(+), 183 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 06019527e..9c05d80b0 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -402,14 +402,14 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void onItemClick(Vod item) { if (item.isAction()) mViewModel.action(getHome().getKey(), item.getAction()); - else if (getHome().isIndex()) CollectActivity.start(this, item.getVodName()); - else VideoActivity.start(this, getHome().getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + else if (getHome().isIndex()) CollectActivity.start(this, item.getName()); + else VideoActivity.start(this, getHome().getKey(), item.getId(), item.getName(), item.getPic()); } @Override public boolean onLongClick(Vod item) { if (item.isAction()) return false; - CollectActivity.start(this, item.getVodName()); + CollectActivity.start(this, item.getName()); return true; } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index fbca8071d..eef457442 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -408,8 +408,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void getDetail(Vod item) { getIntent().putExtra("key", item.getSiteKey()); - getIntent().putExtra("pic", item.getVodPic()); - getIntent().putExtra("id", item.getVodId()); + getIntent().putExtra("pic", item.getPic()); + getIntent().putExtra("id", item.getId()); mBinding.scroll.scrollTo(0, 0); mClock.setCallback(null); mPlayers.reset(); @@ -442,17 +442,17 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void setDetail(Vod item) { mBinding.progressLayout.showContent(); - mBinding.video.setTag(item.getVodPic(getPic())); - mBinding.name.setText(item.getVodName(getName())); - setText(mBinding.remark, 0, item.getVodRemarks()); - setText(mBinding.year, R.string.detail_year, item.getVodYear()); - setText(mBinding.area, R.string.detail_area, item.getVodArea()); + mBinding.video.setTag(item.getPic(getPic())); + mBinding.name.setText(item.getName(getName())); + setText(mBinding.remark, 0, item.getRemarks()); + setText(mBinding.year, R.string.detail_year, item.getYear()); + setText(mBinding.area, R.string.detail_area, item.getArea()); setText(mBinding.type, R.string.detail_type, item.getTypeName()); setText(mBinding.site, R.string.detail_site, getSite().getName()); - setText(mBinding.actor, R.string.detail_actor, item.getVodActor()); - setText(mBinding.content, R.string.detail_content, item.getVodContent()); - setText(mBinding.director, R.string.detail_director, item.getVodDirector()); - mFlagAdapter.setItems(item.getVodFlags(), null); + setText(mBinding.actor, R.string.detail_actor, item.getActor()); + setText(mBinding.content, R.string.detail_content, item.getContent()); + setText(mBinding.director, R.string.detail_director, item.getDirector()); + mFlagAdapter.setItems(item.getFlags(), null); mBinding.content.setMaxLines(getMaxLines()); mBinding.video.requestFocus(); App.removeCallbacks(mR4); @@ -929,7 +929,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void checkFlag(Vod item) { - boolean empty = item.getVodFlags().isEmpty(); + boolean empty = item.getFlags().isEmpty(); mBinding.flag.setVisibility(empty ? View.GONE : View.VISIBLE); if (empty) { ErrorEvent.flag(tag); @@ -947,8 +947,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.control.opening.setText(mHistory.getOpening() <= 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); mBinding.control.ending.setText(mHistory.getEnding() <= 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); mBinding.control.speed.setText(mPlayers.setSpeed(mHistory.getSpeed())); - mHistory.setVodName(item.getVodName()); - mHistory.setVodPic(item.getVodPic()); + mHistory.setVodName(item.getName()); + mHistory.setVodPic(item.getPic()); setScale(getScale()); setPartAdapter(); setMetadata(); @@ -959,8 +959,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List History history = new History(); history.setKey(getHistoryKey()); history.setCid(VodConfig.getCid()); - history.setVodName(item.getVodName()); - history.findEpisode(item.getVodFlags()); + history.setVodName(item.getName()); + history.findEpisode(item.getFlags()); return history; } @@ -1004,12 +1004,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void updateVod(Vod item) { - mHistory.setVodPic(item.getVodPic()); - mHistory.setVodName(item.getVodName()); - mBinding.name.setText(item.getVodName()); - mBinding.widget.title.setText(item.getVodName()); - setText(mBinding.content, R.string.detail_content, item.getVodContent()); - setText(mBinding.director, R.string.detail_director, item.getVodDirector()); + mHistory.setVodPic(item.getPic()); + mHistory.setVodName(item.getName()); + mBinding.name.setText(item.getName()); + mBinding.widget.title.setText(item.getName()); + setText(mBinding.content, R.string.detail_content, item.getContent()); + setText(mBinding.director, R.string.detail_director, item.getDirector()); mBinding.content.setMaxLines(getMaxLines()); setPartAdapter(); updateKeep(); @@ -1198,11 +1198,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private boolean mismatch(Vod item) { - if (getId().equals(item.getVodId())) return true; - if (mBroken.contains(item.getVodId())) return true; + if (getId().equals(item.getId())) return true; + if (mBroken.contains(item.getId())) return true; String keyword = Objects.toString(mBinding.part.getTag(), ""); - if (isAutoMode()) return !item.getVodName().equals(keyword); - else return !item.getVodName().contains(keyword); + if (isAutoMode()) return !item.getName().equals(keyword); + else return !item.getName().contains(keyword); } private void nextParse(int position) { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index 2d976e82c..cee5a323f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -119,7 +119,7 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call public void onItemClick(Vod item) { requireActivity().setResult(Activity.RESULT_OK); if (item.isFolder()) VodActivity.start(requireActivity(), item.getSiteKey(), Result.folder(item)); - else VideoActivity.collect(requireActivity(), item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + else VideoActivity.collect(requireActivity(), item.getSiteKey(), item.getId(), item.getName(), item.getPic()); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index c130b83d0..eb70f192d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -253,18 +253,18 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac if (item.isAction()) { mViewModel.action(getKey(), item.getAction()); } else if (item.isFolder()) { - getParent().openFolder(item.getVodId(), mExtends); + getParent().openFolder(item.getId(), mExtends); headerVisible = mBinding.recycler.isHeaderVisible(); } else { - if (getSite().isIndex()) CollectActivity.start(requireActivity(), item.getVodName()); - else VideoActivity.start(requireActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), isFolder() ? item.getVodName() : null); + if (getSite().isIndex()) CollectActivity.start(requireActivity(), item.getName()); + else VideoActivity.start(requireActivity(), getKey(), item.getId(), item.getName(), item.getPic(), isFolder() ? item.getName() : null); } } @Override public boolean onLongClick(Vod item) { if (item.isAction() || item.isFolder()) return false; - CollectActivity.start(requireActivity(), item.getVodName()); + CollectActivity.start(requireActivity(), item.getName()); return true; } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java index efb186a6c..b549fb6e8 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java @@ -22,13 +22,13 @@ public class VodListHolder extends BaseVodHolder { @Override public void initView(Vod item) { - binding.name.setText(item.getVodName()); - binding.remark.setText(item.getVodRemarks()); + binding.name.setText(item.getName()); + binding.remark.setText(item.getRemarks()); binding.name.setVisibility(item.getNameVisible()); binding.remark.setVisibility(item.getRemarkVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image, true); + ImgUtil.load(item.getName(), item.getPic(), binding.image, true); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java index c475c34bb..8b0832112 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java @@ -28,11 +28,11 @@ public class VodOvalHolder extends BaseVodHolder { @Override public void initView(Vod item) { - binding.name.setText(item.getVodName()); + binding.name.setText(item.getName()); binding.name.setVisibility(item.getNameVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image); + ImgUtil.load(item.getName(), item.getPic(), binding.image); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java index f3243728e..d28f13d2e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java @@ -28,17 +28,17 @@ public class VodRectHolder extends BaseVodHolder { @Override public void initView(Vod item) { - binding.name.setText(item.getVodName()); - binding.year.setText(item.getVodYear()); + binding.name.setText(item.getName()); + binding.year.setText(item.getYear()); binding.site.setText(item.getSiteName()); - binding.remark.setText(item.getVodRemarks()); + binding.remark.setText(item.getRemarks()); binding.site.setVisibility(item.getSiteVisible()); binding.year.setVisibility(item.getYearVisible()); binding.name.setVisibility(item.getNameVisible()); binding.remark.setVisibility(item.getRemarkVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image); + ImgUtil.load(item.getName(), item.getPic(), binding.image); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/QuickPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/QuickPresenter.java index 6adf9a6b4..d05866fc6 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/QuickPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/QuickPresenter.java @@ -43,9 +43,9 @@ public class QuickPresenter extends Presenter { public void onBindViewHolder(@NonNull Presenter.ViewHolder viewHolder, Object object) { Vod item = (Vod) object; ViewHolder holder = (ViewHolder) viewHolder; - holder.binding.name.setText(item.getVodName()); + holder.binding.name.setText(item.getName()); holder.binding.site.setText(item.getSiteName()); - holder.binding.remark.setText(item.getVodRemarks()); + holder.binding.remark.setText(item.getRemarks()); setOnClickListener(holder, view -> listener.onItemClick(item)); } diff --git a/app/src/leanback/res/layout/view_widget_cast.xml b/app/src/leanback/res/layout/view_widget_cast.xml index e4168b926..63956ec30 100644 --- a/app/src/leanback/res/layout/view_widget_cast.xml +++ b/app/src/leanback/res/layout/view_widget_cast.xml @@ -8,7 +8,9 @@ android:id="@+id/top" android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="16dp"> + android:padding="16dp" + android:visibility="gone" + tools:visibility="visible"> + android:padding="16dp" + android:visibility="gone" + tools:visibility="visible"> { return new Flag(flag).trans(); } + public static Flag create(String flag, String url) { + Flag item = create(flag); + item.setEpisodes(url); + return item; + } + public Flag() { - this.episodes = new ArrayList<>(); this.position = -1; + this.episodes = new ArrayList<>(); } public Flag(String flag) { - this.episodes = new ArrayList<>(); this.flag = flag; this.position = -1; + this.episodes = new ArrayList<>(); } public String getShow() { @@ -65,7 +71,7 @@ public class Flag implements Parcelable, Diffable { } public String getUrls() { - return urls; + return TextUtils.isEmpty(urls) ? "" : urls; } public List getEpisodes() { @@ -89,16 +95,6 @@ public class Flag implements Parcelable, Diffable { this.position = position; } - public void createEpisode(String data) { - String[] urls = data.contains("#") ? data.split("#") : new String[]{data}; - for (int i = 0; i < urls.length; i++) { - String[] split = urls[i].split("\\$", 2); - String number = String.format(Locale.getDefault(), "%02d", i + 1); - Episode episode = split.length > 1 ? Episode.create(split[0].isEmpty() ? number : split[0].trim(), split[1]) : Episode.create(number, urls[i]); - if (!getEpisodes().contains(episode)) getEpisodes().add(episode); - } - } - public void toggle(boolean activated, Episode episode) { if (activated) setActivated(episode); else getEpisodes().forEach(Episode::deactivated); @@ -121,10 +117,14 @@ public class Flag implements Parcelable, Diffable { return strict ? null : getEpisodes().get(0); } - public static List create(String flag, String url) { - Flag item = Flag.create(flag); - item.getEpisodes().add(Episode.create("01", url)); - return Arrays.asList(item); + public void setEpisodes(String url) { + String[] urls = url.contains("#") ? url.split("#") : new String[]{url}; + for (int i = 0; i < urls.length; i++) { + String[] split = urls[i].split("\\$", 2); + String number = String.format(Locale.getDefault(), "%02d", i + 1); + Episode episode = split.length > 1 ? Episode.create(split[0].isEmpty() ? number : split[0].trim(), split[1]) : Episode.create(number, urls[i]); + if (!getEpisodes().contains(episode)) getEpisodes().add(episode); + } } public Flag trans() { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index 5588ea153..5d543a69d 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -136,8 +136,8 @@ public class Result implements Parcelable { Result result = new Result(); Class type = new Class(); type.setTypeFlag("1"); - type.setTypeId(item.getVodId()); - type.setTypeName(item.getVodName()); + type.setTypeId(item.getId()); + type.setTypeName(item.getName()); result.setTypes(Arrays.asList(type)); return result; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index 70294f80c..0bb032e07 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.Html; import android.text.TextUtils; +import android.util.Log; import android.view.View; import androidx.annotation.Nullable; @@ -26,6 +27,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.stream.IntStream; @Root(strict = false) public class Vod implements Parcelable, Diffable { @@ -115,19 +117,19 @@ public class Vod implements Parcelable, Diffable { public Vod() { } - public String getVodId() { + public String getId() { return TextUtils.isEmpty(vodId) ? "" : vodId.trim(); } - public void setVodId(String vodId) { + public void setId(String vodId) { this.vodId = vodId; } - public String getVodName() { + public String getName() { return TextUtils.isEmpty(vodName) ? "" : Html.fromHtml(vodName, Html.FROM_HTML_MODE_LEGACY).toString().trim(); } - public void setVodName(String vodName) { + public void setName(String vodName) { this.vodName = vodName; } @@ -135,59 +137,67 @@ public class Vod implements Parcelable, Diffable { return TextUtils.isEmpty(typeName) ? "" : typeName.trim(); } - public String getVodPic() { + public String getPic() { return TextUtils.isEmpty(vodPic) ? "" : vodPic.trim(); } - public void setVodPic(String vodPic) { + public void setPic(String vodPic) { this.vodPic = vodPic; } - public String getVodRemarks() { + public String getRemarks() { return TextUtils.isEmpty(vodRemarks) ? "" : vodRemarks.trim(); } - public String getVodYear() { + public String getYear() { return TextUtils.isEmpty(vodYear) ? "" : vodYear.trim(); } - public String getVodArea() { + public String getArea() { return TextUtils.isEmpty(vodArea) ? "" : vodArea.trim(); } - public String getVodDirector() { + public String getDirector() { return TextUtils.isEmpty(vodDirector) ? "" : vodDirector.trim(); } - public void setVodDirector(String vodDirector) { + public void setDirector(String vodDirector) { this.vodDirector = vodDirector; } - public String getVodActor() { + public String getActor() { return TextUtils.isEmpty(vodActor) ? "" : vodActor.trim(); } - public String getVodContent() { + public String getContent() { return TextUtils.isEmpty(vodContent) ? "" : Util.clean(vodContent); } - public void setVodContent(String vodContent) { + public void setContent(String vodContent) { this.vodContent = vodContent; } - public String getVodPlayFrom() { + public String getPlayFrom() { return TextUtils.isEmpty(vodPlayFrom) ? "" : vodPlayFrom; } - public String getVodPlayUrl() { + public void setPlayFrom(String vodPlayFrom) { + this.vodPlayFrom = vodPlayFrom; + } + + public String getPlayUrl() { return TextUtils.isEmpty(vodPlayUrl) ? "" : vodPlayUrl; } - public String getVodWallpaper() { + public void setPlayUrl(String vodPlayUrl) { + this.vodPlayUrl = vodPlayUrl; + } + + public String getWallpaper() { return TextUtils.isEmpty(vodWallpaper) ? "" : vodWallpaper; } - public String getVodTag() { + public String getTag() { return TextUtils.isEmpty(vodTag) ? "" : vodTag; } @@ -215,11 +225,11 @@ public class Vod implements Parcelable, Diffable { return ratio; } - public List getVodFlags() { + public List getFlags() { return vodFlags = vodFlags == null ? new ArrayList<>() : vodFlags; } - public void setVodFlags(List vodFlags) { + public void setFlags(List vodFlags) { this.vodFlags = vodFlags; } @@ -244,19 +254,19 @@ public class Vod implements Parcelable, Diffable { } public int getYearVisible() { - return getSite() != null || getVodYear().length() < 4 ? View.GONE : View.VISIBLE; + return getSite() != null || getYear().length() < 4 ? View.GONE : View.VISIBLE; } public int getNameVisible() { - return getVodName().isEmpty() ? View.GONE : View.VISIBLE; + return getName().isEmpty() ? View.GONE : View.VISIBLE; } public int getRemarkVisible() { - return getVodRemarks().isEmpty() ? View.GONE : View.VISIBLE; + return getRemarks().isEmpty() ? View.GONE : View.VISIBLE; } public boolean isFolder() { - return "folder".equals(getVodTag()) || getCate() != null; + return "folder".equals(getTag()) || getCate() != null; } public boolean isAction() { @@ -267,14 +277,22 @@ public class Vod implements Parcelable, Diffable { return getStyle() != null ? getStyle() : style != null ? style : Style.rect(); } - public String getVodPic(String pic) { - if (getVodPic().isEmpty()) setVodPic(pic); - return getVodPic(); + public String getPic(String pic) { + if (getPic().isEmpty()) setPic(pic); + return getPic(); } - public String getVodName(String name) { - if (getVodName().isEmpty()) setVodName(name); - return getVodName(); + public String getName(String name) { + if (getName().isEmpty()) setName(name); + return getName(); + } + + public Vod setFlags() { + String[] playUrls = getPlayUrl().split("\\$\\$\\$"); + String[] playFlags = getPlayFrom().split("\\$\\$\\$"); + if (!getFlags().isEmpty()) for (Flag item : getFlags()) item.setEpisodes(item.getUrls()); + else IntStream.range(0, playFlags.length).filter(i -> !playFlags[i].trim().isEmpty() && i < playUrls.length && !TextUtils.isEmpty(playUrls[i])).mapToObj(i -> Flag.create(playFlags[i].trim(), playUrls[i])).forEach(getFlags()::add); + return this; } public Vod trans() { @@ -289,31 +307,16 @@ public class Vod implements Parcelable, Diffable { return this; } - public void setVodFlags() { - String[] playFlags = getVodPlayFrom().split("\\$\\$\\$"); - String[] playUrls = getVodPlayUrl().split("\\$\\$\\$"); - for (int i = 0; i < playFlags.length; i++) { - if (playFlags[i].isEmpty() || i >= playUrls.length) continue; - Flag item = Flag.create(playFlags[i].trim()); - item.createEpisode(playUrls[i]); - getVodFlags().add(item); - } - for (Flag item : getVodFlags()) { - if (item.getUrls() == null) continue; - item.createEpisode(item.getUrls()); - } - } - @Override public boolean equals(@Nullable Object obj) { if (this == obj) return true; if (!(obj instanceof Vod it)) return false; - return !getVodId().isEmpty() && !it.getVodId().isEmpty() ? getVodId().equals(it.getVodId()) : getVodName().equals(it.getVodName()); + return !getId().isEmpty() && !it.getId().isEmpty() ? getId().equals(it.getId()) : getName().equals(it.getName()); } @Override public int hashCode() { - return !getVodId().isEmpty() ? getVodId().hashCode() : getVodName().hashCode(); + return !getId().isEmpty() ? getId().hashCode() : getName().hashCode(); } @Override @@ -389,6 +392,6 @@ public class Vod implements Parcelable, Diffable { @Override public boolean isSameContent(Vod other) { - return getVodName().equals(other.getVodName()) && getVodPic().equals(other.getVodPic()) && getVodRemarks().equals(other.getVodRemarks()) && Objects.equals(getSite(), other.getSite()); + return getName().equals(other.getName()) && getPic().equals(other.getPic()) && getRemarks().equals(other.getRemarks()) && Objects.equals(getSite(), other.getSite()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index 03ead4462..1c2fcaa95 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -144,23 +144,22 @@ public class SiteViewModel extends ViewModel { execute(result, () -> { Site site = VodConfig.get().getSite(key); SpiderDebug.log("detail", "key=%s,id=%s", key, id); - if (site.getType() == 3) { + if (site.isEmpty() && "push_agent".equals(key)) { + Vod vod = new Vod(); + vod.setId(id); + vod.setName(id); + vod.setPlayUrl(id); + vod.setPlayFrom(ResUtil.getString(R.string.push)); + vod.setPic(ResUtil.getString(R.string.push_image)); + Source.get().parse(vod.setFlags()); + return Result.vod(vod); + } else if (site.getType() == 3) { Spider spider = site.recent().spider(); String detailContent = spider.detailContent(Arrays.asList(id)); SpiderDebug.log("detail", detailContent); Result result = Result.fromJson(detailContent); - if (result.getList().isEmpty()) return result; - result.getVod().setVodFlags(); - Source.get().parse(result.getVod()); + Source.get().parse(result.getVod().setFlags()); return result; - } else if (site.isEmpty() && "push_agent".equals(key)) { - Vod vod = new Vod(); - vod.setVodId(id); - vod.setVodName(id); - vod.setVodPic(ResUtil.getString(R.string.push_image)); - vod.setVodFlags(Flag.create(ResUtil.getString(R.string.push), id)); - Source.get().parse(vod); - return Result.vod(vod); } else { ArrayMap params = new ArrayMap<>(); params.put("ac", site.getType() == 0 ? "videolist" : "detail"); @@ -168,9 +167,7 @@ public class SiteViewModel extends ViewModel { String detailContent = call(site, params); SpiderDebug.log("detail", detailContent); Result result = Result.fromType(site.getType(), detailContent); - if (result.getList().isEmpty()) return result; - result.getVod().setVodFlags(); - Source.get().parse(result.getVod()); + Source.get().parse(result.getVod().setFlags()); return result; } }); @@ -253,10 +250,10 @@ public class SiteViewModel extends ViewModel { } public Result fetchPic(Site site, Result result) throws Exception { - if (site.getType() > 2 || result.getList().isEmpty() || !result.getVod().getVodPic().isEmpty()) return result; + if (site.getType() > 2 || result.getList().isEmpty() || !result.getVod().getPic().isEmpty()) return result; ArrayList ids = new ArrayList<>(); boolean empty = site.getCategories().isEmpty(); - for (Vod item : result.getList()) if (empty || site.getCategories().contains(item.getTypeName())) ids.add(item.getVodId()); + for (Vod item : result.getList()) if (empty || site.getCategories().contains(item.getTypeName())) ids.add(item.getId()); if (ids.isEmpty()) return result.clear(); ArrayMap params = new ArrayMap<>(); params.put("ac", site.getType() == 0 ? "videolist" : "detail"); diff --git a/app/src/main/java/com/fongmi/android/tv/player/Source.java b/app/src/main/java/com/fongmi/android/tv/player/Source.java index 43e3343c4..1a54ce089 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Source.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Source.java @@ -66,7 +66,7 @@ public class Source { public void parse(Vod vod) throws Exception { try (ExecutorService executor = Executors.newCachedThreadPool()) { - for (Flag flag : vod.getVodFlags()) { + for (Flag flag : vod.getFlags()) { List>> items = new ArrayList<>(); Iterator iterator = flag.getEpisodes().iterator(); while (iterator.hasNext()) addCallable(iterator, items); diff --git a/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java b/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java index f078b652b..dae12957c 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java +++ b/app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java @@ -55,15 +55,15 @@ public class Youtube implements Source.Extractor { private Vod convert(StreamInfo info) { try { Vod vod = new Vod(); - vod.setVodName(info.getName()); - vod.setVodDirector(info.getUploaderName()); - vod.setVodContent(info.getDescription().getContent()); - vod.setVodPic(info.getThumbnails().get(info.getThumbnails().size() - 1).getUrl()); + vod.setName(info.getName()); + vod.setDirector(info.getUploaderName()); + vod.setContent(info.getDescription().getContent()); + vod.setPic(info.getThumbnails().get(info.getThumbnails().size() - 1).getUrl()); return vod; } catch (Exception e) { Vod vod = new Vod(); - vod.setVodName(info.getName()); - vod.setVodContent(info.getDescription().getContent()); + vod.setName(info.getName()); + vod.setContent(info.getDescription().getContent()); return vod; } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 60de0b917..c60cf8341 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -439,8 +439,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void getDetail(Vod item) { getIntent().putExtra("key", item.getSiteKey()); - getIntent().putExtra("pic", item.getVodPic()); - getIntent().putExtra("id", item.getVodId()); + getIntent().putExtra("pic", item.getPic()); + getIntent().putExtra("id", item.getId()); mBinding.swipeLayout.setRefreshing(true); mBinding.swipeLayout.setEnabled(false); mBinding.scroll.scrollTo(0, 0); @@ -478,15 +478,15 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void setDetail(Vod item) { mBinding.progressLayout.showContent(); - mBinding.video.setTag(item.getVodPic(getPic())); - mBinding.name.setText(item.getVodName(getName())); - setText(mBinding.remark, 0, item.getVodRemarks()); - setText(mBinding.content, 0, item.getVodContent()); + mBinding.video.setTag(item.getPic(getPic())); + mBinding.name.setText(item.getName(getName())); + setText(mBinding.remark, 0, item.getRemarks()); + setText(mBinding.content, 0, item.getContent()); setText(mBinding.site, R.string.detail_site, getSite().getName()); - setText(mBinding.actor, R.string.detail_actor, item.getVodActor()); - setText(mBinding.director, R.string.detail_director, item.getVodDirector()); + setText(mBinding.actor, R.string.detail_actor, item.getActor()); + setText(mBinding.director, R.string.detail_director, item.getDirector()); mBinding.contentLayout.setVisibility(mBinding.content.getVisibility()); - mFlagAdapter.addAll(item.getVodFlags()); + mFlagAdapter.addAll(item.getFlags()); setOther(mBinding.other, item); App.removeCallbacks(mR4); checkHistory(item); @@ -533,8 +533,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void setOther(TextView view, Vod item) { StringBuilder sb = new StringBuilder(); - if (!item.getVodYear().isEmpty()) sb.append(getString(R.string.detail_year, item.getVodYear())).append(" "); - if (!item.getVodArea().isEmpty()) sb.append(getString(R.string.detail_area, item.getVodArea())).append(" "); + if (!item.getYear().isEmpty()) sb.append(getString(R.string.detail_year, item.getYear())).append(" "); + if (!item.getArea().isEmpty()) sb.append(getString(R.string.detail_area, item.getArea())).append(" "); if (!item.getTypeName().isEmpty()) sb.append(getString(R.string.detail_type, item.getTypeName())).append(" "); view.setVisibility(sb.length() == 0 ? View.GONE : View.VISIBLE); view.setText(Util.substring(sb.toString(), 2)); @@ -1013,7 +1013,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void checkFlag(Vod item) { - boolean empty = item.getVodFlags().isEmpty(); + boolean empty = item.getFlags().isEmpty(); mBinding.flag.setVisibility(empty ? View.GONE : View.VISIBLE); if (empty) { ErrorEvent.flag(tag); @@ -1031,8 +1031,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.action.opening.setText(mHistory.getOpening() <= 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); mBinding.control.action.ending.setText(mHistory.getEnding() <= 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); mBinding.control.action.speed.setText(mPlayers.setSpeed(mHistory.getSpeed())); - mHistory.setVodName(item.getVodName()); - mHistory.setVodPic(item.getVodPic()); + mHistory.setVodName(item.getName()); + mHistory.setVodPic(item.getPic()); setScale(getScale()); setMetadata(); setArtwork(); @@ -1042,8 +1042,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo History history = new History(); history.setKey(getHistoryKey()); history.setCid(VodConfig.getCid()); - history.setVodName(item.getVodName()); - history.findEpisode(item.getVodFlags()); + history.setVodName(item.getName()); + history.findEpisode(item.getFlags()); return history; } @@ -1104,12 +1104,12 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void updateVod(Vod item) { - mHistory.setVodPic(item.getVodPic()); - mHistory.setVodName(item.getVodName()); - mBinding.name.setText(item.getVodName()); - mBinding.control.title.setText(item.getVodName()); - setText(mBinding.content, 0, item.getVodContent()); - setText(mBinding.director, R.string.detail_director, item.getVodDirector()); + mHistory.setVodPic(item.getPic()); + mHistory.setVodName(item.getName()); + mBinding.name.setText(item.getName()); + mBinding.control.title.setText(item.getName()); + setText(mBinding.content, 0, item.getContent()); + setText(mBinding.director, R.string.detail_director, item.getDirector()); mBinding.contentLayout.setVisibility(mBinding.content.getVisibility()); updateKeep(); setArtwork(); @@ -1333,11 +1333,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private boolean mismatch(Vod item) { - if (getId().equals(item.getVodId())) return true; - if (mBroken.contains(item.getVodId())) return true; + if (getId().equals(item.getId())) return true; + if (mBroken.contains(item.getId())) return true; String keyword = mBinding.name.getText().toString(); - if (isAutoMode()) return !item.getVodName().equals(keyword); - else return !item.getVodName().contains(keyword); + if (isAutoMode()) return !item.getName().equals(keyword); + else return !item.getName().contains(keyword); } private void nextParse(int position) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QuickAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QuickAdapter.java index 0eb2106b1..b0abb8361 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QuickAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/QuickAdapter.java @@ -65,9 +65,9 @@ public class QuickAdapter extends RecyclerView.Adapter @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Vod item = mItems.get(position); - holder.binding.name.setText(item.getVodName()); + holder.binding.name.setText(item.getName()); holder.binding.site.setText(item.getSiteName()); - holder.binding.remark.setText(item.getVodRemarks()); + holder.binding.remark.setText(item.getRemarks()); holder.binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SearchAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SearchAdapter.java index 0e696d180..7fe23a7c8 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SearchAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SearchAdapter.java @@ -33,13 +33,13 @@ public class SearchAdapter extends BaseDiffAdapter listener.onItemClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), holder.binding.image); + ImgUtil.load(item.getName(), item.getPic(), holder.binding.image); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index 9760f3d68..2eaa7267d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -159,7 +159,7 @@ public class CollectFragment extends BaseFragment implements MenuProvider, Colle @Override public void onItemClick(Vod item) { if (item.isFolder()) FolderActivity.start(requireActivity(), item.getSiteKey(), Result.folder(item)); - else VideoActivity.collect(requireActivity(), item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + else VideoActivity.collect(requireActivity(), item.getSiteKey(), item.getId(), item.getName(), item.getPic()); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index 0fe31e8ef..1db998c77 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -193,17 +193,17 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac if (item.isAction()) { mViewModel.action(getKey(), item.getAction()); } else if (item.isFolder()) { - getParent().openFolder(item.getVodId(), mExtends); + getParent().openFolder(item.getId(), mExtends); } else { - if (getSite().isIndex()) SearchActivity.start(requireActivity(), item.getVodName()); - else VideoActivity.start(requireActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), isFolder() ? item.getVodName() : null); + if (getSite().isIndex()) SearchActivity.start(requireActivity(), item.getName()); + else VideoActivity.start(requireActivity(), getKey(), item.getId(), item.getName(), item.getPic(), isFolder() ? item.getName() : null); } } @Override public boolean onLongClick(Vod item) { if (item.isAction() || item.isFolder()) return false; - SearchActivity.start(requireActivity(), item.getVodName()); + SearchActivity.start(requireActivity(), item.getName()); return true; } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java index d934e86d5..e7590021d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java @@ -22,13 +22,13 @@ public class VodListHolder extends BaseVodHolder { @Override public void initView(Vod item) { - binding.name.setText(item.getVodName()); - binding.remark.setText(item.getVodRemarks()); + binding.name.setText(item.getName()); + binding.remark.setText(item.getRemarks()); binding.name.setVisibility(item.getNameVisible()); binding.remark.setVisibility(item.getRemarkVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image); + ImgUtil.load(item.getName(), item.getPic(), binding.image); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java index 03062afca..1edf43000 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java @@ -28,11 +28,11 @@ public class VodOvalHolder extends BaseVodHolder { @Override public void initView(Vod item) { - binding.name.setText(item.getVodName()); + binding.name.setText(item.getName()); binding.name.setVisibility(item.getNameVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image); + ImgUtil.load(item.getName(), item.getPic(), binding.image); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java index 24a79c075..e7ac43bd4 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodRectHolder.java @@ -28,17 +28,17 @@ public class VodRectHolder extends BaseVodHolder { @Override public void initView(Vod item) { - binding.name.setText(item.getVodName()); - binding.year.setText(item.getVodYear()); + binding.name.setText(item.getName()); + binding.year.setText(item.getYear()); binding.site.setText(item.getSiteName()); - binding.remark.setText(item.getVodRemarks()); + binding.remark.setText(item.getRemarks()); binding.site.setVisibility(item.getSiteVisible()); binding.name.setVisibility(item.getNameVisible()); binding.year.setVisibility(item.getYearVisible()); binding.remark.setVisibility(item.getRemarkVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image); + ImgUtil.load(item.getName(), item.getPic(), binding.image); } @Override