Compare commits

...
Author SHA1 Message Date
BandarHelal 5adaec2c93 Update uYouPlus.xm 2022-08-25 19:39:25 +03:00
BandarHelal 7ac253963e Fix Login issue 2022-08-25 18:31:28 +03:00
Nguyễn Đạt 2d2b469f1f Merge pull request #407 from darkbrow/main
Update Korean localization
2022-08-25 08:20:04 +07:00
Jinbong 9e98ad9482 Update Korean localization 2022-08-25 03:17:53 +09:00
BandarHelal 1d5de3cd4c Update uYouPlus.xm
Improve Julioverne's code by specifying YouTube SSOService because "device_challenge_request" can be used in other thinks with the App like Apple Push Service.
2022-08-21 17:03:47 +03:00
Nguyễn Đạt 1266cb5a38 More specifically... 2022-08-21 11:00:59 +07:00
Nguyễn Đạt 4fee21517e Merge pull request #398 from julioverne/main
Completely fix Google Sign-in by julioverne (#319)
2022-08-21 02:23:44 +07:00
julioverne 2ff0f3fb56 Fix Login
Fixes Login Account from Insecure App
2022-08-20 15:28:51 -03:00
qnblackcat 329fb1681a Skips content warning before playing *some videos - @PoomSmart 2022-08-14 02:02:23 +07:00
Nguyễn Đạt c78e5b9fd9 Merge pull request #374 from darkbrow/main
Add Korean localization
2022-08-13 12:59:43 +07:00
Jinbong 7b9fd7dcfb Add Korean localization 2022-08-13 14:02:24 +09:00
Nguyễn Đạt 922ab4e9b7 Merge pull request #373 from Sh1hu/patch-1
Update Japanese localization
2022-08-13 10:20:34 +07:00
Sh1hu c8a4acfff0 Update Japanese localization
The correct Japanese translation of the "Explore" tab is "探索".
Other translation optimizations were made.
2022-08-13 09:56:20 +09:00
5 changed files with 131 additions and 16 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ _Make sure you complete the template. Otherwise, it will be closed without furth
- iOS/iPadOS version:
- Device model:
- Sideload tool (Ex: AltStore, Sideloadly...)
- Version of uYouPlus:
- Version of uYouPlus: _**latest** or **newest** is NOT a version number!!_
### Describe the bug
+4
View File
@@ -9,6 +9,10 @@
@end
// uYouPlus
@interface YTPlayabilityResolutionUserActionUIController : NSObject // Skips content warning before playing *some videos - @PoomSmart
- (void)confirmAlertDidPressConfirm;
@end
@interface YTMainAppControlsOverlayView : UIView
@end
@@ -1,25 +1,25 @@
// Settings
"KILL_APP" = "YouTubeを閉じる";
"KILL_APP_DESC" = "ここをタップしてYouTubeを終了できます!";
"KILL_APP_DESC" = "ここをタップしてYouTubeを終了できます";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "前後の動画のボタンを非表示";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "コントロールのオーバーレイで前後の動画のボタンを非表示にします。";
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効にする";
"YT_MINIPLAYER_DESC" = "例: 子向けの動画";
"YT_MINIPLAYER_DESC" = "例: 子ども向けの動画";
"CAST_CONFIRM" = "キャストする前に確認画面を表示する (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "誤ってテレビにキャストしないよう、前に確認画面を表示します。";
"HIDE_HOVER_CARD" = "動画終わりのホバーカードを非表示 (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "動画終わりのホバーカード(サムネ)を非表示にします。";
"HIDE_HOVER_CARD_DESC" = "動画の最後のホバーカード(サムネイル)を非表示にします。";
"NEW_MINIPLAYER_STYLE" = "新しいミニプレーヤー・バーを使う (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "アプリ再起動してください。";
"NEW_MINIPLAYER_STYLE_DESC" = "アプリ再起動が必要です。";
"YT_RE_EXPLORE" = "ショートタブを「見つける」タブに置き換える (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "アプリ再起動してください。";
"YT_RE_EXPLORE" = "ショートタブを探索タブに置き換える (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "アプリ再起動が必要です。";
"HIDE_SUBTITLES_BUTTON" = "字幕ボタンを非表示";
"HIDE_SUBTITLES_BUTTON_DESC" = "動画コントロールのオーバーレイから字幕ボタンを非表示にします。";
@@ -31,19 +31,19 @@
"AUTO_FULLSCREEN_DESC" = "動画を自動でフルスクリーンにします。";
"HIDE_HUD_MESSAGES" = "HUDのメッセージを非表示";
"HIDE_HUD_MESSAGES_DESC" = "例: 字幕がon/offです、ループ再生は有効です 等";
"HIDE_HUD_MESSAGES_DESC" = "例: 字幕がオン/オフになりました、ループ再生はオンになっています 等";
"OLED_DARKMODE" = "有機ELダークモード (実験的機能)";
"OLED_DARKMODE_DESC" = "一部では正しく動作しない可能性があります。 この設定を変更したあとはアプリ再起動してください。";
"OLED_DARKMODE_DESC" = "一部では正しく動作しない可能性があります。この設定を変更したあとはアプリ再起動が必要です。";
"OLED_KEYBOARD" = "有機ELキーボード (実験的機能)";
"OLED_KEYBOARD_DESC" = "一部では正しく動作しない可能性があります。 この設定を変更したあとはアプリ再起動してください。";
"OLED_KEYBOARD_DESC" = "一部では正しく動作しない可能性があります。この設定を変更したあとはアプリ再起動が必要です。";
"HIDE_PAID_PROMOTION_CARDS" = "プロモーションを含む」 のバナーを非表示";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "一部の動画にある「プロモーションを含む」 のバナーを非表示にします。";
"HIDE_PAID_PROMOTION_CARDS" = "プロモーションバナーを非表示";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "一部の動画にある「プロモーションを含みます」のバナーを非表示にします。";
// YTCastConfirm
"CASTING" = "キャスト";
"MSG_ARE_YOU_SURE" = "本当にキャストを開始しますか?";
"MSG_ARE_YOU_SURE" = "本当にキャストを開始しますか";
"MSG_YES" = "はい";
"MSG_CANCEL" = "キャンセル";
"MSG_CANCEL" = "キャンセル";
@@ -0,0 +1,49 @@
// Settings
"KILL_APP" = "YouTube 닫기";
"KILL_APP_DESC" = "YouTube 앱을 닫으려면 여기를 탭하세요!";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "이전, 다음 재생 버튼 숨기기";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "비디오 재생 오버레이에서 이전 재생, 다음 재생 버튼을 숨깁니다.";
"YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화";
"YT_MINIPLAYER_DESC" = "아동용 영상일 경우.";
"CAST_CONFIRM" = "TV 전송 알림 (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "의도치 않게 TV로 영상을 전송하지 않도록 보내기 전에 확인 메시지를 표시합니다.";
"HIDE_HOVER_CARD" = "영상 끝 부분의 호버카드 숨기기 (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "영상의 끝 부분에서 게시자가 표시한 영상 썸네일을 숨깁니다.";
"NEW_MINIPLAYER_STYLE" = "새로운 스타일의 미니 플레이어 (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "앱을 다시 시작해야 합니다.";
"YT_RE_EXPLORE" = "Shorts 탭 대신 탐색 탭 보이기 (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "앱을 다시 시작해야 합니다.";
"HIDE_SUBTITLES_BUTTON" = "자막 버튼 숨기기";
"HIDE_SUBTITLES_BUTTON_DESC" = "비디오 재생 오버레이에서 자막 버튼을 숨깁니다.";
"HIDE_AUTOPLAY_SWITCH" = "자동재생 스위치 숨기기";
"HIDE_AUTOPLAY_SWITCH_DESC" = "비디오 재생 오버레이에서 자동재생 스위치를 숨깁니다.";
"AUTO_FULLSCREEN" = "자동 전체화면 재생 (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "자동으로 전체화면에서 재생합니다.";
"HIDE_HUD_MESSAGES" = "화면 메시지 숨기기";
"HIDE_HUD_MESSAGES_DESC" = "예: 자막 사용 설정됨/중지됨, 반복재생 설정됨,...";
"OLED_DARKMODE" = "OLED 다크모드 (실험실)";
"OLED_DARKMODE_DESC" = "몇몇 경우 제대로 동작하지 않을 수도 있습니다. 이 기능을 켜거나 끄는 경우 앱을 다시 시작해야 합니다.";
"OLED_KEYBOARD" = "OLED 키보드 (실험실)";
"OLED_KEYBOARD_DESC" = "몇몇 경우 제대로 동작하지 않을 수도 있습니다. 앱을 다시 시작해야 합니다.";
"HIDE_PAID_PROMOTION_CARDS" = "유료 광고 배너 숨기기";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "'유료 광고 포함' 배너를 숨깁니다.";
// YTCastConfirm
"CASTING" = "TV로 전송";
"MSG_ARE_YOU_SURE" = "TV로 영상 전송을 시작하겠습니까?";
"MSG_YES" = "예";
"MSG_CANCEL" = "취소";
+64 -2
View File
@@ -29,7 +29,24 @@ NSBundle *uYouPlusBundle() {
}
NSBundle *tweakBundle = uYouPlusBundle();
//
static NSString *accessGroupID() {
NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
(__bridge NSString *)kSecClassGenericPassword, (__bridge NSString *)kSecClass,
@"bundleSeedID", kSecAttrAccount,
@"", kSecAttrService,
(id)kCFBooleanTrue, kSecReturnAttributes,
nil];
CFDictionaryRef result = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if (status == errSecItemNotFound)
status = SecItemAdd((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if (status != errSecSuccess)
return nil;
NSString *accessGroup = [(__bridge NSDictionary *)result objectForKey:(__bridge NSString *)kSecAttrAccessGroup];
return accessGroup;
}
BOOL hideHUD() {
return [[NSUserDefaults standardUserDefaults] boolForKey:@"hideHUD_enabled"];
}
@@ -80,6 +97,11 @@ BOOL hidePaidPromotionCard() {
- (BOOL)canReorder { return YES; }
%end
// Skips content warning before playing *some videos - @PoomSmart
%hook YTPlayabilityResolutionUserActionUIController
- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; }
%end
// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/
%hook YTWatchMiniBarViewController
- (void)updateMiniBarPlayerStateFromRenderer {
@@ -369,6 +391,46 @@ BOOL hidePaidPromotionCard() {
}
%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
%hook SSOService
+ (id)fetcherWithRequest:(NSMutableURLRequest *)request configuration:(id)configuration {
if ([request isKindOfClass:[NSMutableURLRequest class]] && request.HTTPBody) {
NSError *error = nil;
NSMutableDictionary *body = [NSJSONSerialization JSONObjectWithData:request.HTTPBody options:NSJSONReadingMutableContainers error:&error];
if (!error && [body isKindOfClass:[NSMutableDictionary class]]) {
[body removeObjectForKey:@"device_challenge_request"];
request.HTTPBody = [NSJSONSerialization dataWithJSONObject:body options:kNilOptions error:&error];
}
}
return %orig;
}
%end
// Fix login for YouTube 17.33.2 and higher
%hook SSOKeychainCore
+ (NSString *)accessGroup {
return accessGroupID();
}
+ (NSString *)sharedAccessGroup {
return accessGroupID();
}
%end
// Fix App Group Directory by move it to document directory
%hook NSFileManager
- (NSURL *)containerURLForSecurityApplicationGroupIdentifier:(NSString *)groupIdentifier {
if (groupIdentifier != nil) {
NSArray *paths = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *documentsURL = [paths lastObject];
return [documentsURL URLByAppendingPathComponent:@"AppGroup"];
}
return %orig(groupIdentifier);
}
%end
# pragma mark - OLED dark mode by BandarHL
UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:1.0];
%group gOLED
@@ -768,4 +830,4 @@ static void replaceTab(YTIGuideResponse *response) {
if (@available(iOS 16, *)) {
%init(iOS16);
}
}
}