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!
-
+
@@ -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);
}