Compare commits

...
Author SHA1 Message Date
qnblackcat c85d928952 change the default value of some uYou's options 2022-10-03 17:20:30 +07:00
qnblackcat 9ce39051ef update submodules 2022-10-03 09:36:40 +07:00
qnblackcat cb2c7ff951 update strings 2022-10-03 09:36:26 +07:00
Nguyễn Đạt 223a0b094b Merge pull request #512 from moh-ter/main
Update Arabic Localization
2022-10-03 09:12:49 +07:00
moh-ter 36a1f12671 Update Localizable.strings 2022-10-03 01:06:40 +03:00
PoomSmart 6b799b5c01 Copy YTUHD and RYD bundles to the sideloaded app 2022-10-02 09:03:20 +07:00
Nguyễn Đạt fc392e1742 Merge pull request #509 from darkbrow/main
Update Localizable.strings
2022-10-01 23:05:17 +07:00
darkbrow 87813f8acb Update Localizable.strings 2022-10-02 00:59:53 +09:00
Nguyễn Đạt 5f659617e9 Merge pull request #508 from darkbrow/main
Update Korean localization
2022-10-01 22:27:32 +07:00
Jinbong 645036d28e Update Korean localization 2022-10-02 00:04:50 +09:00
Nguyễn Đạt f00e66bded I'm losing my sanity... 2022-09-29 17:40:55 +07:00
qnblackcat f91287b737 update strings 2022-09-28 11:05:31 +07:00
Nguyễn Đạt 58abfbaffd Merge pull request #493 from arichorn/qnblackcat-pull
Add DontEatMyContent by @therealFoxster
2022-09-28 10:59:23 +07:00
Nguyễn Đạt dad5377435 Update Header.h 2022-09-28 10:58:06 +07:00
Nguyễn Đạt a902d90449 clean up 2022-09-28 10:56:55 +07:00
Nguyễn Đạt 2657f8ca7c clean up 2022-09-28 10:52:39 +07:00
qnblackcat dcb41ab74d update submodules 2022-09-28 10:35:46 +07:00
qnblackcat 0147865c53 update template 2022-09-28 10:35:32 +07:00
Aric b56461a439 Merge branch 'qnblackcat:main' into qnblackcat-pull 2022-09-25 10:36:11 -05:00
Aric 9d27a3b9c0 Fixed Duplicate Interface
My apologies, I mistakenly added a duplicate piece of @interface code that would prevent uYouPlus to build but should work now!
2022-09-25 09:03:52 -05:00
qnblackcat ea309fd094 update AltStore link for v17.37.3-2.1 2022-09-25 17:44:49 +07:00
Aric 1bed1db404 Localization Support
English Localization.
2022-09-24 19:49:59 -05:00
Aric c864966f11 DontEatMyContent - @therealFoxster
Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube
2022-09-24 19:40:50 -05:00
Nguyễn Đạt 409537eba3 Merge pull request #490 from ErSpieltHD/patch-3
Added new options
2022-09-24 07:41:07 +07:00
ErSpieltHD 6604f5e497 Added new options 2022-09-23 20:30:35 +02:00
qnblackcat 0b64741d50 the Github action should not remove binary's entitlements... 2022-09-23 22:34:30 +07:00
qnblackcat 34a66bec01 update submodules 2022-09-23 22:29:39 +07:00
Nguyễn Đạt dcb1a2aba1 Merge pull request #487 from VictorxD70/main
Update Portuguese localization
2022-09-23 10:37:53 +07:00
Victor Alves db1318b576 Update Portuguese localization 2022-09-22 18:17:13 -03:00
25 changed files with 338 additions and 59 deletions
+7 -5
View File
@@ -1,6 +1,6 @@
--- ---
name: Bug name: Bug
about: Create a report to help us improve about: Make sure you complete the template. Otherwise, it will be closed without further explanation!
title: "[Bug]" title: "[Bug]"
labels: bug labels: bug
assignees: '' assignees: ''
@@ -14,8 +14,8 @@ _Make sure you complete the template. Otherwise, it will be closed without furth
### Device info ### Device info
- iOS/iPadOS version: - iOS/iPadOS version:
- Device model: - Device model:
- Sideload tool (Ex: AltStore, Sideloadly...) - Sideload tool (Ex: AltStore, Sideloadly, TrollStore,...)
- Version of uYouPlus: _**latest** or **newest** is NOT a version number!!_ - The specific version of uYouPlus: _**latest** or **newest** is NOT a version number!!_
### Describe the bug ### Describe the bug
@@ -23,9 +23,11 @@ _Make sure you complete the template. Otherwise, it will be closed without furth
### How to reproduce the bug ### How to reproduce the bug
_(Please attach videos or screenshots if possible)_ _(Please attach videos or screenshots if possible)_
### Crash log (if possible) ### Crash log (if possible)
_(The crash log can be found in the Settings app - Privacy - Analytics & Improvements - Analytics Data - Youtube...)_ _(The crash log can be found in the Settings app > Privacy > Analytics & Improvements > Analytics Data > Youtube...)_
### Are you using the newest version of uYouPlus? If not, why?
_(Developers spend time and effort to fix bugs & add improvements with every release. Why don't you update to the latest version before reporting about an issue???)_
### Does the issue happen with the official YouTube from AppStore? ### Does the issue happen with the official YouTube from AppStore?
_(Well, YouTube itself is buggy sometimes...)_ _(Well, YouTube itself is buggy sometimes...)_
+2 -2
View File
@@ -9,7 +9,7 @@ on:
uyou_version: uyou_version:
description: "The version of uYou" description: "The version of uYou"
default: "2.1" default: "2.1"
required: false required: true
type: string type: string
decrypted_youtube_url: decrypted_youtube_url:
description: "The direct URL to the decrypted YouTube ipa" description: "The direct URL to the decrypted YouTube ipa"
@@ -66,7 +66,7 @@ jobs:
- name: Setup Theos Jailed - name: Setup Theos Jailed
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
repository: kabiroberai/theos-jailed repository: qnblackcat/theos-jailed
ref: master ref: master
path: theos-jailed path: theos-jailed
submodules: recursive submodules: recursive
+27 -1
View File
@@ -3,6 +3,8 @@
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil] #define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
#define YT_BUNDLE_ID @"com.google.ios.youtube" #define YT_BUNDLE_ID @"com.google.ios.youtube"
#define YT_NAME @"YouTube" #define YT_NAME @"YouTube"
#define UNSUPPORTED_DEVICES @[@"iPhone14,3", @"iPhone14,6", @"iPhone14,8"] // DontEatMycontent
#define THRESHOLD 1.99 // DontEatMycontent
// IAmYouTube // IAmYouTube
@interface SSOConfiguration : NSObject @interface SSOConfiguration : NSObject
@@ -37,6 +39,28 @@
- (float)progress; - (float)progress;
@end @end
// DontEatMyContent
NSString* deviceName();
BOOL isDeviceSupported();
void activate();
void deactivate();
void center();
@interface YTPlayerView : UIView
- (BOOL)zoomToFill;
- (id)renderingView;
- (id)playerView;
@end
@interface MLHAMSBDLSampleBufferRenderingView : UIView
@end
@interface YTMainAppVideoPlayerOverlayViewController : UIViewController
- (BOOL)isFullscreen;
- (id)videoPlayerOverlayView;
- (id)activeVideoPlayerOverlay;
@end
// iOS16 fix // iOS16 fix
@interface OBPrivacyLinkButton : UIButton @interface OBPrivacyLinkButton : UIButton
- (instancetype)initWithCaption:(NSString *)caption - (instancetype)initWithCaption:(NSString *)caption
@@ -63,6 +87,8 @@
// YTAutoFullScreen // YTAutoFullScreen
@interface YTPlayerViewController (YTAFS) @interface YTPlayerViewController (YTAFS)
- (void)autoFullscreen; - (void)autoFullscreen;
- (id)activeVideoPlayerOverlay; // DontEatMycontent
- (id)playerView; // DontEatMycontent
@end @end
// OLED Darkmode // OLED Darkmode
@@ -94,4 +120,4 @@
@end @end
@interface UIPredictionViewController : UIViewController @interface UIPredictionViewController : UIViewController
@end @end
+2
View File
@@ -25,6 +25,8 @@ before-package::
@echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m" @echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
@mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \; @mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \;
@cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/ @cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/
@cp -R Tweaks/YTUHD/layout/Library/Application\ Support/YTUHD.bundle Resources/
@cp -R Tweaks/Return-YouTube-Dislikes/layout/Library/Application\ Support/RYD.bundle Resources/
@cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/ @cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/
@cp -R Tweaks/uYou/Library/Application\ Support/uYouBundle.bundle Resources/ @cp -R Tweaks/uYou/Library/Application\ Support/uYouBundle.bundle Resources/
@cp -R lang/uYouPlus.bundle Resources/ @cp -R lang/uYouPlus.bundle Resources/
+3 -3
View File
@@ -80,16 +80,16 @@
- My official AltStore repo: https://qnblackcat.github.io/AltStore/ - My official AltStore repo: https://qnblackcat.github.io/AltStore/
- [Open in AltStore (v17.36.4-2.1)](https://tinyurl.com/bdezph3t) - It will take a while to install because AltStore needs to download the IPA. - [Open in AltStore (v17.37.3-2.1)](https://tinyurl.com/2p8pd9n7) - It will take a while to install because AltStore needs to download the IPA.
- Version info: _(last update: Sep 17)_ - Version info: _(last update: Sep 24)_
<details> <details>
<summary>Expand</summary> <summary>Expand</summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** | | **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: | | - | - | :-: | :-: |
| **YouTube** | Google Inc | 17.36.4 | ✖︎ | | **YouTube** | Google Inc | 17.37.3 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ | | [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ |
| [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | [CokePokes](https://github.com/CokePokes) | 1.2 | ✖︎ | | [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | [CokePokes](https://github.com/CokePokes) | 1.2 | ✖︎ |
| **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.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
+12 -2
View File
@@ -25,6 +25,7 @@ extern BOOL hidePreviousAndNextButton();
extern BOOL hidePaidPromotionCard(); extern BOOL hidePaidPromotionCard();
extern BOOL fixGoogleSignIn(); extern BOOL fixGoogleSignIn();
extern BOOL replacePreviousAndNextButton(); extern BOOL replacePreviousAndNextButton();
extern BOOL dontEatMyContent();
// Settings // Settings
%hook YTAppSettingsPresentationData %hook YTAppSettingsPresentationData
@@ -53,6 +54,15 @@ extern BOOL replacePreviousAndNextButton();
exit(0); exit(0);
}]; }];
YTSettingsSectionItem *dontEatMyContent = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"DONT_EAT_MY_CONTENT") titleDescription:LOC(@"DONT_EAT_MY_CONTENT_DESC")];
dontEatMyContent.hasSwitch = YES;
dontEatMyContent.switchVisible = YES;
dontEatMyContent.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"dontEatMyContent_enabled"];
dontEatMyContent.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"dontEatMyContent_enabled"];
return YES;
};
YTSettingsSectionItem *replacePreviousAndNextButton = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON") titleDescription:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC")]; YTSettingsSectionItem *replacePreviousAndNextButton = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON") titleDescription:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC")];
replacePreviousAndNextButton.hasSwitch = YES; replacePreviousAndNextButton.hasSwitch = YES;
replacePreviousAndNextButton.switchVisible = YES; replacePreviousAndNextButton.switchVisible = YES;
@@ -188,7 +198,7 @@ extern BOOL replacePreviousAndNextButton();
return YES; return YES;
}; };
NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, fixGoogleSignIn, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, replacePreviousAndNextButton, reExplore]]; NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, fixGoogleSignIn, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, dontEatMyContent, replacePreviousAndNextButton, reExplore]];
[delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO]; [delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO];
} }
@@ -199,4 +209,4 @@ extern BOOL replacePreviousAndNextButton();
} }
%orig; %orig;
} }
%end %end
@@ -1,5 +1,8 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "منع النوتش/الجزيرة التفاعلية على مقاطع 2:1 (أداة DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "منع النوتش/الجزيرة التفاعلية من قص المقاطع التي تكون نسبة العرض إلى الارتفاع فيها تساوي 2:1. يتطلب إعادة تشغيل التطبيق.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "تقدم وتراجع بدلاً من السابق والتالي"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "تقدم وتراجع بدلاً من السابق والتالي";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "استبدال زرّي المقطع السابق والمقطع التالي بزرّي تقدم وتراجع. يتطلب إعادة تشغيل التطبيق."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "استبدال زرّي المقطع السابق والمقطع التالي بزرّي تقدم وتراجع. يتطلب إعادة تشغيل التطبيق.";
@@ -1,16 +1,15 @@
// How to translate uYouPlus to your languate:
//
// 1. Fork uYouPlus repo
// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id.
// For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
// 3. Translate each line below after each =
// 4. Open a Pull Request
//
// If your language already exists then feel free to check it and/or improve it!
// You can also add your localiztion to YouPiP here, the process is the same
// https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
//
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Zabránit zářezu/ostrovu na videoobsahu 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Zabraňte tomu, aby zářez/Dynamic Island žvýkal video obsah 2:1 na YouTube. Je vyžadován restart aplikace.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Nahradit předchozí a další tlačítko";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Nahradit předchozí a následující tlačítko tlačítkem Přetočit vpřed a vzad. Je vyžadován restart aplikace.";
"FIX_GOOGLE_SIGNIN" = "Opravit přihlášení přes Google (pouze pro uživatele TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Tuto možnost zapněte pouze v případě, že se nemůžete přihlásit pomocí svého účtu Google a aplikace byla nainstalována prostřednictvím TrollStore. Pokud se můžete normálně přihlásit, ponechte ji deaktivovanou. Je vyžadován restart aplikace.";
"KILL_APP" = "Zavřít YouTube";
"KILL_APP_DESC" = "Klepnutím sem zavřete YouTube!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Skrýt tlačítka předchozí a následující"; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Skrýt tlačítka předchozí a následující";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Skryje tlačítka předchozí a následující v překrytí ovládání videa."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Skryje tlačítka předchozí a následující v překrytí ovládání videa.";
@@ -1,16 +1,36 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Kerbe/Insel bei 2:1-Videoinhalten verhindern (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Verhindert, dass die Notch/Dynamic Island 2:1-Videoinhalte auf YouTube kaut. Neustart der App erforderlich.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Zurück- und Weiter-Schaltfläche ersetzen";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Ersetzen Sie die Schaltflächen „Zurück“ und „Weiter“ durch die Schaltflächen „Schnellvorlauf“ und „Rücklauf“. App-Neustart ist erforderlich.“;
"FIX_GOOGLE_SIGNIN" = "Google-Anmeldung reparieren (nur für TrollStore-Benutzer)";
"FIX_GOOGLE_SIGNIN_DESC" = "Aktivieren Sie diese Option nur, wenn Sie sich nicht mit Ihrem Google-Konto anmelden können und die App über den TrollStore installiert wurde. Wenn Sie sich normal anmelden können, lassen Sie sie deaktiviert. Ein Neustart der App ist erforderlich.";
"KILL_APP" = "YouTube schließen";
"KILL_APP_DESC" = "Hier tippen, um YouTube zu schließen!";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Vor- und Zurücktasten ersetzen";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Vor- und Zurücktasten mit Vor- und Zurückspultasten ersetzen. App restart is required.";
"FIX_GOOGLE_SIGNIN" = "Google-Anmeldung beheben (nur für TrollStore Benutzer!)";
"FIX_GOOGLE_SIGNIN_DESC" = "Aktiviere diese Option nur, wenn Sie sich nicht mit Ihrem Google-Account anmelden können und die App über TrollStore installiert wurde. Wenn Sie sich normal anmelden können, halte diese Option deaktiviert! App-Neustart erforderlich!";
"KILL_APP" = "YouTube crashen";
"KILL_APP_DESC" = "Tippe hier, um YouTube zum Abstürzen zu bringen!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Vor- und Zurücktasten ausblenden"; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Vor- und Zurücktasten ausblenden";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Vor- und Zurückspultasten vom Videoplayer ausblenden."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Vor- und Zurücktasten vom Videoplayer ausblenden.";
"YT_MINIPLAYER" = "Miniplayer für alle YT Videos aktivieren"; "YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren";
"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder"; "YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder.";
"CAST_CONFIRM" = "Warnung vor TV-Übertragungen (YTCastConfirm)"; "CAST_CONFIRM" = "Warnung vor TV-Übertragungen (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Zeigt eine Warnung an, um eine ausversehene TV-Übertragung zu verhindern."; "CAST_CONFIRM_DESC" = "Zeigt eine Warnung an, um eine ausversehene TV-Übertragung zu verhindern.";
"HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)"; "HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende des Videos ausblenden."; "HIDE_HOVER_CARD_DESC" = "Creator-Endkarten (Thumbnails) am Ende des Videos ausblenden.";
"NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!"; "NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!";
@@ -34,7 +54,7 @@
"OLED_DARKMODE_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart ist erforderlich, wenn diese Option akti-/deaktiviert wird!"; "OLED_DARKMODE_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart ist erforderlich, wenn diese Option akti-/deaktiviert wird!";
"OLED_KEYBOARD" = "OLED-Tastatur (Experimental)"; "OLED_KEYBOARD" = "OLED-Tastatur (Experimental)";
"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich1"; "OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich!";
"HIDE_PAID_PROMOTION_CARDS" = "Enthält bezahlte Werbung Info ausblenden"; "HIDE_PAID_PROMOTION_CARDS" = "Enthält bezahlte Werbung Info ausblenden";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Enthält bezahlte Werbung Infobanner bei manchen Videos ausblenden."; "HIDE_PAID_PROMOTION_CARDS_DESC" = "Enthält bezahlte Werbung Infobanner bei manchen Videos ausblenden.";
@@ -1,4 +1,15 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Αποτροπή Notch/Island σε περιεχόμενο βίντεο 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Αποτρέψτε το notch/Dynamic Island από το να μασουλάει περιεχόμενο βίντεο 2:1 στο YouTube. Απαιτείται επανεκκίνηση της εφαρμογής.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Αντικατάσταση του Προηγούμενου και του Επόμενου Κουμπιού";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Αντικατάσταση του Προηγούμενου και του Επόμενου κουμπιού με το κουμπί Γρήγορη κίνηση προς τα εμπρός και προς τα πίσω. Απαιτείται επανεκκίνηση της εφαρμογής.";
"FIX_GOOGLE_SIGNIN" = "Διόρθωση σύνδεσης Google (μόνο για χρήστες του TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Ενεργοποιήστε αυτήν την επιλογή μόνο όταν δεν μπορείτε να συνδεθείτε με τον λογαριασμό σας Google και η εφαρμογή έχει εγκατασταθεί μέσω του TrollStore. Εάν μπορείτε να συνδεθείτε κανονικά, διατηρήστε την απενεργοποιημένη. Απαιτείται επανεκκίνηση της εφαρμογής.";
"KILL_APP" = "Κλείσιμο YouTube";
"KILL_APP_DESC" = "Πατήστε εδώ για να κλείσετε το YouTube!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί"; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί κατά την αναπαραγωγή βίντεο."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί κατά την αναπαραγωγή βίντεο.";
@@ -1,5 +1,8 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
@@ -1,4 +1,12 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Evitar Notch/Island en contenido de video 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Evite que la muesca/Dynamic Island se trague contenido de video 2:1 en YouTube. Es necesario reiniciar la aplicación.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Reemplazar botón anterior y siguiente";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Reemplace el botón Anterior y Siguiente con el botón Avance rápido y Rebobinado. Es necesario reiniciar la aplicación.";
"FIX_GOOGLE_SIGNIN" = "Reparar el inicio de sesión de Google (solo para usuarios de TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Active esta opción solo cuando no pueda iniciar sesión con su cuenta de Google y la aplicación se instaló a través de TrollStore. Si puede iniciar sesión normalmente, manténgala desactivada. Es necesario reiniciar la aplicación.";
"KILL_APP" = "Cerrar YouTube"; "KILL_APP" = "Cerrar YouTube";
"KILL_APP_DESC" = "Toca aquí para cerrar YouTube!"; "KILL_APP_DESC" = "Toca aquí para cerrar YouTube!";
@@ -1,4 +1,12 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Evitar Notch/Island en contenido de video 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Evite que la muesca/Dynamic Island se trague contenido de video 2:1 en YouTube. Es necesario reiniciar la aplicación.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Reemplazar botón anterior y siguiente";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Reemplace el botón Anterior y Siguiente con el botón Avance rápido y Rebobinado. Es necesario reiniciar la aplicación.";
"FIX_GOOGLE_SIGNIN" = "Reparar el inicio de sesión de Google (solo para usuarios de TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Active esta opción solo cuando no pueda iniciar sesión con su cuenta de Google y la aplicación se instaló a través de TrollStore. Si puede iniciar sesión normalmente, manténgala desactivada. Es necesario reiniciar la aplicación.";
"KILL_APP" = "Fermer YouTube"; "KILL_APP" = "Fermer YouTube";
"KILL_APP_DESC" = "Appuyez ici pour fermer YouTube !"; "KILL_APP_DESC" = "Appuyez ici pour fermer YouTube !";
@@ -1,4 +1,15 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "מנע חריץ/אי בתוכן וידאו 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "מנע מהחריץ/האי הדינמי ללעוס תוכן וידאו 2:1 ב-YouTube. נדרשת הפעלה מחדש של האפליקציה.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "החלף את הלחצן הקודם והבא";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "החלף את הלחצן הקודם והבא בלחצן הרצה קדימה והאחורה. נדרשת הפעלה מחדש של האפליקציה.";
"FIX_GOOGLE_SIGNIN" = "תקן כניסה של Google (עבור משתמש TrollStore בלבד)";
"FIX_GOOGLE_SIGNIN_DESC" = "הפעל אפשרות זו רק כאשר אינך יכול להיכנס עם חשבון Google שלך והאפליקציה הותקנה דרך TrollStore. אם אתה יכול להתחבר כרגיל, השאר אותה מושבתת. נדרשת הפעלה מחדש של האפליקציה.";
"KILL_APP" = "סגור את YouTube";
"KILL_APP_DESC" = "הקש כאן כדי לסגור את YouTube!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "הסתר את הקודם והבא"; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "הסתר את הקודם והבא";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "הסתר את כפתורי הקודם והבא בתצוגת השליטה בסרטון."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "הסתר את כפתורי הקודם והבא בתצוגת השליטה בסרטון.";
@@ -1,9 +1,11 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "노치/아일랜드 영역이 2:1 비율 비디오를 가리지 않게 함 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "노치/다이내믹 아일랜드 영역이 유튜브의 2:1 비율 영상 일부를 가리는 것을 막아줍니다. 앱을 다시 시작해야 합니다.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "이전, 다음 재생 버튼 교체"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "이전, 다음 재생 버튼 교체";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "이전 재생, 다음 재생 버튼을 빨리 감기, 되감기 버튼으로 교체합니다. 앱을 다시 시작해야 합니다."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "이전 재생, 다음 재생 버튼을 빨리 감기, 되감기 버튼으로 교체합니다. 앱을 다시 시작해야 합니다.";
"FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자 대상)"; "FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자만 해당)";
"FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에서만 동작합니다: 구글 계정으로 로그인하려면 이 옵션을 켜 주세요. 앱을 다시 시작해야 합니다."; "FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에서만 동작합니다: 구글 계정으로 로그인하려면 이 옵션을 켜 주세요. 앱을 다시 시작해야 합니다.";
"KILL_APP" = "YouTube 닫기"; "KILL_APP" = "YouTube 닫기";
@@ -13,7 +15,7 @@
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "비디오 재생 오버레이에서 이전 재생, 다음 재생 버튼을 숨깁니다."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "비디오 재생 오버레이에서 이전 재생, 다음 재생 버튼을 숨깁니다.";
"YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화"; "YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화";
"YT_MINIPLAYER_DESC" = "아동용 영상일 경우."; "YT_MINIPLAYER_DESC" = "유튜브 키즈의 영상 같은 경우.";
"CAST_CONFIRM" = "TV 전송 알림 (YTCastConfirm)"; "CAST_CONFIRM" = "TV 전송 알림 (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "의도치 않게 TV로 영상을 전송하지 않도록 보내기 전에 확인 메시지를 표시합니다."; "CAST_CONFIRM_DESC" = "의도치 않게 TV로 영상을 전송하지 않도록 보내기 전에 확인 메시지를 표시합니다.";
@@ -1,9 +1,10 @@
// Settings // Settings
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Substituir o botão Anterior e Próximo"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Substituir o botão Anterior e Próximo";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Substitui o botão Anterior e Próximo pelo botão Avançar e Retroceder. A reinicialização do app é necessária."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Substitui o botão Anterior e Próximo pelo botão Avançar e Retroceder. A reinicialização do app é necessária.";
"FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)"; "FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Funciona apenas quando o app foi instalado via TrollStore: ative esta opção para que você possa fazer login com sua conta do Google. A reinicialização do app é necessária."; "FIX_GOOGLE_SIGNIN_DESC" = "Ative esta opção somente quando você não conseguir fazer login com sua conta do Google e o aplicativo foi instalado via TrollStore. Se você conseguir fazer login normalmente, mantenha-o desativado. A reinicialização do app é necessária.";
"KILL_APP" = "Fechar o YouTube"; "KILL_APP" = "Fechar o YouTube";
"KILL_APP_DESC" = "Toque aqui para fechar o YouTube!"; "KILL_APP_DESC" = "Toque aqui para fechar o YouTube!";
@@ -1,4 +1,15 @@
/* uYouPlusSettings */ /* uYouPlusSettings */
"DONT_EAT_MY_CONTENT" = "Предотвратить выемку/остров на видеоконтенте 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Не позволяйте вырезу/Dynamic Island поглощать видеоконтент 2:1 на YouTube. Требуется перезапуск приложения.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Заменить кнопку "Назад" и "Далее";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Замените кнопки «Назад» и «Далее» на кнопки «Перемотка вперед» и «Назад». Требуется перезапуск приложения.";
"FIX_GOOGLE_SIGNIN" = "Исправить вход через Google (только для пользователя TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Включайте эту опцию, только если вы не можете войти в свою учетную запись Google и приложение было установлено через TrollStore. Если вы можете нормально войти в систему, оставьте ее отключенной. Требуется перезапуск приложения.";
"KILL_APP" = "Закрыть YouTube";
"KILL_APP_DESC" = "Нажмите здесь, чтобы закрыть YouTube!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «Пред.» и «След.»"; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «Пред.» и «След.»";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Убирает кнопки переключения видео «Следующий» и «Предыдущий» с плеера."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Убирает кнопки переключения видео «Следующий» и «Предыдущий» с плеера.";
@@ -1,16 +1,20 @@
// How to translate uYouPlus to your language: /* Read me:
// - How to translate uYouPlus (if your language already exists then feel free to check it and/or improve it):
// 1. Fork uYouPlus repo 1. Fork uYouPlus repo
// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id. 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id.
// For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
// 3. Translate each line below after each = 3. Translate each line below after each =
// 4. Open a Pull Request 4. Open a Pull Request
//
// If your language already exists then feel free to check it and/or improve it! - You can also add your localization to YouPiP, YTUHD and Return YouTube Dislike. The process is the same:
// You can also add your localization to YouPiP here, the process is the same https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
// https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle https://github.com/PoomSmart/YTUHD/tree/master/layout/Library/Application%20Support/YTUHD.bundle
// https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Application%20Support/RYD.bundle
*/
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
@@ -1,4 +1,6 @@
// Settings // Settings
"DONT_EAT_MY_CONTENT" = "Ẩn tai thỏ/Dynamic Island (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Ẩn tai thỏ/Dynamic Island chèn vào các video có tỷ lệ 2:1. Cần khởi động lại ứng dụng.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Thay thế nút chuyển video"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Thay thế nút chuyển video";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Thay thế nút chuyển video bằng nút tua nhanh. Cần khởi động lại ứng dụng."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Thay thế nút chuyển video bằng nút tua nhanh. Cần khởi động lại ứng dụng.";
+165 -9
View File
@@ -2,6 +2,8 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <objc/runtime.h> #import <objc/runtime.h>
#import <dlfcn.h> #import <dlfcn.h>
#import <sys/utsname.h>
#import <substrate.h>
#import "Header.h" #import "Header.h"
#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h" #import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h" #import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
@@ -98,14 +100,11 @@ BOOL fixGoogleSignIn() {
BOOL replacePreviousAndNextButton() { BOOL replacePreviousAndNextButton() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"replacePreviousAndNextButton_enabled"]; return [[NSUserDefaults standardUserDefaults] boolForKey:@"replacePreviousAndNextButton_enabled"];
} }
BOOL dontEatMyContent() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"dontEatMyContent_enabled"];
}
# pragma mark - Tweaks # pragma mark - Tweaks
// Enable Reorder videos from playlist while on the Watch page - @PoomSmart
%hook YTIPlaylistPanelVideoRenderer
%new
- (BOOL)canReorder { return YES; }
%end
// Skips content warning before playing *some videos - @PoomSmart // Skips content warning before playing *some videos - @PoomSmart
%hook YTPlayabilityResolutionUserActionUIController %hook YTPlayabilityResolutionUserActionUIController
- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; } - (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; }
@@ -876,6 +875,142 @@ static void replaceTab(YTIGuideResponse *response) {
%end %end
%end %end
// DontEatMyContent - @therealFoxster: https://github.com/therealFoxster/DontEatMyContent
double aspectRatio = 16/9;
bool zoomedToFill = false;
MLHAMSBDLSampleBufferRenderingView *renderingView;
NSLayoutConstraint *widthConstraint, *heightConstraint, *centerXConstraint, *centerYConstraint;
%group gDontEatMyContent
%hook YTPlayerViewController
- (void)viewDidAppear:(BOOL)animated {
YTPlayerView *playerView = [self playerView];
UIView *renderingViewContainer = MSHookIvar<UIView *>(playerView, "_renderingViewContainer");
renderingView = [playerView renderingView];
CGFloat constant = 23; // Make renderingView a bit larger since safe area has sizeable margins from the notch and side borders; tested on iPhone 13 mini
widthConstraint = [renderingView.widthAnchor constraintEqualToAnchor:renderingViewContainer.safeAreaLayoutGuide.widthAnchor constant:constant];
heightConstraint = [renderingView.heightAnchor constraintEqualToAnchor:renderingViewContainer.safeAreaLayoutGuide.heightAnchor constant:constant];
centerXConstraint = [renderingView.centerXAnchor constraintEqualToAnchor:renderingViewContainer.centerXAnchor];
centerYConstraint = [renderingView.centerYAnchor constraintEqualToAnchor:renderingViewContainer.centerYAnchor];
// playerView.backgroundColor = [UIColor greenColor];
// renderingViewContainer.backgroundColor = [UIColor redColor];
// renderingView.backgroundColor = [UIColor blueColor];
YTMainAppVideoPlayerOverlayViewController *activeVideoPlayerOverlay = [self activeVideoPlayerOverlay];
// Must check class since YTInlineMutedPlaybackPlayerOverlayViewController doesn't have -(BOOL)isFullscreen
if ([NSStringFromClass([activeVideoPlayerOverlay class]) isEqualToString:@"YTMainAppVideoPlayerOverlayViewController"] && [activeVideoPlayerOverlay isFullscreen]) {
activate();
} else {
center();
}
%orig(animated);
}
- (void)didPressToggleFullscreen {
YTMainAppVideoPlayerOverlayViewController *activeVideoPlayerOverlay = [self activeVideoPlayerOverlay];
if (![activeVideoPlayerOverlay isFullscreen]) // Entering fullscreen
activate();
else // Exiting fullscreen
deactivate();
%orig;
}
- (void)didSwipeToEnterFullscreen {
%orig; activate();
}
- (void)didSwipeToExitFullscreen {
%orig; deactivate();
}
- (void)singleVideo:(id)arg1 aspectRatioDidChange:(CGFloat)arg2 {
aspectRatio = arg2;
if (aspectRatio == 0.0) {
// App backgrounded
} else if (aspectRatio < THRESHOLD) {
deactivate();
} else {
activate();
}
%orig(arg1, arg2);
}
%end
%hook YTVideoZoomOverlayView
- (void)didRecognizePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
// %log((CGFloat) [pinchGestureRecognizer scale], (CGFloat) [pinchGestureRecognizer velocity]);
if ([pinchGestureRecognizer velocity] <= 0.0) { // >>Zoom out<<
zoomedToFill = false;
activate();
} else if ([pinchGestureRecognizer velocity] > 0.0) { // <<Zoom in>>
zoomedToFill = true;
deactivate();
}
%orig(pinchGestureRecognizer);
}
- (void)flashAndHideSnapIndicator {}
// https://github.com/lgariv/UniZoom/blob/master/Tweak.xm
- (void)setSnapIndicatorVisible:(bool)arg1 {
%orig(NO);
}
%end
%end // gDontEatMyContent
// DontEatMycontent - detecting device model
// https://stackoverflow.com/a/11197770/19227228
NSString* deviceName() {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
}
BOOL isDeviceSupported() {
NSString *identifier = deviceName();
NSArray *unsupportedDevices = UNSUPPORTED_DEVICES;
for (NSString *device in unsupportedDevices) {
if ([device isEqualToString:identifier]) {
return NO;
}
}
if ([identifier containsString:@"iPhone"]) {
NSString *model = [identifier stringByReplacingOccurrencesOfString:@"iPhone" withString:@""];
model = [model stringByReplacingOccurrencesOfString:@"," withString:@"."];
if ([identifier isEqualToString:@"iPhone13,1"]) { // iPhone 12 mini
return YES;
} else if ([model floatValue] >= 14.0) { // iPhone 13 series and newer
return YES;
} else return NO;
} else return NO;
}
void activate() {
if (aspectRatio < THRESHOLD || zoomedToFill) return;
// NSLog(@"activate");
center();
renderingView.translatesAutoresizingMaskIntoConstraints = NO;
widthConstraint.active = YES;
heightConstraint.active = YES;
}
void deactivate() {
// NSLog(@"deactivate");
center();
renderingView.translatesAutoresizingMaskIntoConstraints = YES;
widthConstraint.active = NO;
heightConstraint.active = NO;
}
void center() {
centerXConstraint.active = YES;
centerYConstraint.active = YES;
}
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 // iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
%group iOS16 %group iOS16
%hook OBPrivacyLinkButton %hook OBPrivacyLinkButton
@@ -898,9 +1033,6 @@ static void replaceTab(YTIGuideResponse *response) {
# pragma mark - ctor # pragma mark - ctor
%ctor { %ctor {
%init; %init;
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
}
if (oled()) { if (oled()) {
%init(gOLED); %init(gOLED);
} }
@@ -919,10 +1051,34 @@ static void replaceTab(YTIGuideResponse *response) {
if (replacePreviousAndNextButton()) { if (replacePreviousAndNextButton()) {
%init(gReplacePreviousAndNextButton); %init(gReplacePreviousAndNextButton);
} }
if (dontEatMyContent() && isDeviceSupported()) {
%init(gDontEatMyContent);
}
if (@available(iOS 16, *)) { if (@available(iOS 16, *)) {
%init(iOS16); %init(iOS16);
} }
if (!fixGoogleSignIn()) { if (!fixGoogleSignIn()) {
%init(gFixGoogleSignIn); %init(gFixGoogleSignIn);
} }
// Disable broken options of uYou
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"removeYouTubeAds"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"];
// Change the default value of some uYou's options
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
}
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouButtonVideoControlsOverlay"]) {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouButtonVideoControlsOverlay"];
}
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouPiPButtonVideoControlsOverlay"]) {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouPiPButtonVideoControlsOverlay"];
}
// if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouRepeatButtonVideoControlsOverlay"]) {
// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouRepeatButtonVideoControlsOverlay"];
// }
// if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouRightRotateButtonVideoControlsOverlay"]) {
// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouRightRotateButtonVideoControlsOverlay"];
// }
} }