Skip to content

Commit

Permalink
Update LithoFilter to support Youtube version 20.0.37
Browse files Browse the repository at this point in the history
Update EnableExclusiveAudioPlayback to support Youtube Music version 8.02.53
Sync AdsFilter ReVanced/revanced-patches@13c7592
  • Loading branch information
chsbuffer committed Jan 24, 2025
1 parent 12aebaf commit 6e96ab4
Show file tree
Hide file tree
Showing 20 changed files with 97 additions and 80 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@
.externalNativeBuild
.cxx
local.properties
.kotlin
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Compatibility & Patches

## Youtube Music
Youtube Music tested version: 7.11.50
Youtube Music tested version: 7.11.50, 8.02.53
Patches:
- HideMusicVideoAds
- MinimizedPlayback
Expand All @@ -10,7 +10,7 @@ Patches:
- EnableExclusiveAudioPlayback

## Youtube
Youtube tested version: 19.29.37
Youtube tested version: 19.29.37, 20.03.37
Patches:
- VideoAds
- BackgroundPlayback
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package app.revanced.integrations.shared;
package app.revanced.extension.shared;

import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG;
import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG_STACKTRACE;
import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG_TOAST_ON_ERROR;
import static app.revanced.extension.shared.settings.BaseSettings.DEBUG;
import static app.revanced.extension.shared.settings.BaseSettings.DEBUG_STACKTRACE;
import static app.revanced.extension.shared.settings.BaseSettings.DEBUG_TOAST_ON_ERROR;

import android.util.Log;

Expand All @@ -12,7 +12,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;

import app.revanced.integrations.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.BaseSettings;

public class Logger {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.shared;
package app.revanced.extension.shared;

import android.annotation.SuppressLint;
import android.content.Context;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.shared.settings;
package app.revanced.extension.shared.settings;

import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.shared.settings;
package app.revanced.extension.shared.settings;

public class BooleanSetting extends Setting<Boolean> {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.shared.settings;
package app.revanced.extension.shared.settings;

public class Setting<T> {
T value;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.youtube;
package app.revanced.extension.youtube;

import androidx.annotation.NonNull;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.youtube;
package app.revanced.extension.youtube;

import androidx.annotation.NonNull;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.youtube;
package app.revanced.extension.youtube;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package app.revanced.integrations.youtube.patches.components;
package app.revanced.extension.youtube.patches.components;

import android.app.Instrumentation;
import android.view.KeyEvent;
import android.view.View;

import androidx.annotation.Nullable;

import app.revanced.integrations.youtube.settings.Settings;
import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.Utils;
import app.revanced.integrations.youtube.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.StringTrieSearch;
import kotlin.NotImplementedError;

@SuppressWarnings("unused")
public final class AdsFilter extends Filter {
Expand All @@ -22,6 +23,9 @@ public final class AdsFilter extends Filter {

private final StringTrieSearch exceptions = new StringTrieSearch();

private final StringFilterGroup playerShoppingShelf;
private final ByteArrayFilterGroup playerShoppingShelfBuffer;

private final StringFilterGroup channelProfile;
private final ByteArrayFilterGroup visitStoreButton;

Expand Down Expand Up @@ -77,25 +81,29 @@ public AdsFilter() {
"text_image_button_layout",
"primetime_promo",
"product_details",
"composite_concurrent_carousel_layout",
"carousel_headered_layout",
"full_width_portrait_image_layout",
"brand_video_shelf"
"brand_video_shelf",
"brand_video_singleton"
);

// final var movieAds = new StringFilterGroup(
// Settings.HIDE_MOVIES_SECTION,
// "browsy_bar",
// "compact_movie",
// "horizontal_movie_shelf",
// "movie_and_show_upsell_card",
// "compact_tvfilm_item",
// "offer_module_root"
// );
final var movieAds = new StringFilterGroup(
Settings.HIDE_MOVIES_SECTION,
"browsy_bar",
"compact_movie",
"horizontal_movie_shelf",
"movie_and_show_upsell_card",
"compact_tvfilm_item",
"offer_module_root"
);

final var viewProducts = new StringFilterGroup(
Settings.HIDE_PRODUCTS_BANNER,
"product_item",
"products_in_video"
"products_in_video",
"shopping_overlay.eml", // Video player overlay shopping links.
"shopping_carousel.eml" // Channel profile shopping shelf.
);

shoppingLinks = new StringFilterGroup(
Expand All @@ -108,6 +116,16 @@ public AdsFilter() {
"channel_profile.eml"
);

playerShoppingShelf = new StringFilterGroup(
null,
"horizontal_shelf.eml"
);

playerShoppingShelfBuffer = new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_STORE_SHELF,
"shopping_item_card_list.eml"
);

visitStoreButton = new ByteArrayFilterGroup(
Settings.HIDE_VISIT_STORE_BUTTON,
"header_store_button"
Expand Down Expand Up @@ -137,14 +155,22 @@ public AdsFilter() {
fullscreenAd,
channelProfile,
webLinkPanel,
shoppingLinks
// movieAds
shoppingLinks,
playerShoppingShelf,
movieAds
);
}

@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == playerShoppingShelf) {
if (contentIndex == 0 && playerShoppingShelfBuffer.check(protobufBufferArray).isFiltered()) {
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
}
return false;
}

if (exceptions.matches(path))
return false;

Expand All @@ -168,18 +194,15 @@ boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBuff
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
}

/*
*/
/**
/**
* Hide the view, which shows ads in the homepage.
*
* @param view The view, which shows ads.
*//*
*/
public static void hideAdAttributionView(View view) {
Utils.hideViewBy0dpUnderCondition(Settings.HIDE_GENERAL_ADS, view);
throw new NotImplementedError();
// Utils.hideViewBy0dpUnderCondition(Settings.HIDE_GENERAL_ADS, view);
}
*/

/**
* Close the fullscreen ad.
Expand Down Expand Up @@ -217,4 +240,4 @@ private static void closeFullscreenAd() {
});
}, 1000);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package app.revanced.integrations.youtube.patches.components;
package app.revanced.extension.youtube.patches.components;

import androidx.annotation.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.settings.BaseSettings;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.BaseSettings;

/**
* Filters litho based components.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package app.revanced.integrations.youtube.patches.components;
package app.revanced.extension.youtube.patches.components;

import androidx.annotation.NonNull;

import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.settings.BooleanSetting;
import app.revanced.integrations.youtube.ByteTrieSearch;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.youtube.ByteTrieSearch;

abstract class FilterGroup<T> {
final static class FilterGroupResult {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.integrations.youtube.patches.components;
package app.revanced.extension.youtube.patches.components;

import android.os.Build;

Expand All @@ -8,9 +8,9 @@
import java.util.*;
import java.util.function.Consumer;

import app.revanced.integrations.youtube.ByteTrieSearch;
import app.revanced.integrations.youtube.StringTrieSearch;
import app.revanced.integrations.youtube.TrieSearch;
import app.revanced.extension.youtube.ByteTrieSearch;
import app.revanced.extension.youtube.StringTrieSearch;
import app.revanced.extension.youtube.TrieSearch;

abstract class FilterGroupList<V, T extends FilterGroup<V>> implements Iterable<T> {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package app.revanced.integrations.youtube.patches.components;
package app.revanced.extension.youtube.patches.components;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.nio.ByteBuffer;
import java.util.List;

import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.youtube.StringTrieSearch;
import app.revanced.integrations.youtube.settings.Settings;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings;

@SuppressWarnings("unused")
public final class LithoFilterPatch {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package app.revanced.integrations.youtube.settings;
package app.revanced.extension.youtube.settings;

import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.settings.*;
import app.revanced.extension.shared.settings.*;
@SuppressWarnings("deprecation")
public class Settings extends BaseSettings {
// Ads
Expand All @@ -19,9 +15,13 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_MERCHANDISE_BANNERS = new BooleanSetting("revanced_hide_merchandise_banners", TRUE);
public static final BooleanSetting HIDE_PAID_PROMOTION_LABEL = new BooleanSetting("revanced_hide_paid_promotion_label", TRUE);
public static final BooleanSetting HIDE_PRODUCTS_BANNER = new BooleanSetting("revanced_hide_products_banner", TRUE);
public static final BooleanSetting HIDE_PLAYER_STORE_SHELF = new BooleanSetting("revanced_hide_player_store_shelf", TRUE);
public static final BooleanSetting HIDE_SHOPPING_LINKS = new BooleanSetting("revanced_hide_shopping_links", TRUE);
public static final BooleanSetting HIDE_SELF_SPONSOR = new BooleanSetting("revanced_hide_self_sponsor_ads", TRUE);
public static final BooleanSetting HIDE_VIDEO_ADS = new BooleanSetting("revanced_hide_video_ads", TRUE, true);
public static final BooleanSetting HIDE_VISIT_STORE_BUTTON = new BooleanSetting("revanced_hide_visit_store_button", TRUE);
public static final BooleanSetting HIDE_WEB_SEARCH_RESULTS = new BooleanSetting("revanced_hide_web_search_results", TRUE);
// Uncategorized layout related settings. Do not add to this section, and instead move these out and categorize them.
public static final BooleanSetting HIDE_MOVIES_SECTION = new BooleanSetting("revanced_hide_movies_section", TRUE);

}
18 changes: 4 additions & 14 deletions app/src/main/java/io/github/chsbuffer/revancedxposed/MusicHook.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,23 +43,13 @@ class MusicHook(app: Application, val lpparam: LoadPackageParam) : Cache(app) {
getDexMethod("AllowExclusiveAudioPlaybackFingerprint") {
dexkit.findMethod {
matcher {
addCaller {
addEqString("probably_has_unlimited_entitlement")
}

returnType = "boolean"
modifiers = Modifier.PUBLIC or Modifier.FINAL
paramCount = 0
opNames = listOf(
"invoke-virtual",
"move-result-object",
"check-cast",
"if-nez",
"iget-object",
"invoke-virtual",
"move-result",
"goto",
"invoke-virtual",
"move-result",
"return",

)
}
}.single()
}.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import android.app.Application
import android.content.ClipData
import android.content.Intent
import android.view.View
import app.revanced.integrations.shared.Utils
import app.revanced.integrations.youtube.patches.components.LithoFilterPatch
import app.revanced.extension.shared.Utils
import app.revanced.extension.youtube.patches.components.LithoFilterPatch
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XC_MethodReplacement
import de.robv.android.xposed.XposedBridge
Expand Down Expand Up @@ -304,6 +304,9 @@ class YoutubeHook(app: Application, val lpparam: LoadPackageParam) : Cache(app)
matcher {
addEqString("Component was not found %s because it was removed due to duplicate converter bindings.")
}
matcher {
addEqString("Component was not found because it was removed due to duplicate converter bindings.")
}
}.single()
}
val emptyComponentClass = getDexClass("emptyComponentClass") {
Expand Down
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
agp = "8.7.2"
agp = "8.8.0"
kotlin = "2.0.20"
dexkit = "2.0.2"
dexkit = "2.0.3"
xposed = "82"
annotation = "1.9.1"

Expand Down
Loading

0 comments on commit 6e96ab4

Please sign in to comment.