From eede028c96042e6abc18377bf16a75e4806aba4a Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 25 Nov 2023 23:30:15 +0200 Subject: [PATCH 1/7] fix(YouTube - Spoof signature): fix error toast when viewing very old YouTube videos (#525) --- .../patches/spoof/SpoofSignaturePatch.java | 12 +++++++++++- .../patches/spoof/StoryboardRenderer.java | 6 +++--- .../spoof/requests/StoryboardRendererRequester.java | 12 ++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/spoof/SpoofSignaturePatch.java b/app/src/main/java/app/revanced/integrations/patches/spoof/SpoofSignaturePatch.java index 114640e1..93ca4c4d 100644 --- a/app/src/main/java/app/revanced/integrations/patches/spoof/SpoofSignaturePatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/spoof/SpoofSignaturePatch.java @@ -169,7 +169,17 @@ public class SpoofSignaturePatch { * if {@link SettingsEnum#SPOOF_STORYBOARD_RENDERER} is not enabled. */ public static boolean getSeekbarThumbnailOverrideValue() { - return SettingsEnum.SPOOF_SIGNATURE.getBoolean(); + if (!SettingsEnum.SPOOF_SIGNATURE.getBoolean()) { + return false; + } + StoryboardRenderer renderer = videoRenderer; + if (renderer == null) { + // Spoof storyboard renderer is turned off, + // video is paid, or the storyboard fetch timed out. + // Show empty thumbnails so the seek time and chapters still show up. + return true; + } + return renderer.getSpec() != null; } /** diff --git a/app/src/main/java/app/revanced/integrations/patches/spoof/StoryboardRenderer.java b/app/src/main/java/app/revanced/integrations/patches/spoof/StoryboardRenderer.java index 32f5608c..3adc5f67 100644 --- a/app/src/main/java/app/revanced/integrations/patches/spoof/StoryboardRenderer.java +++ b/app/src/main/java/app/revanced/integrations/patches/spoof/StoryboardRenderer.java @@ -1,23 +1,23 @@ package app.revanced.integrations.patches.spoof; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.jetbrains.annotations.NotNull; public final class StoryboardRenderer { + @Nullable private final String spec; private final boolean isLiveStream; @Nullable private final Integer recommendedLevel; - public StoryboardRenderer(String spec, boolean isLiveStream, @Nullable Integer recommendedLevel) { + public StoryboardRenderer(@Nullable String spec, boolean isLiveStream, @Nullable Integer recommendedLevel) { this.spec = spec; this.isLiveStream = isLiveStream; this.recommendedLevel = recommendedLevel; } - @NonNull + @Nullable public String getSpec() { return spec; } diff --git a/app/src/main/java/app/revanced/integrations/patches/spoof/requests/StoryboardRendererRequester.java b/app/src/main/java/app/revanced/integrations/patches/spoof/requests/StoryboardRendererRequester.java index addae2d7..f5f7ce27 100644 --- a/app/src/main/java/app/revanced/integrations/patches/spoof/requests/StoryboardRendererRequester.java +++ b/app/src/main/java/app/revanced/integrations/patches/spoof/requests/StoryboardRendererRequester.java @@ -24,6 +24,14 @@ import app.revanced.integrations.utils.ReVancedUtils; public class StoryboardRendererRequester { + /** + * For videos that have no storyboard. + * Usually for low resolution videos as old as YouTube itself. + * Does not include paid videos where the renderer fetch fails. + */ + private static final StoryboardRenderer emptyStoryboard + = new StoryboardRenderer(null, false, null); + private StoryboardRendererRequester() { } @@ -105,6 +113,10 @@ public class StoryboardRendererRequester { private static StoryboardRenderer getStoryboardRendererUsingResponse(@NonNull JSONObject playerResponse) { try { LogHelper.printDebug(() -> "Parsing response: " + playerResponse); + if (!playerResponse.has("storyboards")) { + LogHelper.printDebug(() -> "Using empty storyboard"); + return emptyStoryboard; + } final JSONObject storyboards = playerResponse.getJSONObject("storyboards"); final boolean isLiveStream = storyboards.has("playerLiveStoryboardSpecRenderer"); final String storyboardsRendererTag = isLiveStream From b514bdd7d067bdccc2b5d8171a5434001265430a Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 25 Nov 2023 21:32:51 +0000 Subject: [PATCH 2/7] chore(release): 0.124.1-dev.1 [skip ci] ## [0.124.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v0.124.0...v0.124.1-dev.1) (2023-11-25) ### Bug Fixes * **YouTube - Spoof signature:** fix error toast when viewing very old YouTube videos ([#525](https://github.com/ReVanced/revanced-integrations/issues/525)) ([eede028](https://github.com/ReVanced/revanced-integrations/commit/eede028c96042e6abc18377bf16a75e4806aba4a)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 633c3dec..56bb9a7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.124.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v0.124.0...v0.124.1-dev.1) (2023-11-25) + + +### Bug Fixes + +* **YouTube - Spoof signature:** fix error toast when viewing very old YouTube videos ([#525](https://github.com/ReVanced/revanced-integrations/issues/525)) ([eede028](https://github.com/ReVanced/revanced-integrations/commit/eede028c96042e6abc18377bf16a75e4806aba4a)) + # [0.124.0](https://github.com/ReVanced/revanced-integrations/compare/v0.123.0...v0.124.0) (2023-11-23) diff --git a/gradle.properties b/gradle.properties index f1d8bcb6..e42bf29f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true android.useAndroidX = true -version = 0.124.0 +version = 0.124.1-dev.1 From 11abdf162f1a4c82a2330b16ca42800d8599c215 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 26 Nov 2023 23:25:59 +0200 Subject: [PATCH 3/7] fix(YouTube - Return YouTube dislike): Fix layout of right to left languages --- .../integrations/patches/ReturnYouTubeDislikePatch.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java b/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java index 075a0300..f69340d2 100644 --- a/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java @@ -335,9 +335,13 @@ public class ReturnYouTubeDislikePatch { // YouTube Rolling Numbers do not use compound drawables or drawable padding. if (view.getCompoundDrawablePadding() == 0) { LogHelper.printDebug(() -> "Adding rolling number TextView changes"); - ShapeDrawable leftSeparator = ReturnYouTubeDislike.getLeftSeparatorDrawable(); - view.setCompoundDrawables(leftSeparator, null, null, null); view.setCompoundDrawablePadding(ReturnYouTubeDislike.leftSeparatorShapePaddingPixels); + ShapeDrawable separator = ReturnYouTubeDislike.getLeftSeparatorDrawable(); + if (ReVancedUtils.isRightToLeftTextLayout()) { + view.setCompoundDrawables(null, null, separator, null); + } else { + view.setCompoundDrawables(separator, null, null, null); + } } } From b2d9dcd6c0bfba6045e5c66407446b53d05ad005 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 26 Nov 2023 22:27:00 +0000 Subject: [PATCH 4/7] chore(release): 0.124.1-dev.2 [skip ci] ## [0.124.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v0.124.1-dev.1...v0.124.1-dev.2) (2023-11-26) ### Bug Fixes * **YouTube - Return YouTube dislike:** Fix layout of right to left languages ([11abdf1](https://github.com/ReVanced/revanced-integrations/commit/11abdf162f1a4c82a2330b16ca42800d8599c215)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56bb9a7f..282b473f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.124.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v0.124.1-dev.1...v0.124.1-dev.2) (2023-11-26) + + +### Bug Fixes + +* **YouTube - Return YouTube dislike:** Fix layout of right to left languages ([11abdf1](https://github.com/ReVanced/revanced-integrations/commit/11abdf162f1a4c82a2330b16ca42800d8599c215)) + ## [0.124.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v0.124.0...v0.124.1-dev.1) (2023-11-25) diff --git a/gradle.properties b/gradle.properties index e42bf29f..2d56eb02 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true android.useAndroidX = true -version = 0.124.1-dev.1 +version = 0.124.1-dev.2 From 6520499a2792bc0aeb1e4bd30be0ca211ac2e78e Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 27 Nov 2023 18:40:49 +0100 Subject: [PATCH 5/7] refactor: Use a newline consistently --- .../patches/components/LayoutComponentsFilter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java b/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java index f11f43b8..ca7b6292 100644 --- a/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java +++ b/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java @@ -263,10 +263,12 @@ public final class LayoutComponentsFilter extends Filter { if (mixPlaylistsExceptions.matches(conversionContext.toString())) return false; - if (!mixPlaylists.check(bytes).isFiltered()) return false; + if (!mixPlaylists.check(bytes).isFiltered()) + return false; // Prevent hiding the description of some videos accidentally. - if (mixPlaylistsExceptions2.check(bytes).isFiltered()) return false; + if (mixPlaylistsExceptions2.check(bytes).isFiltered()) + return false; LogHelper.printDebug(() -> "Filtered mix playlist"); return true; From c2112e066af31890c5d441870d24f3582e9b1dd1 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 27 Nov 2023 20:02:59 +0100 Subject: [PATCH 6/7] fix(YouTube - Hide layout components): Prevent app from crashing on startup The application crashes sporadically when a field is not initialized yet in a static context. --- .../components/LayoutComponentsFilter.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java b/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java index ca7b6292..a66bb133 100644 --- a/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java +++ b/app/src/main/java/app/revanced/integrations/patches/components/LayoutComponentsFilter.java @@ -12,8 +12,10 @@ import app.revanced.integrations.utils.StringTrieSearch; public final class LayoutComponentsFilter extends Filter { private final StringTrieSearch exceptions = new StringTrieSearch(); private static final StringTrieSearch mixPlaylistsExceptions = new StringTrieSearch(); - private static ByteArrayAsStringFilterGroup mixPlaylistsExceptions2; - + private static final ByteArrayAsStringFilterGroup mixPlaylistsExceptions2 = new ByteArrayAsStringFilterGroup( + null, + "cell_description_body" + ); private final CustomFilterGroup custom; private static final ByteArrayAsStringFilterGroup mixPlaylists = new ByteArrayAsStringFilterGroup( @@ -25,6 +27,13 @@ public final class LayoutComponentsFilter extends Filter { private final StringFilterGroup notifyMe; private final StringFilterGroup expandableMetadata; + static { + mixPlaylistsExceptions.addPatterns( + "V.ED", // Playlist browse id. + "java.lang.ref.WeakReference" + ); + } + @RequiresApi(api = Build.VERSION_CODES.N) public LayoutComponentsFilter() { exceptions.addPatterns( @@ -35,16 +44,6 @@ public final class LayoutComponentsFilter extends Filter { "library_recent_shelf" ); - mixPlaylistsExceptions.addPatterns( - "V.ED", // Playlist browse id. - "java.lang.ref.WeakReference" - ); - - mixPlaylistsExceptions2 = new ByteArrayAsStringFilterGroup( - null, - "cell_description_body" - ); - custom = new CustomFilterGroup( SettingsEnum.CUSTOM_FILTER, SettingsEnum.CUSTOM_FILTER_STRINGS @@ -272,7 +271,6 @@ public final class LayoutComponentsFilter extends Filter { LogHelper.printDebug(() -> "Filtered mix playlist"); return true; - } public static boolean showWatermark() { From 3ba3d5108d2720e666d7297b32a6a619bcdc0f79 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 27 Nov 2023 19:06:27 +0000 Subject: [PATCH 7/7] chore(release): 0.124.1-dev.3 [skip ci] ## [0.124.1-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v0.124.1-dev.2...v0.124.1-dev.3) (2023-11-27) ### Bug Fixes * **YouTube - Hide layout components:** Prevent app from crashing on startup ([c2112e0](https://github.com/ReVanced/revanced-integrations/commit/c2112e066af31890c5d441870d24f3582e9b1dd1)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 282b473f..f7854524 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [0.124.1-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v0.124.1-dev.2...v0.124.1-dev.3) (2023-11-27) + + +### Bug Fixes + +* **YouTube - Hide layout components:** Prevent app from crashing on startup ([c2112e0](https://github.com/ReVanced/revanced-integrations/commit/c2112e066af31890c5d441870d24f3582e9b1dd1)) + ## [0.124.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v0.124.1-dev.1...v0.124.1-dev.2) (2023-11-26) diff --git a/gradle.properties b/gradle.properties index 2d56eb02..96ba6d22 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true android.useAndroidX = true -version = 0.124.1-dev.2 +version = 0.124.1-dev.3