diff --git a/README.md b/README.md index a10db0a..a5513f8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## YTLite with more features! -![IMAGE_CERCUBEPLUS_PREVIEW](https://gcdnb.pbrd.co/images/UW3YDgjfwfle.png) +![IMAGE_YTLITEPLUS_PREVIEW](https://gcdnb.pbrd.co/images/UW3YDgjfwfle.png) @@ -61,7 +61,7 @@ Special thanks to these developer(s) for maintaining and improving YTLitePlus (@ -Special thanks to all the developers who have contributed to CercubePlus/YTLitePlus! +Special thanks to all the developers who have contributed to uYouPlus/YTLitePlus! (YTLite is an original tweak by dayanch96 @dayanch96) @@ -232,32 +232,28 @@ any many more... [View source online](https://therealfoxster.github.io/altsource-viewer/app.html?source=https://raw.githubusercontent.com/Balackburn/YTLitePlusAltstore/main/apps.json&id=com.google.ios.youtube) -- Version info: _(May 9 2023)_ +- Version info: _(Jul 18 2023)_
Expand! | **Tweaks/App** | **Developer** | **Version** | **Open source** | | - | - | :-: | :-: | -| **YouTube** | Google Inc | 18.21.3 | ✖︎ | -| **YTLite** | Majd Alfhaily | 5.3.11 | ✖︎ | +| **YouTube** | Google Inc | 18.28.3 | ✖︎ | +| **YTLite** | Dayanch96 | 2.3 | ✖︎ | | **Open in YouTube** | [CokePokes](https://github.com/CokePokes/) | 1.2 | ✖︎ | -| **YTNoShorts** | [MiRO92](https://twitter.com/miro92) | 1.0.2 | [✔︎](https://github.com/MiRO92/YTNoShorts) | -| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) | +| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) | | **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) | -| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) | | **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) | -| **LowContrastMode** | arichorn | 1.2.3 | [✔︎](https://github.com/arichorn/LowContrastMode) | +| **LowContrastMode** | arichorn | 1.3.0 | [✔︎](https://github.com/arichorn/LowContrastMode) | | **YTUHD** | PoomSmart | 1.4.0 | [✔︎](https://github.com/PoomSmart/YTUHD) | -| **YouPiP** | PoomSmart | 1.7.19-2 | [✔︎](https://github.com/PoomSmart/YouPiP) | -| **YouMute** | PoomSmart | 1.1.1-1 | [✔︎](https://github.com/PoomSmart/YouMute) | +| **YouPiP** | PoomSmart | 1.7.20 | [✔︎](https://github.com/PoomSmart/YouPiP) | +| **YTVideoOverlay** | PoomSmart | 1.1.0 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) | +| **YouQuality** | PoomSmart | 1.1.2 | [✔︎](https://github.com/PoomSmart/YouQuality) | +| **YouMute** | PoomSmart | 1.2.1 | [✔︎](https://github.com/PoomSmart/YouMute) | | **YTABConfig** | PoomSmart | 1.5.0-1 | [✔︎](https://github.com/PoomSmart/YTABConfig) | -| **YTNoCommunityPosts** | [michael-winay](https://github.com/michael-winay) | 0.0.1 | [✔︎](https://github.com/michael-winay/YTNoCommunityPosts) | -| **IAmYouTube** | PoomSmart | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) | -| **YTReExplore** | PoomSmart | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) | -| **YTNoPaidPromo** | PoomSmart | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) | -| **YTAutoFullScreen** | PoomSmart | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) | | **Return YouTube Dislike** | PoomSmart | 1.11.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) | +| **YTNoCommunityPosts** | [michael-winay](https://github.com/michael-winay) | 0.0.1 | [✔︎](https://github.com/michael-winay/YTNoCommunityPosts) |
diff --git a/Source/LowContrastMode.xm b/Source/LowContrastMode.xm index c308fad..c5c48c6 100644 --- a/Source/LowContrastMode.xm +++ b/Source/LowContrastMode.xm @@ -156,29 +156,25 @@ static BOOL pinkContrastMode() { %orig(textColor); } %end -/* disabled the code to stop crashing +/* disabled the code, not sure if this will work %hook _ASDisplayView - (void)didMoveToWindow { - %orig; - UILabel *label = [self findLabelInSubviews:self.subviews]; - if (label) { - [self customizeLabel:label]; - } -} -- (UILabel *)findLabelInSubviews:(NSArray *)subviews { - for (UIView *subview in subviews) { - if ([subview isKindOfClass:[UILabel class]]) { - return (UILabel *)subview; - } - UILabel *label = [self findLabelInSubviews:subview.subviews]; - if (label) { - return label; + %orig; + if ([self isKindOfClass:NSClassFromString(@"ASDisplayNode")]) { + UILabel *titleLabel = [self valueForKey:@"accessibilityLabel"]; + UIView *superview = [self valueForKey:@"superview"]; + if ([titleLabel isKindOfClass:[UILabel class]]) { + titleLabel.textColor = [UIColor whiteColor]; + } + if ([superview isKindOfClass:[UIView class]]) { + for (UIView *subview in superview.subviews) { + if ([subview isKindOfClass:[UILabel class]]) { + UILabel *textView = (UILabel *)subview; + textView.textColor = [UIColor whiteColor]; + } + } } } - return nil; -} -- (void)customizeLabel:(UILabel *)label { - label.textColor = [UIColor whiteColor]; } %end */ diff --git a/Source/Settings.xm b/Source/Settings.xm index 301fdc5..36ff505 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -18,7 +18,7 @@ static int colorContrastMode() { static int appVersionSpoofer() { return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"]; } -static const NSInteger YTLitePlusSection = 500; +static const NSInteger YTLitePlusSection = 788; @interface YTSettingsSectionItemManager (YTLitePlus) - (void)updateYTLitePlusSectionWithEntry:(id)entry; @@ -64,35 +64,6 @@ extern NSBundle *YTLitePlusBundle(); }]; [sectionItems addObject:main]; -# pragma mark - VideoPlayer - YTSettingsSectionItem *videoPlayerGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_PLAYER_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_MINIPLAYER") - titleDescription:LOC(@"YT_MINIPLAYER_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"ytMiniPlayer_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytMiniPlayer_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"STOCK_VOLUME_HUD") - titleDescription:LOC(@"STOCK_VOLUME_HUD_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"stockVolumeHUD_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"stockVolumeHUD_enabled"]; - return YES; - } - settingItemId:0] - ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_PLAYER_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; - [settingsViewController pushViewController:picker]; - return YES; - }]; - [sectionItems addObject:videoPlayerGroup]; - # pragma mark - Video Controls Overlay Options YTSettingsSectionItem *videoControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ @@ -430,6 +401,16 @@ extern NSBundle *YTLitePlusBundle(); } settingItemId:0], + [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"STOCK_VOLUME_HUD") + titleDescription:LOC(@"STOCK_VOLUME_HUD_DESC") + accessibilityIdentifier:nil + switchOn:IsEnabled(@"stockVolumeHUD_enabled") + switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { + [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"stockVolumeHUD_enabled"]; + return YES; + } + settingItemId:0], + [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_CAST_BUTTON") titleDescription:LOC(@"HIDE_CAST_BUTTON_DESC") accessibilityIdentifier:nil @@ -459,7 +440,17 @@ extern NSBundle *YTLitePlusBundle(); return YES; } settingItemId:0], - + + [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_SPEED") + titleDescription:LOC(@"YT_SPEED_DESC") + accessibilityIdentifier:nil + switchOn:IsEnabled(@"ytSpeed_enabled") + switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { + [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytSpeed_enabled"]; + return YES; + } + settingItemId:0], + [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX") titleDescription:LOC(@"ENABLE_FLEX_DESC") accessibilityIdentifier:nil diff --git a/YTLitePlus.xm b/YTLitePlus.xm index 8cf853d..755c8ef 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -270,6 +270,55 @@ static BOOL IsEnabled(NSString *key) { %end %end +// YTSpeed - https://github.com/Lyvendia/YTSpeed (Only works on YouTube v16.05.7-v18.18.2) +%group gYTSpeed +%hook YTVarispeedSwitchController +- (id)init { + id result = %orig; + + const int size = 17; + float speeds[] = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 5.0}; + id varispeedSwitchControllerOptions[size]; + + for (int i = 0; i < size; ++i) { + id title = [NSString stringWithFormat:@"%.2fx", speeds[i]]; + varispeedSwitchControllerOptions[i] = [[%c(YTVarispeedSwitchControllerOption) alloc] initWithTitle:title rate:speeds[i]]; + } + + NSUInteger count = sizeof(varispeedSwitchControllerOptions) / sizeof(id); + NSArray *varispeedArray = [NSArray arrayWithObjects:varispeedSwitchControllerOptions count:count]; + MSHookIvar(self, "_options") = varispeedArray; + + return result; +} +%end + +%hook MLHAMQueuePlayer +- (void)setRate:(float)rate { + MSHookIvar(self, "_rate") = rate; + MSHookIvar(self, "_preferredRate") = rate; + + id player = MSHookIvar(self, "_player"); + [player setRate: rate]; + + id stickySettings = MSHookIvar(self, "_stickySettings"); + [stickySettings setRate: rate]; + + [self.playerEventCenter broadcastRateChange: rate]; + + YTSingleVideoController *singleVideoController = self.delegate; + [singleVideoController playerRateDidChange: rate]; +} +%end + +%hook YTPlayerViewController +%property (nonatomic, assign) float playbackRate; +- (void)singleVideo:(id)video playbackRateDidChange:(float)rate { + %orig; +} +%end +%end + // YTStockVolumeHUD - https://github.com/lilacvibes/YTStockVolumeHUD %group gStockVolumeHUD %hook YTVolumeBarView @@ -366,6 +415,9 @@ static BOOL IsEnabled(NSString *key) { if (IsEnabled(@"ytNoModernUI_enabled")) { %init(gYTNoModernUI); } + if (IsEnabled(@"ytSpeed_enabled")) { + %init(gYTSpeed); + } if (IsEnabled(@"stockVolumeHUD_enabled")) { %init(gStockVolumeHUD); }