Update AdBlock Workaround

This commit is contained in:
aricloverEXALT 2025-02-14 22:50:59 -06:00 committed by GitHub
parent ae9924deac
commit 9b9f479cd7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -412,7 +412,7 @@ YTMainAppControlsOverlayView *controlsOverlayView;
%hook MDXSession %hook MDXSession
- (void)adPlaying:(id)ad {} - (void)adPlaying:(id)ad {}
%end %end
%hook YTReelInfinitePlaybackDataSource %hook YTReelDataSource
- (YTReelModel *)makeContentModelForEntry:(id)entry { - (YTReelModel *)makeContentModelForEntry:(id)entry {
YTReelModel *model = %orig; YTReelModel *model = %orig;
if ([model respondsToSelector:@selector(videoType)] && model.videoType == 3) if ([model respondsToSelector:@selector(videoType)] && model.videoType == 3)
@ -420,28 +420,41 @@ YTMainAppControlsOverlayView *controlsOverlayView;
return model; return model;
} }
%end %end
%hook YTReelInfinitePlaybackDataSource
- (YTReelModel *)makeContentModelForEntry:(id)entry {
YTReelModel *model = %orig;
if ([model respondsToSelector:@selector(videoType)] && model.videoType == 3)
return nil;
return model;
}
- (void)setReels:(NSMutableOrderedSet <YTReelModel *> *)reels {
[reels removeObjectsAtIndexes:[reels indexesOfObjectsPassingTest:^BOOL(YTReelModel *obj, NSUInteger idx, BOOL *stop) {
return [obj respondsToSelector:@selector(videoType)] ? obj.videoType == 3 : NO;
}]];
%orig;
}
%end
NSString *getAdString(NSString *description) { NSString *getAdString(NSString *description) {
for (NSString *str in @[ for (NSString *str in @[ @"brand_promo",
@"brand_promo", @"carousel_footered_layout",
@"carousel_footered_layout", @"carousel_headered_layout",
@"carousel_headered_layout", @"eml.expandable_metadata",
@"eml.expandable_metadata", @"feed_ad_metadata",
@"feed_ad_metadata", @"full_width_portrait_image_layout",
@"full_width_portrait_image_layout", @"full_width_square_image_layout",
@"full_width_square_image_layout", @"landscape_image_wide_button_layout",
@"landscape_image_wide_button_layout", @"post_shelf",
@"post_shelf", @"product_carousel",
@"product_carousel", @"product_engagement_panel",
@"product_engagement_panel", @"product_item",
@"product_item", @"shopping_carousel",
@"shopping_carousel", @"shopping_item_card_list",
@"shopping_item_card_list", @"statement_banner",
@"statement_banner", @"square_image_layout",
@"square_image_layout", @"text_image_button_layout",
@"text_image_button_layout", @"text_search_ad",
@"text_search_ad", @"video_display_full_layout",
@"video_display_full_layout", @"video_display_full_buttoned_layout"
@"video_display_full_buttoned_layout"
]) ])
if ([description containsString:str]) return str; if ([description containsString:str]) return str;
@ -463,6 +476,16 @@ static BOOL isAdRenderer(YTIElementRenderer *elementRenderer, int kind) {
static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItemSectionRenderer *> *array) { static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItemSectionRenderer *> *array) {
NSMutableArray <YTIItemSectionRenderer *> *newArray = [array mutableCopy]; NSMutableArray <YTIItemSectionRenderer *> *newArray = [array mutableCopy];
NSIndexSet *removeIndexes = [newArray indexesOfObjectsPassingTest:^BOOL(YTIItemSectionRenderer *sectionRenderer, NSUInteger idx, BOOL *stop) { NSIndexSet *removeIndexes = [newArray indexesOfObjectsPassingTest:^BOOL(YTIItemSectionRenderer *sectionRenderer, NSUInteger idx, BOOL *stop) {
if ([sectionRenderer isKindOfClass:%c(YTIShelfRenderer)]) {
YTIShelfSupportedRenderers *content = ((YTIShelfRenderer *)sectionRenderer).content;
YTIHorizontalListRenderer *horizontalListRenderer = content.horizontalListRenderer;
NSMutableArray <YTIHorizontalListSupportedRenderers *> *itemsArray = horizontalListRenderer.itemsArray;
NSIndexSet *removeItemsArrayIndexes = [itemsArray indexesOfObjectsPassingTest:^BOOL(YTIHorizontalListSupportedRenderers *horizontalListSupportedRenderers, NSUInteger idx2, BOOL *stop2) {
YTIElementRenderer *elementRenderer = horizontalListSupportedRenderers.elementRenderer;
return isAdRenderer(elementRenderer, 4);
}];
[itemsArray removeObjectsAtIndexes:removeItemsArrayIndexes];
}
if (![sectionRenderer isKindOfClass:%c(YTIItemSectionRenderer)]) if (![sectionRenderer isKindOfClass:%c(YTIItemSectionRenderer)])
return NO; return NO;
NSMutableArray <YTIItemSectionSupportedRenderers *> *contentsArray = sectionRenderer.contentsArray; NSMutableArray <YTIItemSectionSupportedRenderers *> *contentsArray = sectionRenderer.contentsArray;