fix(YouTube): Resolve UI components not hiding for some users (#6054)

This commit is contained in:
LisoUseInAIKyrios
2025-10-03 10:54:44 +04:00
committed by GitHub
parent b1511c732d
commit 6b26346914
13 changed files with 97 additions and 97 deletions

View File

@@ -131,11 +131,11 @@ public class ReturnYouTubeDislikePatch {
String conversionContextString = conversionContext.toString();
if (isRollingNumber && !conversionContextString.contains("video_action_bar.eml")) {
if (isRollingNumber && !conversionContextString.contains("video_action_bar.e")) {
return original;
}
if (conversionContextString.contains("segmented_like_dislike_button.eml")) {
if (conversionContextString.contains("segmented_like_dislike_button.e")) {
// Regular video.
ReturnYouTubeDislike videoData = currentVideoData;
if (videoData == null) {
@@ -153,12 +153,12 @@ public class ReturnYouTubeDislikePatch {
}
if (Utils.containsAny(conversionContextString,
"|shorts_dislike_button.eml", "|reel_dislike_button.eml")) {
"|shorts_dislike_button.e", "|reel_dislike_button.e")) {
return getShortsSpan(original, true);
}
if (Utils.containsAny(conversionContextString,
"|shorts_like_button.eml", "|reel_like_button.eml")) {
"|shorts_like_button.e", "|reel_like_button.e")) {
if (!Utils.containsNumber(original)) {
Logger.printDebug(() -> "Replacing hidden likes count");
return getShortsSpan(original, false);

View File

@@ -105,17 +105,17 @@ public final class AdsFilter extends Filter {
Settings.HIDE_VIEW_PRODUCTS_BANNER,
"product_item",
"products_in_video",
"shopping_overlay.eml" // Video player overlay shopping links.
"shopping_overlay.e" // Video player overlay shopping links.
);
final var shoppingLinks = new StringFilterGroup(
Settings.HIDE_SHOPPING_LINKS,
"shopping_description_shelf.eml"
"shopping_description_shelf.e"
);
playerShoppingShelf = new StringFilterGroup(
Settings.HIDE_CREATOR_STORE_SHELF,
"horizontal_shelf.eml"
"horizontal_shelf.e"
);
playerShoppingShelfBuffer = new ByteArrayFilterGroup(
@@ -131,7 +131,7 @@ public final class AdsFilter extends Filter {
final var merchandise = new StringFilterGroup(
Settings.HIDE_MERCHANDISE_BANNERS,
"product_carousel",
"shopping_carousel.eml" // Channel profile shopping shelf.
"shopping_carousel.e" // Channel profile shopping shelf.
);
final var selfSponsor = new StringFilterGroup(

View File

@@ -14,7 +14,7 @@ public final class AdvancedVideoQualityMenuFilter extends Filter {
public AdvancedVideoQualityMenuFilter() {
addPathCallbacks(new StringFilterGroup(
Settings.ADVANCED_VIDEO_QUALITY_MENU,
"quick_quality_sheet_content.eml-js"
"quick_quality_sheet_content.e"
));
}

View File

@@ -4,13 +4,13 @@ import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
final class ButtonsFilter extends Filter {
private static final String COMPACT_CHANNEL_BAR_PATH_PREFIX = "compact_channel_bar.eml";
private static final String VIDEO_ACTION_BAR_PATH_PREFIX = "video_action_bar.eml";
private static final String VIDEO_ACTION_BAR_PATH = "video_action_bar.eml";
private static final String COMPACT_CHANNEL_BAR_PATH_PREFIX = "compact_channel_bar.e";
private static final String VIDEO_ACTION_BAR_PATH_PREFIX = "video_action_bar.e";
private static final String VIDEO_ACTION_BAR_PATH = "video_action_bar.e";
/**
* Video bar path when the video information is collapsed. Seems to shown only with 20.14+
*/
private static final String COMPACTIFY_VIDEO_ACTION_BAR_PATH = "compactify_video_action_bar.eml";
private static final String COMPACTIFY_VIDEO_ACTION_BAR_PATH = "compactify_video_action_bar.e";
private static final String ANIMATED_VECTOR_TYPE_PATH = "AnimatedVectorType";
private final StringFilterGroup likeSubscribeGlow;
@@ -28,12 +28,12 @@ final class ButtonsFilter extends Filter {
likeSubscribeGlow = new StringFilterGroup(
Settings.DISABLE_LIKE_SUBSCRIBE_GLOW,
"animated_button_border.eml"
"animated_button_border.e"
);
bufferFilterPathGroup = new StringFilterGroup(
null,
"|ContainerType|button.eml"
"|ContainerType|button.e"
);
addPathCallbacks(
@@ -45,7 +45,7 @@ final class ButtonsFilter extends Filter {
),
new StringFilterGroup(
Settings.HIDE_DOWNLOAD_BUTTON,
"|download_button.eml"
"|download_button.e"
),
new StringFilterGroup(
Settings.HIDE_SAVE_BUTTON,
@@ -53,7 +53,7 @@ final class ButtonsFilter extends Filter {
),
new StringFilterGroup(
Settings.HIDE_CLIP_BUTTON,
"|clip_button.eml"
"|clip_button.e"
)
);

View File

@@ -6,7 +6,7 @@ import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused")
final class CommentsFilter extends Filter {
private static final String COMMENT_COMPOSER_PATH = "comment_composer.eml";
private static final String COMMENT_COMPOSER_PATH = "comment_composer.e";
private final StringFilterGroup chipBar;
private final ByteArrayFilterGroup aiCommentsSummary;
@@ -15,12 +15,12 @@ final class CommentsFilter extends Filter {
public CommentsFilter() {
var chatSummary = new StringFilterGroup(
Settings.HIDE_COMMENTS_AI_CHAT_SUMMARY,
"live_chat_summary_banner.eml"
"live_chat_summary_banner.e"
);
chipBar = new StringFilterGroup(
Settings.HIDE_COMMENTS_AI_SUMMARY,
"chip_bar.eml"
"chip_bar.e"
);
aiCommentsSummary = new ByteArrayFilterGroup(
@@ -35,8 +35,8 @@ final class CommentsFilter extends Filter {
var commentsByMembers = new StringFilterGroup(
Settings.HIDE_COMMENTS_BY_MEMBERS_HEADER,
"sponsorships_comments_header.eml",
"sponsorships_comments_footer.eml"
"sponsorships_comments_header.e",
"sponsorships_comments_footer.e"
);
var comments = new StringFilterGroup(
@@ -52,7 +52,7 @@ final class CommentsFilter extends Filter {
var createAShort = new StringFilterGroup(
Settings.HIDE_COMMENTS_CREATE_A_SHORT_BUTTON,
"composer_short_creation_button.eml"
"composer_short_creation_button.e"
);
emojiAndTimestampButtons = new StringFilterGroup(
@@ -69,7 +69,7 @@ final class CommentsFilter extends Filter {
var thanksButton = new StringFilterGroup(
Settings.HIDE_COMMENTS_THANKS_BUTTON,
"super_thanks_button.eml"
"super_thanks_button.e"
);
addPathCallbacks(

View File

@@ -29,12 +29,12 @@ final class DescriptionComponentsFilter extends Filter {
aiGeneratedVideoSummarySection = new StringFilterGroup(
Settings.HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION,
"cell_expandable_metadata.eml"
"cell_expandable_metadata.e"
);
final StringFilterGroup askSection = new StringFilterGroup(
Settings.HIDE_ASK_SECTION,
"youchat_entrypoint.eml"
"youchat_entrypoint.e"
);
final StringFilterGroup attributesSection = new StringFilterGroup(
@@ -65,7 +65,7 @@ final class DescriptionComponentsFilter extends Filter {
macroMarkersCarousel = new StringFilterGroup(
null,
"macro_markers_carousel.eml"
"macro_markers_carousel.e"
);
macroMarkersCarouselGroupList.addAll(
@@ -81,7 +81,7 @@ final class DescriptionComponentsFilter extends Filter {
horizontalShelf = new StringFilterGroup(
Settings.HIDE_ATTRIBUTES_SECTION,
"horizontal_shelf.eml"
"horizontal_shelf.e"
);
cellVideoAttribute = new ByteArrayFilterGroup(

View File

@@ -9,7 +9,7 @@ public final class HideInfoCardsFilter extends Filter {
addIdentifierCallbacks(
new StringFilterGroup(
Settings.HIDE_INFO_CARDS,
"info_card_teaser_overlay.eml"
"info_card_teaser_overlay.e"
)
);
}

View File

@@ -79,10 +79,10 @@ final class KeywordContentFilter extends Filter {
"search_vwc_description_transition_key",
"g-high-recZ",
// Text and litho components found in the buffer that belong to path filters.
"expandable_metadata.eml",
"thumbnail.eml",
"avatar.eml",
"overflow_button.eml",
"expandable_metadata.e",
"thumbnail.e",
"avatar.e",
"overflow_button.e",
"shorts-lockup-image",
"shorts-lockup.overlay-metadata.secondary-text",
"YouTubeSans-SemiBold",
@@ -94,16 +94,16 @@ final class KeywordContentFilter extends Filter {
*/
private final StringFilterGroup startsWithFilter = new StringFilterGroup(
null, // Multiple settings are used and must be individually checked if active.
"home_video_with_context.eml",
"search_video_with_context.eml",
"video_with_context.eml", // Subscription tab videos.
"related_video_with_context.eml",
"home_video_with_context.e",
"search_video_with_context.e",
"video_with_context.e", // Subscription tab videos.
"related_video_with_context.e",
// A/B test for subscribed video, and sometimes when tablet layout is enabled.
"video_lockup_with_attachment.eml",
"compact_video.eml",
"video_lockup_with_attachment.e",
"compact_video.e",
"inline_shorts",
"shorts_video_cell",
"shorts_pivot_item.eml"
"shorts_pivot_item.e"
);
/**
@@ -112,9 +112,9 @@ final class KeywordContentFilter extends Filter {
@SuppressWarnings("FieldCanBeLocal")
private final StringFilterGroup containsFilter = new StringFilterGroup(
null,
"modern_type_shelf_header_content.eml",
"shorts_lockup_cell.eml", // Part of 'shorts_shelf_carousel.eml'
"video_card.eml" // Shorts that appear in a horizontal shelf.
"modern_type_shelf_header_content.e",
"shorts_lockup_cell.e", // Part of 'shorts_shelf_carousel.e'
"video_card.e" // Shorts that appear in a horizontal shelf.
);
/**
@@ -125,10 +125,10 @@ final class KeywordContentFilter extends Filter {
* the buffer of the parent component was already searched and passed.
*/
private final StringTrieSearch exceptions = new StringTrieSearch(
"metadata.eml",
"thumbnail.eml",
"avatar.eml",
"overflow_button.eml"
"metadata.e",
"thumbnail.e",
"avatar.e",
"overflow_button.e"
);
/**

View File

@@ -76,18 +76,18 @@ public final class LayoutComponentsFilter extends Filter {
communityPosts = new StringFilterGroup(
Settings.HIDE_COMMUNITY_POSTS,
"post_base_wrapper", // may be obsolete and no longer needed.
"text_post_root.eml",
"images_post_root.eml",
"images_post_slim.eml", // may be obsolete and no longer needed.
"images_post_root_slim.eml",
"text_post_root_slim.eml",
"post_base_wrapper_slim.eml",
"poll_post_root.eml",
"videos_post_root.eml",
"post_shelf_slim.eml",
"videos_post_responsive_root.eml",
"text_post_responsive_root.eml",
"poll_post_responsive_root.eml"
"text_post_root.e",
"images_post_root.e",
"images_post_slim.e", // may be obsolete and no longer needed.
"images_post_root_slim.e",
"text_post_root_slim.e",
"post_base_wrapper_slim.e",
"poll_post_root.e",
"videos_post_root.e",
"post_shelf_slim.e",
"videos_post_responsive_root.e",
"text_post_responsive_root.e",
"poll_post_responsive_root.e"
);
final var subscribersCommunityGuidelines = new StringFilterGroup(
@@ -149,7 +149,7 @@ public final class LayoutComponentsFilter extends Filter {
final var channelLinksPreview = new StringFilterGroup(
Settings.HIDE_LINKS_PREVIEW,
"attribution.eml"
"attribution.e"
);
final var emergencyBox = new StringFilterGroup(
@@ -190,8 +190,8 @@ public final class LayoutComponentsFilter extends Filter {
final var playables = new StringFilterGroup(
Settings.HIDE_PLAYABLES,
"horizontal_gaming_shelf.eml",
"mini_game_card.eml"
"horizontal_gaming_shelf.e",
"mini_game_card.e"
);
// Playable horizontal shelf header.
@@ -228,7 +228,7 @@ public final class LayoutComponentsFilter extends Filter {
compactChannelBarInnerButton = new StringFilterGroup(
null,
"|button.eml"
"|button.e"
);
joinMembershipButton = new ByteArrayFilterGroup(
@@ -248,13 +248,13 @@ public final class LayoutComponentsFilter extends Filter {
final var videoRecommendationLabels = new StringFilterGroup(
Settings.HIDE_VIDEO_RECOMMENDATION_LABELS,
"endorsement_header_footer.eml"
"endorsement_header_footer.e"
);
channelProfile = new StringFilterGroup(
null,
"channel_profile.eml",
"page_header.eml"
"channel_profile.e",
"page_header.e"
);
channelProfileBuffer = new ByteArrayFilterGroupList();
channelProfileBuffer.addAll(new ByteArrayFilterGroup(
@@ -269,15 +269,15 @@ public final class LayoutComponentsFilter extends Filter {
horizontalShelves = new StringFilterGroup(
Settings.HIDE_HORIZONTAL_SHELVES,
"horizontal_video_shelf.eml",
"horizontal_shelf.eml",
"horizontal_shelf_inline.eml",
"horizontal_tile_shelf.eml"
"horizontal_video_shelf.e",
"horizontal_shelf.e",
"horizontal_shelf_inline.e",
"horizontal_tile_shelf.e"
);
ticketShelf = new ByteArrayFilterGroup(
Settings.HIDE_TICKET_SHELF,
"ticket_item.eml"
"ticket_item.e"
);
addPathCallbacks(

View File

@@ -24,13 +24,13 @@ public final class PlaybackSpeedMenuFilter extends Filter {
// 0.05x litho speed menu.
var playbackRateSelectorGroup = new StringFilterGroup(
Settings.CUSTOM_SPEED_MENU,
"playback_rate_selector_menu_sheet.eml-js"
"playback_rate_selector_menu_sheet.e"
);
// Old litho based speed menu.
oldPlaybackMenuGroup = new StringFilterGroup(
Settings.CUSTOM_SPEED_MENU,
"playback_speed_sheet_content.eml-js");
"playback_speed_sheet_content.e");
addPathCallbacks(playbackRateSelectorGroup, oldPlaybackMenuGroup);
}

View File

@@ -38,7 +38,7 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
addPathCallbacks(
videoQualityMenuFooter,
new StringFilterGroup(null, "overflow_menu_item.eml")
new StringFilterGroup(null, "overflow_menu_item.e")
);
flyoutFilterGroupList.addAll(

View File

@@ -72,8 +72,8 @@ public final class ReturnYouTubeDislikeFilter extends Filter {
// But if swiping back to a previous video and liking/disliking, then only that single button reloads.
// So must check for both buttons.
addPathCallbacks(
new StringFilterGroup(null, "|shorts_like_button.eml"),
new StringFilterGroup(null, "|shorts_dislike_button.eml")
new StringFilterGroup(null, "|shorts_like_button.e"),
new StringFilterGroup(null, "|shorts_dislike_button.e")
);
// After the button identifiers is binary data and then the video id for that specific short.

View File

@@ -18,12 +18,12 @@ import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused")
public final class ShortsFilter extends Filter {
private static final boolean HIDE_SHORTS_NAVIGATION_BAR = Settings.HIDE_SHORTS_NAVIGATION_BAR.get();
private static final String REEL_CHANNEL_BAR_PATH = "reel_channel_bar.eml";
private static final String REEL_CHANNEL_BAR_PATH = "reel_channel_bar.e";
/**
* For paid promotion label and subscribe button that appears in the channel bar.
*/
private static final String REEL_METAPANEL_PATH = "reel_metapanel.eml";
private static final String REEL_METAPANEL_PATH = "reel_metapanel.e";
/**
* Tags that appears when opening the Shorts player.
@@ -74,7 +74,7 @@ public final class ShortsFilter extends Filter {
// Use a different filter group for this pattern, as it requires an additional check after matching.
shelfHeader = new StringFilterGroup(
null,
"shelf_header.eml"
"shelf_header.e"
);
addIdentifierCallbacks(shortsIdentifiers, shelfHeader);
@@ -85,11 +85,11 @@ public final class ShortsFilter extends Filter {
shortsCompactFeedVideo = new StringFilterGroup(null,
// Shorts that appear in the feed/search when the device is using tablet layout.
"compact_video.eml",
// 'video_lockup_with_attachment.eml' is shown instead of 'compact_video.eml' for some users
"video_lockup_with_attachment.eml",
"compact_video.e",
// 'video_lockup_with_attachment.e' is shown instead of 'compact_video.e' for some users
"video_lockup_with_attachment.e",
// Search results that appear in a horizontal shelf.
"video_card.eml");
"video_card.e");
// Filter out items that use the 'frame0' thumbnail.
// This is a valid thumbnail for both regular videos and Shorts,
@@ -134,31 +134,31 @@ public final class ShortsFilter extends Filter {
StringFilterGroup stickers = new StringFilterGroup(
Settings.HIDE_SHORTS_STICKERS,
"stickers_layer.eml"
"stickers_layer.e"
);
StringFilterGroup likeFountain = new StringFilterGroup(
Settings.HIDE_SHORTS_LIKE_FOUNTAIN,
"like_fountain.eml"
"like_fountain.e"
);
StringFilterGroup likeButton = new StringFilterGroup(
Settings.HIDE_SHORTS_LIKE_BUTTON,
"shorts_like_button.eml",
"reel_like_button.eml"
"shorts_like_button.e",
"reel_like_button.e"
);
StringFilterGroup dislikeButton = new StringFilterGroup(
Settings.HIDE_SHORTS_DISLIKE_BUTTON,
"shorts_dislike_button.eml",
"reel_dislike_button.eml"
"shorts_dislike_button.e",
"reel_dislike_button.e"
);
StringFilterGroup previewComment = new StringFilterGroup(
Settings.HIDE_SHORTS_PREVIEW_COMMENT,
// Preview comment that can popup while a Short is playing.
// Uses no bundled icons, and instead the users profile photo is shown.
"participation_bar.eml"
"participation_bar.e"
);
joinButton = new StringFilterGroup(
@@ -173,20 +173,20 @@ public final class ShortsFilter extends Filter {
paidPromotionButton = new StringFilterGroup(
Settings.HIDE_PAID_PROMOTION_LABEL,
"reel_player_disclosure.eml"
"reel_player_disclosure.e"
);
shortsActionBar = new StringFilterGroup(
null,
"shorts_action_bar.eml",
"reel_action_bar.eml"
"shorts_action_bar.e",
"reel_action_bar.e"
);
useSoundButton = new StringFilterGroup(
Settings.HIDE_SHORTS_USE_SOUND_BUTTON,
// First filter needed for "Use this sound" that can appear when viewing Shorts
// through the "Short remixing this video" section.
"floating_action_button.eml",
"floating_action_button.e",
// Second filter needed for "Use this sound" that can appear below the video title.
REEL_METAPANEL_PATH
);
@@ -209,13 +209,13 @@ public final class ShortsFilter extends Filter {
videoActionButton = new StringFilterGroup(
null,
// Can be simply 'button.eml', 'shorts_video_action_button.eml' or 'reel_action_button.eml'
"button.eml"
// Can be simply 'button.e', 'shorts_video_action_button.e' or 'reel_action_button.e'
"button.e"
);
suggestedAction = new StringFilterGroup(
null,
"suggested_action.eml"
"suggested_action.e"
);
addPathCallbacks(