diff --git a/README.md b/README.md index f3b93d4..956f241 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,33 @@ +## Lightweight Alternative - YTLite / YTLitePlus + +
+ Read more
+ +# Switch from uYouEnhanced to either YTLite or YTLitePlus (optional) + +Hello, this is here to showcase this tweak. I have been seeing the posts about the YTLitePlus tweak on Reddit for quite some time now and decided to add it here. Before you download or check out the tweak, you should take a look at the pros and cons below to learn more about YTLitePlus. + +https://github.com/YTLitePlus/YTLitePlus/releases + +**YTLitePlus - Pros** + +- YTLitePlus is stable and more customizable than uYouPlus/uYouEnhanced. (same goes for the regular YTLite, it's stable based on my testing of using it) + +- YTLitePlus provides more features in YTLite & YTLitePlus Sections in Settings that uYouPlus/uYouEnhanced may not have. + +- YTLitePlus includes a lightweight and simplified version of the App Version Spoofer, making it easier to use. + +- YTLitePlus does not cause your device to overheat, unlike uYouPlus/uYouEnhanced. + +- YTLitePlus provides faster video & audio downloading than uYouPlus/uYouEnhanced. + +**YTLitePlus - Cons** + +- Video quality on WiFi option is not available in YTLitePlus. + +- Reordering the pivot bar tabs such as `Home`, `Shorts`, `Explore`, `Trending`, `Create`, `Subscriptions` & `You` is not available in YTLitePlus. +
+ ## About the future of the uYouEnhanced Project (Updated, June 13, 2025) Hey everyone, @@ -391,34 +421,3 @@ See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installati # Wiki See [arichornlover - Wiki](https://github.com/arichornlover/uYouEnhanced/wiki/) or [qnblackcat - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/) - - -## Lightweight Alternative - YTLite / YTLitePlus - -
- Read more
- -# Switch from uYouEnhanced to either YTLite or YTLitePlus (optional) - -Hello, this is here to showcase this tweak. I have been seeing the posts about the YTLitePlus tweak on Reddit for quite some time now and decided to add it here. Before you download or check out the tweak, you should take a look at the pros and cons below to learn more about YTLitePlus. - -https://github.com/YTLitePlus/YTLitePlus/releases - -**YTLitePlus - Pros** - -- YTLitePlus is stable and more customizable than uYouPlus/uYouEnhanced. (same goes for the regular YTLite, it's stable based on my testing of using it) - -- YTLitePlus provides more features in YTLite & YTLitePlus Sections in Settings that uYouPlus/uYouEnhanced may not have. - -- YTLitePlus includes a lightweight and simplified version of the App Version Spoofer, making it easier to use. - -- YTLitePlus does not cause your device to overheat, unlike uYouPlus/uYouEnhanced. - -- YTLitePlus provides faster video & audio downloading than uYouPlus/uYouEnhanced. - -**YTLitePlus - Cons** - -- Video quality on WiFi option is not available in YTLitePlus. - -- Reordering the pivot bar tabs such as `Home`, `Shorts`, `Explore`, `Trending`, `Create`, `Subscriptions` & `You` is not available in YTLitePlus. -
diff --git a/Sources/uYouPlus.h b/Sources/uYouPlus.h index 8099518..0fc4ae6 100644 --- a/Sources/uYouPlus.h +++ b/Sources/uYouPlus.h @@ -42,13 +42,14 @@ #import #import #import +#import #import #import #import #import #import #import - #import +#import #import #import #import diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 06f37b3..684a01d 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -400,9 +400,7 @@ YTMainAppControlsOverlayView *controlsOverlayView; %hook YTHotConfig - (BOOL)disableAfmaIdfaCollection { return NO; } %end - %hook YTIPlayerResponse -- (BOOL)isMonetized { return NO; } %new(@@:) - (NSMutableArray *)playerAdsArray { return [NSMutableArray array]; @@ -458,14 +456,13 @@ YTMainAppControlsOverlayView *controlsOverlayView; %end %end -// uYou AdBlock Workaround (Note: disables uYou's "Remove YouTube Ads" Option) - @PoomSmart, @arichornlover & @Dodieboy +// uYou AdBlock Workaround (Note: disables uYou's "Remove YouTube Ads" YouTube-X Option) - @PoomSmart, @arichornlover & @Dodieboy %group uYouAdBlockingWorkaround // Workaround: uYou 3.0.3 Adblock fix %hook YTHotConfig - (BOOL)disableAfmaIdfaCollection { return NO; } %end %hook YTIPlayerResponse -- (BOOL)isMonetized { return NO; } %new(@@:) - (NSMutableArray *)playerAdsArray { return [NSMutableArray array]; @@ -524,8 +521,37 @@ YTMainAppControlsOverlayView *controlsOverlayView; %orig; } %end +static BOOL isProductList(YTICommand *command) { + if ([command respondsToSelector:@selector(yt_showEngagementPanelEndpoint)]) { + YTIShowEngagementPanelEndpoint *endpoint = [command yt_showEngagementPanelEndpoint]; + return [endpoint.identifier.tag isEqualToString:@"PAproduct_list"]; + } + return NO; +} +%hook YTWatchNextResponseViewController +- (void)loadWithModel:(YTIWatchNextResponse *)model { + YTICommand *onUiReady = model.onUiReady; + if ([onUiReady respondsToSelector:@selector(yt_commandExecutorCommand)]) { + YTICommandExecutorCommand *commandExecutorCommand = [onUiReady yt_commandExecutorCommand]; + NSMutableArray *commandsArray = commandExecutorCommand.commandsArray; + [commandsArray removeObjectsAtIndexes:[commandsArray indexesOfObjectsPassingTest:^BOOL(YTICommand *command, NSUInteger idx, BOOL *stop) { + return isProductList(command); + }]]; + } + if (isProductList(onUiReady)) + model.onUiReady = nil; + %orig; +} +%end +%hook YTMainAppVideoPlayerOverlayViewController +- (void)playerOverlayProvider:(YTPlayerOverlayProvider *)provider didInsertPlayerOverlay:(YTPlayerOverlay *)overlay { + if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_product_in_video"]) return; + %orig; +} +%end NSString *getAdString(NSString *description) { - for (NSString *str in @[ @"brand_promo", + for (NSString *str in @[ + @"brand_promo", @"carousel_footered_layout", @"carousel_headered_layout", @"eml.expandable_metadata", @@ -545,9 +571,8 @@ NSString *getAdString(NSString *description) { @"text_search_ad", @"video_display_full_layout", @"video_display_full_buttoned_layout" - ]) + ]) if ([description containsString:str]) return str; - return nil; } static BOOL isAdRenderer(YTIElementRenderer *elementRenderer, int kind) { diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index ab572a7..f9aa795 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -1,20 +1,39 @@ #import "uYouPlusPatches.h" +#define YT_BUNDLE_ID @"com.google.ios.youtube" +#define YT_NAME @"YouTube" + # pragma mark - YouTube patches // Fix Google Sign in Patch %group gGoogleSignInPatch %hook NSBundle ++ (NSBundle *)bundleWithIdentifier:(NSString *)identifier { + if ([identifier isEqualToString:YT_BUNDLE_ID]) + return NSBundle.mainBundle; + return %orig(identifier); +} +- (NSString *)bundleIdentifier { + return [self isEqual:NSBundle.mainBundle] ? YT_BUNDLE_ID : %orig; +} - (NSDictionary *)infoDictionary { - NSDictionary *orig = %orig; - if ([self isEqual:NSBundle.mainBundle]) { - NSMutableDictionary *patched = [orig mutableCopy]; - if (patched) { - patched[@"CFBundleIdentifier"] = @"com.google.ios.youtube"; - return [patched copy]; - } - } - return orig; + NSDictionary *dict = %orig; + if (![self isEqual:NSBundle.mainBundle]) + return %orig; + NSMutableDictionary *info = [dict mutableCopy]; + if (info[@"CFBundleIdentifier"]) info[@"CFBundleIdentifier"] = YT_BUNDLE_ID; + if (info[@"CFBundleDisplayName"]) info[@"CFBundleDisplayName"] = YT_NAME; + if (info[@"CFBundleName"]) info[@"CFBundleName"] = YT_NAME; + return info; +} +- (id)objectForInfoDictionaryKey:(NSString *)key { + if (![self isEqual:NSBundle.mainBundle]) + return %orig; + if ([key isEqualToString:@"CFBundleIdentifier"]) + return YT_BUNDLE_ID; + if ([key isEqualToString:@"CFBundleDisplayName"] || [key isEqualToString:@"CFBundleName"]) + return YT_NAME; + return %orig; } %end %end diff --git a/Sources/uYouPlusSettings.xm b/Sources/uYouPlusSettings.xm index 3635dd0..cbe69a5 100644 --- a/Sources/uYouPlusSettings.xm +++ b/Sources/uYouPlusSettings.xm @@ -732,91 +732,31 @@ NSString *cacheDescription = [NSString stringWithFormat:@"%@", GetCacheSize()]; case 40: return @"v20.25.4"; case 41: return @"v20.24.5"; case 42: return @"v20.24.4"; - case 43: return @"v20.23.3"; - case 44: return @"v20.22.1"; - case 45: return @"v20.21.6"; - case 46: return @"v20.20.7"; - case 47: return @"v20.20.5"; - case 48: return @"v20.19.3"; - case 49: return @"v20.19.2"; - case 50: return @"v20.18.5"; - case 51: return @"v20.18.4"; - case 52: return @"v20.16.7"; - case 53: return @"v20.15.1"; - case 54: return @"v20.14.2"; - case 55: return @"v20.13.5"; - case 56: return @"v20.12.4"; - case 57: return @"v20.11.6"; - case 58: return @"v20.10.4"; - case 59: return @"v20.10.3"; - case 60: return @"v20.09.3"; - case 61: return @"v20.08.3"; - case 62: return @"v20.07.6"; - case 63: return @"v20.06.03"; - case 64: return @"v20.05.4"; - case 65: return @"v20.03.1"; - case 66: return @"v20.03.02"; - case 67: return @"v20.02.3"; - case 68: return @"v19.49.7"; - case 69: return @"v19.49.5"; - case 70: return @"v19.49.3"; - case 71: return @"v19.47.7"; - case 72: return @"v19.46.3"; - case 73: return @"v19.45.4"; - case 74: return @"v19.44.4"; - case 75: return @"v19.43.2"; - case 76: return @"v19.42.1"; - case 77: return @"v19.41.3"; - case 78: return @"v19.40.4"; - case 79: return @"v19.39.1"; - case 80: return @"v19.38.2"; - case 81: return @"v19.37.2"; - case 82: return @"v19.36.1"; - case 83: return @"v19.35.3"; - case 84: return @"v19.34.2"; - case 85: return @"v19.33.2"; - case 86: return @"v19.32.8"; - case 87: return @"v19.32.6"; - case 88: return @"v19.31.4"; - case 89: return @"v19.30.2"; - case 90: return @"v19.29.1"; - case 91: return @"v19.28.1"; - case 92: return @"v19.26.5"; - case 93: return @"v19.25.4"; - case 94: return @"v19.25.3"; - case 95: return @"v19.24.3"; - case 96: return @"v19.24.2"; - case 97: return @"v19.23.3"; - case 98: return @"v19.22.6"; - case 99: return @"v19.22.3"; - case 100: return @"v19.21.3"; - case 101: return @"v19.21.2"; - case 102: return @"v19.20.2 (Deprecated)"; - case 103: return @"v19.19.7 (Deprecated)"; - case 104: return @"v19.19.5 (Deprecated)"; - case 105: return @"v19.18.2 (Deprecated)"; - case 106: return @"v19.17.2 (Deprecated)"; - case 107: return @"v19.16.3 (Deprecated)"; - case 108: return @"v19.15.1 (Deprecated)"; - case 109: return @"v19.14.3 (Deprecated)"; - case 110: return @"v19.14.2 (Deprecated)"; - case 111: return @"v19.13.1 (Deprecated)"; - case 112: return @"v19.12.3 (Deprecated)"; - case 113: return @"v19.10.7 (Deprecated)"; - case 114: return @"v19.10.6 (Deprecated)"; - case 115: return @"v19.10.5 (Deprecated)"; - case 116: return @"v19.09.4 (Deprecated)"; - case 117: return @"v19.09.3 (Deprecated)"; - case 118: return @"v19.08.2 (Deprecated)"; - case 119: return @"v19.07.5 (Deprecated)"; - case 120: return @"v19.07.4 (Deprecated)"; - case 121: return @"v19.06.2 (Deprecated)"; - case 122: return @"v19.05.5 (Deprecated)"; - case 123: return @"v19.05.3 (Deprecated)"; - case 124: return @"v19.04.3 (Deprecated)"; - case 125: return @"v19.03.2 (Deprecated)"; - case 126: return @"v19.02.1 (Deprecated)"; - case 127: return @"v19.01.1 (Deprecated)"; + case 43: return @"v20.23.3 (Deprecated)"; + case 44: return @"v20.22.1 (Deprecated)"; + case 45: return @"v20.21.6 (Deprecated)"; + case 46: return @"v20.20.7 (Deprecated)"; + case 47: return @"v20.20.5 (Deprecated)"; + case 48: return @"v20.19.3 (Deprecated)"; + case 49: return @"v20.19.2 (Deprecated)"; + case 50: return @"v20.18.5 (Deprecated)"; + case 51: return @"v20.18.4 (Deprecated)"; + case 52: return @"v20.16.7 (Deprecated)"; + case 53: return @"v20.15.1 (Deprecated)"; + case 54: return @"v20.14.2 (Deprecated)"; + case 55: return @"v20.13.5 (Deprecated)"; + case 56: return @"v20.12.4 (Deprecated)"; + case 57: return @"v20.11.6 (Deprecated)"; + case 58: return @"v20.10.4 (Deprecated)"; + case 59: return @"v20.10.3 (Deprecated)"; + case 60: return @"v20.09.3 (Deprecated)"; + case 61: return @"v20.08.3 (Deprecated)"; + case 62: return @"v20.07.6 (Deprecated)"; + case 63: return @"v20.06.03 (Deprecated)"; + case 64: return @"v20.05.4 (Deprecated)"; + case 65: return @"v20.03.1 (Deprecated)"; + case 66: return @"v20.03.02 (Deprecated)"; + case 67: return @"v20.02.3 (Deprecated)"; default: return @"v21.08.3"; } } @@ -865,91 +805,31 @@ NSString *cacheDescription = [NSString stringWithFormat:@"%@", GetCacheSize()]; SPOOFER_VERSION(@"v20.25.4", 40), SPOOFER_VERSION(@"v20.24.5", 41), SPOOFER_VERSION(@"v20.24.4", 42), - SPOOFER_VERSION(@"v20.23.3", 43), - SPOOFER_VERSION(@"v20.22.1", 44), - SPOOFER_VERSION(@"v20.21.6", 45), - SPOOFER_VERSION(@"v20.20.7", 46), - SPOOFER_VERSION(@"v20.20.5", 47), - SPOOFER_VERSION(@"v20.19.3", 48), - SPOOFER_VERSION(@"v20.19.2", 49), - SPOOFER_VERSION(@"v20.18.5", 50), - SPOOFER_VERSION(@"v20.18.4", 51), - SPOOFER_VERSION(@"v20.16.7", 52), - SPOOFER_VERSION(@"v20.15.1", 53), - SPOOFER_VERSION(@"v20.14.2", 54), - SPOOFER_VERSION(@"v20.13.5", 55), - SPOOFER_VERSION(@"v20.12.4", 56), - SPOOFER_VERSION(@"v20.11.6", 57), - SPOOFER_VERSION(@"v20.10.4", 58), - SPOOFER_VERSION(@"v20.10.3", 59), - SPOOFER_VERSION(@"v20.09.3", 60), - SPOOFER_VERSION(@"v20.08.3", 61), - SPOOFER_VERSION(@"v20.07.6", 62), - SPOOFER_VERSION(@"v20.06.03", 63), - SPOOFER_VERSION(@"v20.05.4", 64), - SPOOFER_VERSION(@"v20.03.1", 65), - SPOOFER_VERSION(@"v20.03.02", 66), - SPOOFER_VERSION(@"v20.02.3", 67), - SPOOFER_VERSION(@"v19.49.7", 68), - SPOOFER_VERSION(@"v19.49.5", 69), - SPOOFER_VERSION(@"v19.49.3", 70), - SPOOFER_VERSION(@"v19.47.7", 71), - SPOOFER_VERSION(@"v19.46.3", 72), - SPOOFER_VERSION(@"v19.45.4", 73), - SPOOFER_VERSION(@"v19.44.4", 74), - SPOOFER_VERSION(@"v19.43.2", 75), - SPOOFER_VERSION(@"v19.42.1", 76), - SPOOFER_VERSION(@"v19.41.3", 77), - SPOOFER_VERSION(@"v19.40.4", 78), - SPOOFER_VERSION(@"v19.39.1", 79), - SPOOFER_VERSION(@"v19.38.2", 80), - SPOOFER_VERSION(@"v19.37.2", 81), - SPOOFER_VERSION(@"v19.36.1", 82), - SPOOFER_VERSION(@"v19.35.3", 83), - SPOOFER_VERSION(@"v19.34.2", 84), - SPOOFER_VERSION(@"v19.33.2", 85), - SPOOFER_VERSION(@"v19.32.8", 86), - SPOOFER_VERSION(@"v19.32.6", 87), - SPOOFER_VERSION(@"v19.31.4", 88), - SPOOFER_VERSION(@"v19.30.2", 89), - SPOOFER_VERSION(@"v19.29.1", 90), - SPOOFER_VERSION(@"v19.28.1", 91), - SPOOFER_VERSION(@"v19.26.5", 92), - SPOOFER_VERSION(@"v19.25.4", 93), - SPOOFER_VERSION(@"v19.25.3", 94), - SPOOFER_VERSION(@"v19.24.3", 95), - SPOOFER_VERSION(@"v19.24.2", 96), - SPOOFER_VERSION(@"v19.23.3", 97), - SPOOFER_VERSION(@"v19.22.6", 98), - SPOOFER_VERSION(@"v19.22.3", 99), - SPOOFER_VERSION(@"v19.21.3", 100), - SPOOFER_VERSION(@"v19.21.2", 101), - SPOOFER_VERSION(@"v19.20.2 (Deprecated)", 102), - SPOOFER_VERSION(@"v19.19.7 (Deprecated)", 103), - SPOOFER_VERSION(@"v19.19.5 (Deprecated)", 104), - SPOOFER_VERSION(@"v19.18.2 (Deprecated)", 105), - SPOOFER_VERSION(@"v19.17.2 (Deprecated)", 106), - SPOOFER_VERSION(@"v19.16.3 (Deprecated)", 107), - SPOOFER_VERSION(@"v19.15.1 (Deprecated)", 108), - SPOOFER_VERSION(@"v19.14.3 (Deprecated)", 109), - SPOOFER_VERSION(@"v19.14.2 (Deprecated)", 110), - SPOOFER_VERSION(@"v19.13.1 (Deprecated)", 111), - SPOOFER_VERSION(@"v19.12.3 (Deprecated)", 112), - SPOOFER_VERSION(@"v19.10.7 (Deprecated)", 113), - SPOOFER_VERSION(@"v19.10.6 (Deprecated)", 114), - SPOOFER_VERSION(@"v19.10.5 (Deprecated)", 115), - SPOOFER_VERSION(@"v19.09.4 (Deprecated)", 116), - SPOOFER_VERSION(@"v19.09.3 (Deprecated)", 117), - SPOOFER_VERSION(@"v19.08.2 (Deprecated)", 118), - SPOOFER_VERSION(@"v19.07.5 (Deprecated)", 119), - SPOOFER_VERSION(@"v19.07.4 (Deprecated)", 120), - SPOOFER_VERSION(@"v19.06.2 (Deprecated)", 121), - SPOOFER_VERSION(@"v19.05.5 (Deprecated)", 122), - SPOOFER_VERSION(@"v19.05.3 (Deprecated)", 123), - SPOOFER_VERSION(@"v19.04.3 (Deprecated)", 124), - SPOOFER_VERSION(@"v19.03.2 (Deprecated)", 125), - SPOOFER_VERSION(@"v19.02.1 (Deprecated)", 126), - SPOOFER_VERSION(@"v19.01.1 (Deprecated)", 127) + SPOOFER_VERSION(@"v20.23.3 (Deprecated)", 43), + SPOOFER_VERSION(@"v20.22.1 (Deprecated)", 44), + SPOOFER_VERSION(@"v20.21.6 (Deprecated)", 45), + SPOOFER_VERSION(@"v20.20.7 (Deprecated)", 46), + SPOOFER_VERSION(@"v20.20.5 (Deprecated)", 47), + SPOOFER_VERSION(@"v20.19.3 (Deprecated)", 48), + SPOOFER_VERSION(@"v20.19.2 (Deprecated)", 49), + SPOOFER_VERSION(@"v20.18.5 (Deprecated)", 50), + SPOOFER_VERSION(@"v20.18.4 (Deprecated)", 51), + SPOOFER_VERSION(@"v20.16.7 (Deprecated)", 52), + SPOOFER_VERSION(@"v20.15.1 (Deprecated)", 53), + SPOOFER_VERSION(@"v20.14.2 (Deprecated)", 54), + SPOOFER_VERSION(@"v20.13.5 (Deprecated)", 55), + SPOOFER_VERSION(@"v20.12.4 (Deprecated)", 56), + SPOOFER_VERSION(@"v20.11.6 (Deprecated)", 57), + SPOOFER_VERSION(@"v20.10.4 (Deprecated)", 58), + SPOOFER_VERSION(@"v20.10.3 (Deprecated)", 59), + SPOOFER_VERSION(@"v20.09.3 (Deprecated)", 60), + SPOOFER_VERSION(@"v20.08.3 (Deprecated)", 61), + SPOOFER_VERSION(@"v20.07.6 (Deprecated)", 62), + SPOOFER_VERSION(@"v20.06.03 (Deprecated)", 63), + SPOOFER_VERSION(@"v20.05.4 (Deprecated)", 64), + SPOOFER_VERSION(@"v20.03.1 (Deprecated)", 65), + SPOOFER_VERSION(@"v20.03.02 (Deprecated)", 66), + SPOOFER_VERSION(@"v20.02.3 (Deprecated)", 67) ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VERSION_SPOOFER_SELECTOR") pickerSectionTitle:nil rows:rows selectedItemIndex:appVersionSpoofer() parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; diff --git a/Sources/uYouPlusVersionSpoofer.xm b/Sources/uYouPlusVersionSpoofer.xm index f3f59a6..0923f4b 100644 --- a/Sources/uYouPlusVersionSpoofer.xm +++ b/Sources/uYouPlusVersionSpoofer.xm @@ -49,91 +49,31 @@ static VersionMapping versionMappings[] = { {40, @"20.25.4"}, {41, @"20.24.5"}, {42, @"20.24.4"}, - {43, @"20.23.3"}, - {44, @"20.22.1"}, - {45, @"20.21.6"}, - {46, @"20.20.7"}, - {47, @"20.20.5"}, - {48, @"20.19.3"}, - {49, @"20.19.2"}, - {50, @"20.18.5"}, - {51, @"20.18.4"}, - {52, @"20.16.7"}, - {53, @"20.15.1"}, - {54, @"20.14.2"}, - {55, @"20.13.5"}, - {56, @"20.12.4"}, - {57, @"20.11.6"}, - {58, @"20.10.4"}, - {59, @"20.10.3"}, - {60, @"20.09.3"}, - {61, @"20.08.3"}, - {62, @"20.07.6"}, - {63, @"20.06.03"}, - {64, @"20.05.4"}, - {65, @"20.03.1"}, - {66, @"20.03.02"}, - {67, @"20.02.3"}, - {68, @"19.49.7"}, - {69, @"19.49.5"}, - {70, @"19.49.3"}, - {71, @"19.47.7"}, - {72, @"19.46.3"}, - {73, @"19.45.4"}, - {74, @"19.44.4"}, - {75, @"19.43.2"}, - {76, @"19.42.1"}, - {77, @"19.41.3"}, - {78, @"19.40.4"}, - {79, @"19.39.1"}, - {80, @"19.38.2"}, - {81, @"19.37.2"}, - {82, @"19.36.1"}, - {83, @"19.35.3"}, - {84, @"19.34.2"}, - {85, @"19.33.2"}, - {86, @"19.32.8"}, - {87, @"19.32.6"}, - {88, @"19.31.4"}, - {89, @"19.30.2"}, - {90, @"19.29.1"}, - {91, @"19.28.1"}, - {92, @"19.26.5"}, - {93, @"19.25.4"}, - {94, @"19.25.3"}, - {95, @"19.24.3"}, - {96, @"19.24.2"}, - {97, @"19.23.3"}, - {98, @"19.22.6"}, - {99, @"19.22.3"}, - {100, @"19.21.3"}, - {101, @"19.21.2"}, - {102, @"19.20.2"}, - {103, @"19.19.7"}, - {104, @"19.19.5"}, - {105, @"19.18.2"}, - {106, @"19.17.2"}, - {107, @"19.16.3"}, - {108, @"19.15.1"}, - {109, @"19.14.3"}, - {110, @"19.14.2"}, - {111, @"19.13.1"}, - {112, @"19.12.3"}, - {113, @"19.10.7"}, - {114, @"19.10.6"}, - {115, @"19.10.5"}, - {116, @"19.09.4"}, - {117, @"19.09.3"}, - {118, @"19.08.2"}, - {119, @"19.07.5"}, - {120, @"19.07.4"}, - {121, @"19.06.2"}, - {122, @"19.05.5"}, - {123, @"19.05.3"}, - {124, @"19.04.3"}, - {125, @"19.03.2"}, - {126, @"19.02.1"}, - {127, @"19.01.1"} + {43, @"20.23.3 (Deprecated)"}, + {44, @"20.22.1 (Deprecated)"}, + {45, @"20.21.6 (Deprecated)"}, + {46, @"20.20.7 (Deprecated)"}, + {47, @"20.20.5 (Deprecated)"}, + {48, @"20.19.3 (Deprecated)"}, + {49, @"20.19.2 (Deprecated)"}, + {50, @"20.18.5 (Deprecated)"}, + {51, @"20.18.4 (Deprecated)"}, + {52, @"20.16.7 (Deprecated)"}, + {53, @"20.15.1 (Deprecated)"}, + {54, @"20.14.2 (Deprecated)"}, + {55, @"20.13.5 (Deprecated)"}, + {56, @"20.12.4 (Deprecated)"}, + {57, @"20.11.6 (Deprecated)"}, + {58, @"20.10.4 (Deprecated)"}, + {59, @"20.10.3 (Deprecated)"}, + {60, @"20.09.3 (Deprecated)"}, + {61, @"20.08.3 (Deprecated)"}, + {62, @"20.07.6 (Deprecated)"}, + {63, @"20.06.03 (Deprecated)"}, + {64, @"20.05.4 (Deprecated)"}, + {65, @"20.03.1 (Deprecated)"}, + {66, @"20.03.02 (Deprecated)"}, + {67, @"20.02.3 (Deprecated)"} }; static int appVersionSpoofer() { diff --git a/Tweaks/YTABConfig b/Tweaks/YTABConfig index 6cd5adc..3cdf53b 160000 --- a/Tweaks/YTABConfig +++ b/Tweaks/YTABConfig @@ -1 +1 @@ -Subproject commit 6cd5adc700cd79de80f7b02d0d14f1e5a7ea64aa +Subproject commit 3cdf53b3a23653b87c3c9e96ffdba0f359a77f4d diff --git a/Tweaks/YTIcons b/Tweaks/YTIcons index fd3d7a5..ec2f82a 160000 --- a/Tweaks/YTIcons +++ b/Tweaks/YTIcons @@ -1 +1 @@ -Subproject commit fd3d7a569aa01477f28b49f0f98b58ae9d48d3b3 +Subproject commit ec2f82a87e9d157d53dbc38cb9f05df955ce3acd diff --git a/Tweaks/YTUHD b/Tweaks/YTUHD index f799b70..28da1b9 160000 --- a/Tweaks/YTUHD +++ b/Tweaks/YTUHD @@ -1 +1 @@ -Subproject commit f799b70cb40e32de6ba779529ad60ecd8f601cfd +Subproject commit 28da1b91b7fdc62d5e486e4fa568f297ad606704 diff --git a/Tweaks/YTVideoOverlay b/Tweaks/YTVideoOverlay index f428a71..644e5ec 160000 --- a/Tweaks/YTVideoOverlay +++ b/Tweaks/YTVideoOverlay @@ -1 +1 @@ -Subproject commit f428a716021fd3e389e0ada5f05b3f215e079e24 +Subproject commit 644e5ecaed5b69a3d97a0de9dceadea1a3319690 diff --git a/Tweaks/YouGroupSettings b/Tweaks/YouGroupSettings index 852a58d..4469be2 160000 --- a/Tweaks/YouGroupSettings +++ b/Tweaks/YouGroupSettings @@ -1 +1 @@ -Subproject commit 852a58dc2c53d1426557b25ac0ca53570338248b +Subproject commit 4469be2398298c5a372bf345c1fbb7fcd8277cf8 diff --git a/Tweaks/YouLoop b/Tweaks/YouLoop index 899a2fd..43c39cc 160000 --- a/Tweaks/YouLoop +++ b/Tweaks/YouLoop @@ -1 +1 @@ -Subproject commit 899a2fdd539ae308e5847bbb3d7212cfce30a3a6 +Subproject commit 43c39ccfba454e0f602c39524b173a97f5cd774a diff --git a/Tweaks/YouMute b/Tweaks/YouMute index 8d6726e..f756b6b 160000 --- a/Tweaks/YouMute +++ b/Tweaks/YouMute @@ -1 +1 @@ -Subproject commit 8d6726e569a194d3f1c1ae973b290c66301087f1 +Subproject commit f756b6b3423b65152094020471720cfc9a3932d2 diff --git a/Tweaks/YouPiP b/Tweaks/YouPiP index 49ece8b..c39c288 160000 --- a/Tweaks/YouPiP +++ b/Tweaks/YouPiP @@ -1 +1 @@ -Subproject commit 49ece8b0fac8465ee4fd8bf0b54790106e50cb88 +Subproject commit c39c288ca58a526f89068e3af0d548782e8c2780 diff --git a/Tweaks/YouQuality b/Tweaks/YouQuality index d56dccd..3199d59 160000 --- a/Tweaks/YouQuality +++ b/Tweaks/YouQuality @@ -1 +1 @@ -Subproject commit d56dccd4336f0902f05813f4af177360c69fe33f +Subproject commit 3199d594bbec58f419107fc7b1d9c28f209bcd04 diff --git a/Tweaks/YouSlider b/Tweaks/YouSlider index cbd7e9d..5034aec 160000 --- a/Tweaks/YouSlider +++ b/Tweaks/YouSlider @@ -1 +1 @@ -Subproject commit cbd7e9daf765ecf5d9ceb27afac15cc3eec3ecc0 +Subproject commit 5034aec7384c6f4082dc9a45fd51aa63f3c7ac16 diff --git a/Tweaks/YouSpeed b/Tweaks/YouSpeed index 79b9ed4..b232dfa 160000 --- a/Tweaks/YouSpeed +++ b/Tweaks/YouSpeed @@ -1 +1 @@ -Subproject commit 79b9ed44958ad27fe75ee14ccc300aa99610c263 +Subproject commit b232dfa9ed70b66db81a2c68693b5dd7837538c5 diff --git a/Tweaks/iSponsorBlock b/Tweaks/iSponsorBlock index e0f97ef..c8b7b54 160000 --- a/Tweaks/iSponsorBlock +++ b/Tweaks/iSponsorBlock @@ -1 +1 @@ -Subproject commit e0f97ef5fe47c5c3728ce2ff7a6fb02bc085e86b +Subproject commit c8b7b54de204cfd34bac28afa494138b30ee788e diff --git a/Tweaks/protobuf b/Tweaks/protobuf index 57093a8..a37dbd6 160000 --- a/Tweaks/protobuf +++ b/Tweaks/protobuf @@ -1 +1 @@ -Subproject commit 57093a8bd5cb44211f323519a0045b883475666f +Subproject commit a37dbd643372b05de834190941671a1563d7e499