Compare commits

..
Author SHA1 Message Date
qnblackcat ad2c426fe6 typo :/ 2022-09-20 18:25:17 +07:00
qnblackcat e6835b9e33 fix Google sign in, again. Thanks to @AhmedBafkir and @kkirby - https://gist.github.com/AhmedBafkir/0c16b806b3fb233995aa01b93da44f93 2022-09-20 18:16:35 +07:00
qnblackcat 5741ae5584 better explanation 2022-09-20 18:14:56 +07:00
qnblackcat aa338eab73 disable device_challenge_request hack? 2022-09-18 17:00:46 +07:00
qnblackcat 799a98951a v17.36.4-2.1 2022-09-17 10:20:33 +07:00
qnblackcat 8b95b82492 udpate uYouPlus.xm 2022-09-17 10:20:24 +07:00
qnblackcat 4a5f1dae69 update submodules 2022-09-17 10:20:17 +07:00
Nguyễn Đạt e896843357 Merge pull request #451 from VictorxD70/main
Update Portuguese strings
2022-09-14 09:54:29 +07:00
Nguyễn Đạt 4c5a201831 Merge pull request #452 from darkbrow/main
Update Korean localization
2022-09-14 09:54:18 +07:00
Jinbong cce821741d Update Korean localization 2022-09-14 06:33:32 +09:00
Victor Alves c4fd520a3d Update Portuguese strings 2022-09-13 03:51:28 -03:00
Nguyễn Đạt 80c36940f6 v17.36.3-2.1 2022-09-13 13:10:50 +07:00
Nguyễn Đạt 2d17a16aad Merge pull request #450 from moh-ter/main
Update Arabic localization to include the new strings
2022-09-13 07:59:12 +07:00
moh-ter 72a6f1caac Update Localizable.strings 2022-09-12 21:44:36 +03:00
qnblackcat 975cb6005c update submodules 2022-09-10 19:33:15 +07:00
qnblackcat 6180fe7512 update Settings.xm 2022-09-10 19:32:35 +07:00
qnblackcat aed82d4f12 update JA strings 2022-09-10 19:32:09 +07:00
Nguyễn Đạt 44a128d16f Merge pull request #444 from Thunderz2016/main
Update zh_cn translation
2022-09-10 18:04:21 +07:00
Thunderz2016 b1ea29dc6c Add translations for new strings
Translated REPLACE_PREVIOUS_NEXT_BUTTON and FIX_GOOGLE_SIGNIN, corrected quotation marks, and clarified translation for CASTING.
2022-09-10 16:16:31 +08:00
Nguyễn Đạt 85ca0ea633 Merge pull request #436 from qnblackcat/crash-asdisplayview
Fixed app crash on video view (Return YouTube Dislikes)
2022-09-08 16:33:46 +07:00
qnblackcat 377ebec525 v17.35.3-2.1 2022-09-08 16:23:54 +07:00
PoomSmart 99299cc5bf Switched to main 2022-09-08 12:41:17 +07:00
PoomSmart bb5c02272f Wrapped up 2022-09-08 12:26:12 +07:00
PoomSmart 7a128ab908 Test fixing app crash on video view 2022-09-07 22:47:29 +07:00
15 changed files with 92 additions and 34 deletions
+7 -7
View File
@@ -1,4 +1,4 @@
![cydia-1900000830-iphone-0-1628105716 3](https://user-images.githubusercontent.com/52943116/135612614-3d3138cb-2a3d-4ed1-9244-905bab8f5c9f.PNG)
![IMG_2196](https://user-images.githubusercontent.com/52943116/189822859-8a0952db-9264-4b5b-9cbe-d0a87b2db5a0.PNG)
# Table of Contents
@@ -74,22 +74,22 @@
# Download
- **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 13.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases).
- **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 13.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases).
- For AltStore user:
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- [Open in AltStore (v17.34.3-2.1)](https://tinyurl.com/3vjyvwwe) - It will take a while to install because AltStore needs to download the IPA.
- [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.
- Version info: _(last update: Sep 01)_
- Version info: _(last update: Sep 17)_
<details>
<summary>Expand</summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 17.34.3 | ✖︎ |
| **YouTube** | Google Inc | 17.36.4 | ✖︎ |
| [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 | ✖︎ |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
@@ -99,7 +99,7 @@
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.9 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.10 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.9 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
@@ -108,7 +108,7 @@
| **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
| **YTClassicVideoQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.6 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.8 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
</details>
+9 -7
View File
@@ -23,6 +23,8 @@ extern BOOL castConfirm();
extern BOOL ytMiniPlayer();
extern BOOL hidePreviousAndNextButton();
extern BOOL hidePaidPromotionCard();
extern BOOL fixGoogleSignIn();
extern BOOL replacePreviousAndNextButton();
// Settings
%hook YTAppSettingsPresentationData
@@ -60,12 +62,12 @@ extern BOOL hidePaidPromotionCard();
return YES;
};
YTSettingsSectionItem *fixGoogleSigin = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"FIX_GOOGLE_SIGNIN") titleDescription:LOC(@"FIX_GOOGLE_SIGNIN_DESC")];
fixGoogleSigin.hasSwitch = YES;
fixGoogleSigin.switchVisible = YES;
fixGoogleSigin.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"fixGoogleSigin_enabled"];
fixGoogleSigin.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"fixGoogleSigin_enabled"];
YTSettingsSectionItem *fixGoogleSignIn = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"FIX_GOOGLE_SIGNIN") titleDescription:LOC(@"FIX_GOOGLE_SIGNIN_DESC")];
fixGoogleSignIn.hasSwitch = YES;
fixGoogleSignIn.switchVisible = YES;
fixGoogleSignIn.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"fixGoogleSignIn_enabled"];
fixGoogleSignIn.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"fixGoogleSignIn_enabled"];
return YES;
};
@@ -186,7 +188,7 @@ extern BOOL hidePaidPromotionCard();
return YES;
};
NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, fixGoogleSigin, 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, replacePreviousAndNextButton, reExplore]];
[delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO];
}
@@ -1,10 +1,16 @@
// Settings
"REPLACE_PREVIOUS_NEXT_BUTTON" = "تقدم وتراجع بدلاً من السابق والتالي";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "استبدال زرّي المقطع السابق والمقطع التالي بزرّي تقدم وتراجع. يتطلب إعادة تشغيل التطبيق.";
"FIX_GOOGLE_SIGNIN" = "إصلاح تسجيل الدخول بحساب جوجل (لمستخدمي TrollStore فقط)";
"FIX_GOOGLE_SIGNIN_DESC" = "هذا الخيار لا يعمل إلا إذا كان التطبيق مثبت بواسطة TrollStore: فعل هذا الخيار لتتمكن من تسجيل الدخول بحساب جوجل. يتطلب إعادة تشغيل التطبيق.";
"KILL_APP" = "إغلاق تطبيق يوتيوب";
"KILL_APP_DESC" = "المس هنا لإغلاق تطبيق يوتيوب!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "إخفاء زر السابق والتالي";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "إخفاء زرّي السابق والتالي من أزرار التحكم على الفيديو.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "إخفاء زرّي السابق والتالي";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "إخفاء زرّي المقطع السابق والمقطع التالي من أزرار التحكم على الفيديو.";
"YT_MINIPLAYER" = "السماح بالمشغل المصغّر لكل فيديوهات يوتيوب";
"YT_MINIPLAYER_DESC" = "عند تصغير فيديوهات الأطفال مثلاً (قبل إغلاق المقطع).";
@@ -46,4 +52,4 @@
"CASTING" = "البث";
"MSG_ARE_YOU_SURE" = "هل أنت متأكد أنك تريد بدء البث؟";
"MSG_YES" = "نعم";
"MSG_CANCEL" = "إلغاء";
"MSG_CANCEL" = "إلغاء";
@@ -4,7 +4,7 @@
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)";
"FIX_GOOGLE_SIGNIN_DESC" = "Only works when the app was installed via TrollStore: Turn on this option so you can sign in with your Google account. App restart is required.";
"FIX_GOOGLE_SIGNIN_DESC" = "Turn on this option only when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required.";
"KILL_APP" = "Close YouTube";
"KILL_APP_DESC" = "Tap here to close YouTube!";
@@ -1,5 +1,11 @@
// Settings
"REPLACE_PREVIOUS_NEXT_BUTTON" = "前後の動画のボタンを置き換える";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "前後の動画を再生するボタンを早送り、巻き戻しボタンに置き換えます。アプリの再起動が必要です。";
"FIX_GOOGLE_SIGNIN" = "Googleのサインイン (TrollStoreユーザーのみ)";
"FIX_GOOGLE_SIGNIN_DESC" = "アプリがTrollStoreでインストールされた場合のみ機能します。このオプションを有効にしてGoogleアカウントでサインインできるようにします。アプリの再起動が必要です。";
"KILL_APP" = "YouTubeを閉じる";
"KILL_APP_DESC" = "ここをタップしてYouTubeを終了できます!";
@@ -1,5 +1,11 @@
// Settings
"REPLACE_PREVIOUS_NEXT_BUTTON" = "이전, 다음 재생 버튼 교체";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "이전 재생, 다음 재생 버튼을 빨리 감기, 되감기 버튼으로 교체합니다. 앱을 다시 시작해야 합니다.";
"FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자 대상)";
"FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에서만 동작합니다: 구글 계정으로 로그인하려면 이 옵션을 켜 주세요. 앱을 다시 시작해야 합니다.";
"KILL_APP" = "YouTube 닫기";
"KILL_APP_DESC" = "YouTube 앱을 닫으려면 여기를 탭하세요!";
@@ -1,4 +1,9 @@
// Settings
"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.";
"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.";
"KILL_APP" = "Fechar o YouTube";
"KILL_APP_DESC" = "Toque aqui para fechar o YouTube!";
@@ -16,7 +16,7 @@
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)";
"FIX_GOOGLE_SIGNIN_DESC" = "Only works when the app was installed via TrollStore: Turn on this option so you can sign in with your Google account. App restart is required.";
"FIX_GOOGLE_SIGNIN_DESC" = "Turn on this option only when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required.";
"KILL_APP" = "Close YouTube";
"KILL_APP_DESC" = "Tap here to close YouTube!";
@@ -4,7 +4,7 @@
"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.";
"FIX_GOOGLE_SIGNIN" = "Sửa lỗi không thể đăng nhập tài khoản Google";
"FIX_GOOGLE_SIGNIN_DESC" = "Lưu ý rằng tính năng này chỉ hoạt đng khi ứng dụng được cài đặt bằng TrollStore: Bật tính năng này để sửa lỗi không thể đăng nhập bằng tài khoản Google. Cần khởi động lại ứng dụng.";
"FIX_GOOGLE_SIGNIN_DESC" = "Chỉ bật tính năng này khi bạn không thể đăng nhập tài khoản Google và ứng dụng được cài qua TrollStore. Nếu bạn có thể đăng nhập bình thường thì hãy tắt tính năng này. Cần khởi động lại ứng dụng.";
"KILL_APP" = "Đóng ứng dụng";
"KILL_APP_DESC" = "Chạm để đóng YouTube!";
@@ -1,5 +1,11 @@
// Settings
"REPLACE_PREVIOUS_NEXT_BUTTON" = "替换上一个/下一个按钮";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "将播放器控制界面上的上一个/下一个按钮替换成快进/快退按钮。更改本设置后需要重启App。";
"FIX_GOOGLE_SIGNIN" = "修复Google账号登录问题(仅针对TrollStore用户)";
"FIX_GOOGLE_SIGNIN_DESC" = "仅在使用TrollStore安装本App的情况下生效:启用本选项后可正常登录您的Google账号。更改本设置后需要重启App。";
"KILL_APP" = "关闭YouTube";
"KILL_APP_DESC" = "点击此处关闭YouTube!";
@@ -31,7 +37,7 @@
"AUTO_FULLSCREEN_DESC" = "自动全屏播放视频。";
"HIDE_HUD_MESSAGES" = "隐藏系统提醒";
"HIDE_HUD_MESSAGES_DESC" = "例如:\"已启用/停用字幕\"、\"已开启/关闭视频循环播放\"等。";
"HIDE_HUD_MESSAGES_DESC" = "例如:已启用/停用字幕”、“已开启/关闭视频循环播放等。";
"OLED_DARKMODE" = "OLED 深色模式(实验性功能)";
"OLED_DARKMODE_DESC" = "在某些情况下可能不会正常工作。更改本设置后需要重启App。";
@@ -40,10 +46,10 @@
"OLED_KEYBOARD_DESC" = "在某些情况下可能不会正常工作。更改本设置后需要重启App。";
"HIDE_PAID_PROMOTION_CARDS" = "隐藏付费宣传内容提醒横幅";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "隐藏出现在部分视频中的\"包含付费宣传内容\"横幅。";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "隐藏出现在部分视频中的包含付费宣传内容横幅。";
// YTCastConfirm
"CASTING" = "正在投屏";
"CASTING" = "准备投屏";
"MSG_ARE_YOU_SURE" = "您确定要开始投屏吗?";
"MSG_YES" = "确定";
"MSG_CANCEL" = "取消";
+34 -7
View File
@@ -49,6 +49,7 @@ static NSString *accessGroupID() {
return accessGroup;
}
//
BOOL hideHUD() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"hideHUD_enabled"];
}
@@ -91,8 +92,8 @@ BOOL ytMiniPlayer() {
BOOL hidePaidPromotionCard() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"hidePaidPromotionCard_enabled"];
}
BOOL fixGoogleSigin() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"fixGoogleSigin_enabled"];
BOOL fixGoogleSignIn() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"fixGoogleSignIn_enabled"];
}
BOOL replacePreviousAndNextButton() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"replacePreviousAndNextButton_enabled"];
@@ -482,9 +483,34 @@ BOOL replacePreviousAndNextButton() {
}
%end
// Fix "Google couldn't confirm this attempt to sign in is safe. If you think this is a mistake, you can close and try again to sign in" - qnblackcat/uYouPlus#420
// Thanks to @AhmedBafkir and @kkirby - https://github.com/qnblackcat/uYouPlus/discussions/447#discussioncomment-3672881
%group gFixGoogleSignIn
%hook SSORPCService
+ (id)URLFromURL:(id)arg1 withAdditionalFragmentParameters:(NSDictionary *)arg2 {
NSURL *orig = %orig;
NSURLComponents *urlComponents = [[NSURLComponents alloc] initWithURL:orig resolvingAgainstBaseURL:NO];
NSMutableArray *newQueryItems = [urlComponents.queryItems mutableCopy];
for (NSURLQueryItem *queryItem in urlComponents.queryItems) {
if ([queryItem.name isEqualToString:@"system_version"]
|| [queryItem.name isEqualToString:@"app_version"]
|| [queryItem.name isEqualToString:@"kdlc"]
|| [queryItem.name isEqualToString:@"kss"]
|| [queryItem.name isEqualToString:@"lib_ver"]
|| [queryItem.name isEqualToString:@"device_model"]) {
[newQueryItems removeObject:queryItem];
}
}
urlComponents.queryItems = [newQueryItems copy];
return urlComponents.URL;
}
%end
%end
// Fix "You can't sign in to this app because Google can't confirm that it's safe" warning when signing in. by julioverne & PoomSmart
// https://gist.github.com/PoomSmart/ef5b172fd4c5371764e027bea2613f93
// https://github.com/qnblackcat/uYouPlus/pull/398
/*
%group gDevice_challenge_request_hack
%hook SSOService
+ (id)fetcherWithRequest:(NSMutableURLRequest *)request configuration:(id)configuration {
@@ -500,13 +526,13 @@ BOOL replacePreviousAndNextButton() {
}
%end
%end
*/
// Fix login for YouTube 17.33.2 and higher
%hook SSOKeychainCore
+ (NSString *)accessGroup {
return accessGroupID();
}
+ (NSString *)sharedAccessGroup {
return accessGroupID();
}
@@ -748,6 +774,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.backgroundColor = raisedColor;
self.subviews[1].backgroundColor = raisedColor;
self.superview.backgroundColor = raisedColor;
}
@@ -887,15 +914,15 @@ static void replaceTab(YTIGuideResponse *response) {
%init(Main);
}
if (hidePreviousAndNextButton()) {
%init(gHidePreviousAndNextButton);
%init(gHidePreviousAndNextButton);
}
if (replacePreviousAndNextButton()) {
%init(gReplacePreviousAndNextButton);
%init(gReplacePreviousAndNextButton);
}
if (@available(iOS 16, *)) {
%init(iOS16);
}
if (!fixGoogleSigin()) {
%init(gDevice_challenge_request_hack);
if (!fixGoogleSignIn()) {
%init(gFixGoogleSignIn);
}
}