From 7023e5b323f3065274e92072dad888b65841f78a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ho=C3=A0ng=20Gia=20B=E1=BA=A3o?= <70064328+YT-Advanced@users.noreply.github.com> Date: Sun, 15 Dec 2024 13:33:50 +0700 Subject: [PATCH] feat(YouTube - Overlay buttons): Add missing `ALL_CONTENTS_WITH_TIME_ASCENDING` type (#105) * Add `ALL_CONTENTS_WITH_TIME_ASCENDING` type * Rewrite function * Update arrays.xml * Update strings.xml * Update strings.xml * chore: Simplify * fix: Apply code review suggestions --------- Co-authored-by: inotia00 <108592928+inotia00@users.noreply.github.com> --- .../youtube/shared/PlaylistIdPrefix.java | 33 +++++++++------ .../extension/youtube/utils/VideoUtils.java | 40 ++++++++++--------- .../youtube/settings/host/values/arrays.xml | 2 + .../youtube/settings/host/values/strings.xml | 3 +- 4 files changed, 45 insertions(+), 33 deletions(-) diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlaylistIdPrefix.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlaylistIdPrefix.java index 456a56143..2197c3eaf 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlaylistIdPrefix.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/shared/PlaylistIdPrefix.java @@ -7,18 +7,19 @@ public enum PlaylistIdPrefix { * To check all available prefixes, * See this document. */ - ALL_CONTENTS_WITH_TIME_DESCENDING("UU"), - ALL_CONTENTS_WITH_POPULAR_DESCENDING("PU"), - VIDEOS_ONLY_WITH_TIME_DESCENDING("UULF"), - VIDEOS_ONLY_WITH_POPULAR_DESCENDING("UULP"), - SHORTS_ONLY_WITH_TIME_DESCENDING("UUSH"), - SHORTS_ONLY_WITH_POPULAR_DESCENDING("UUPS"), - LIVESTREAMS_ONLY_WITH_TIME_DESCENDING("UULV"), - LIVESTREAMS_ONLY_WITH_POPULAR_DESCENDING("UUPV"), - ALL_MEMBERSHIPS_CONTENTS("UUMO"), - MEMBERSHIPS_VIDEOS_ONLY("UUMF"), - MEMBERSHIPS_SHORTS_ONLY("UUMS"), - MEMBERSHIPS_LIVESTREAMS_ONLY("UUMV"); + ALL_CONTENTS_WITH_TIME_ASCENDING("UL", false), + ALL_CONTENTS_WITH_TIME_DESCENDING("UU", true), + ALL_CONTENTS_WITH_POPULAR_DESCENDING("PU", true), + VIDEOS_ONLY_WITH_TIME_DESCENDING("UULF", true), + VIDEOS_ONLY_WITH_POPULAR_DESCENDING("UULP", true), + SHORTS_ONLY_WITH_TIME_DESCENDING("UUSH", true), + SHORTS_ONLY_WITH_POPULAR_DESCENDING("UUPS", true), + LIVESTREAMS_ONLY_WITH_TIME_DESCENDING("UULV", true), + LIVESTREAMS_ONLY_WITH_POPULAR_DESCENDING("UUPV", true), + ALL_MEMBERSHIPS_CONTENTS("UUMO", true), + MEMBERSHIPS_VIDEOS_ONLY("UUMF", true), + MEMBERSHIPS_SHORTS_ONLY("UUMS", true), + MEMBERSHIPS_LIVESTREAMS_ONLY("UUMV", true); /** * Prefix of playlist id. @@ -26,7 +27,13 @@ public enum PlaylistIdPrefix { @NonNull public final String prefixId; - PlaylistIdPrefix(@NonNull String prefixId) { + /** + * Whether to use channelId. + */ + public final boolean useChannelId; + + PlaylistIdPrefix(@NonNull String prefixId, boolean useChannelId) { this.prefixId = prefixId; + this.useChannelId = useChannelId; } } diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/VideoUtils.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/VideoUtils.java index 686e105fd..371f0645a 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/VideoUtils.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/utils/VideoUtils.java @@ -7,7 +7,6 @@ import static app.revanced.extension.youtube.patches.video.PlaybackSpeedPatch.us import android.app.AlertDialog; import android.content.Context; import android.media.AudioManager; -import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; @@ -128,34 +127,37 @@ public class VideoUtils extends IntentUtils { } public static void openVideo(@NonNull String videoId) { - openVideo(getVideoScheme(videoId, false), ""); + openVideo(getVideoScheme(videoId, false), false, null); } public static void openVideo(@NonNull String videoId, boolean isShorts) { - openVideo(getVideoScheme(videoId, isShorts), ""); + openVideo(getVideoScheme(videoId, isShorts), isShorts, null); } - public static void openVideo(@NonNull PlaylistIdPrefix prefixId) { - openVideo(getVideoScheme(), prefixId.prefixId); + public static void openVideo(@NonNull PlaylistIdPrefix playlistIdPrefix) { + openVideo(getVideoScheme(), false, playlistIdPrefix); } - /** - * Create playlist with all channel videos. - */ - public static void openVideo(@NonNull String videoScheme, @NonNull String prefixId) { - if (!TextUtils.isEmpty(prefixId)) { - final String channelId = VideoInformation.getChannelId(); - // Channel id always starts with `UC` prefix - if (!channelId.startsWith("UC")) { - showToastShort(str("revanced_overlay_button_play_all_not_available_toast")); - return; + public static void openVideo(@NonNull String videoId, boolean isShorts, @Nullable PlaylistIdPrefix playlistIdPrefix) { + final StringBuilder sb = new StringBuilder(getVideoScheme(videoId, isShorts)); + // Create playlist with all channel videos. + if (playlistIdPrefix != null) { + sb.append("&list="); + sb.append(playlistIdPrefix.prefixId); + if (playlistIdPrefix.useChannelId) { + final String channelId = VideoInformation.getChannelId(); + // Channel id always starts with `UC` prefix + if (!channelId.startsWith("UC")) { + showToastShort(str("revanced_overlay_button_play_all_not_available_toast")); + return; + } + sb.append(channelId.substring(2)); + } else { + sb.append(videoId); } - videoScheme += "&list=" + prefixId + channelId.substring(2); } - final String finalVideoScheme = videoScheme; - Logger.printInfo(() -> finalVideoScheme); - launchView(videoScheme, getContext().getPackageName()); + launchView(sb.toString(), getContext().getPackageName()); } /** diff --git a/patches/src/main/resources/youtube/settings/host/values/arrays.xml b/patches/src/main/resources/youtube/settings/host/values/arrays.xml index 41b3ffd44..8420fed1d 100644 --- a/patches/src/main/resources/youtube/settings/host/values/arrays.xml +++ b/patches/src/main/resources/youtube/settings/host/values/arrays.xml @@ -136,6 +136,7 @@ https://github.com/deniscerri/ytdlnis/releases/latest + @string/revanced_overlay_button_play_all_type_entry_0 @string/revanced_overlay_button_play_all_type_entry_1 @string/revanced_overlay_button_play_all_type_entry_2 @string/revanced_overlay_button_play_all_type_entry_3 @@ -150,6 +151,7 @@ @string/revanced_overlay_button_play_all_type_entry_12 + ALL_CONTENTS_WITH_TIME_ASCENDING ALL_CONTENTS_WITH_TIME_DESCENDING ALL_CONTENTS_WITH_POPULAR_DESCENDING VIDEOS_ONLY_WITH_TIME_DESCENDING diff --git a/patches/src/main/resources/youtube/settings/host/values/strings.xml b/patches/src/main/resources/youtube/settings/host/values/strings.xml index 3d09c0b93..bc871b68b 100644 --- a/patches/src/main/resources/youtube/settings/host/values/strings.xml +++ b/patches/src/main/resources/youtube/settings/host/values/strings.xml @@ -1057,6 +1057,7 @@ Tap and hold to undo. Info: • May not work on livestreams." Generate playlist mode + All contents (Sort by time, Ascending) All contents (Sort by time) All contents (Sort by popular) Videos only (Sort by time) @@ -1948,4 +1949,4 @@ AVC (H.264) has a maximum resolution of 1080p, and video playback will use more Excluded Included Stock - \ No newline at end of file +