Compare commits

..
Author SHA1 Message Date
Nguyễn Đạt 679ea7046c Merge pull request #650 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-11-05 20:51:19 +07:00
github-actions 53b5fde3b7 updating submodules 2022-11-05 13:51:09 +00:00
Nguyễn Đạt 2bd2174ffe Is this that hard to follow? 2022-11-05 17:12:54 +07:00
Nguyễn Đạt 79d9f0920c c‘mon Xcode 14, why don’t you just work!? 2022-11-04 15:40:21 +07:00
Nguyễn Đạt 3c252a79d1 Merge pull request #646 from therealFoxster/main
FIx typo in README.md
2022-11-04 15:38:46 +07:00
Foxster e3326f9adf FIx typo in README.md 2022-11-03 18:36:07 -07:00
Nguyễn Đạt 64bab9b6d5 Merge pull request #641 from 5jd/patch-1
Update French translation
2022-11-03 10:27:19 +07:00
Nguyễn Đạt 9ebbda2671 Merge pull request #643 from therealFoxster/main
Update DontEatMyContent to work with YouTube's redesign (1.0.2 -> 1.0.3)
2022-11-03 10:27:07 +07:00
foxster-mp4 6b62aca494 Update DontEatMyContent (1.0.2 -> 1.0.3)
Update to work with YouTube's redesign

Add another method to get video aspect ratio

Add another method to detect pinch gesture
2022-11-02 20:13:19 -07:00
5jd f4d400d059 Update French translation 2022-11-02 19:37:57 +01:00
qnblackcat 6efdf519f4 clean up 2022-11-02 16:38:03 +07:00
Nguyễn Đạt 684f542aca Merge pull request #636 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-11-02 14:36:04 +07:00
github-actions d38993709e updating submodules 2022-11-02 07:35:32 +00:00
Nguyễn Đạt c5cdafd96f Merge pull request #629 from dayanch96/patch-2
Update ru
2022-10-31 18:22:43 +07:00
dayanch96 0635b3cfcf Upd 2022-10-31 00:28:16 +02:00
Nguyễn Đạt 50baafebce Merge pull request #623 from Yswag/main
update zh_tw translation
2022-10-29 21:43:27 +07:00
Yswag 4332070996 update strings 2022-10-29 13:48:37 +08:00
12 changed files with 173 additions and 86 deletions
+2 -1
View File
@@ -7,7 +7,8 @@ assignees: ''
---
## Have you read the FAQ? Make sure you visit the FAQ page before asking any question!!!
## Have you read the FAQ? Any questions that have been answered on the FAQ page will be closed without any explanation!
https://github.com/qnblackcat/uYouPlus/wiki/FAQ
###
+3 -3
View File
@@ -34,7 +34,7 @@ concurrency:
jobs:
build:
name: Build uYouPlus
runs-on: macos-latest
runs-on: macos-11
permissions:
contents: write
@@ -87,7 +87,7 @@ jobs:
env:
THEOS: ${{ github.workspace }}/theos
- name: Download uYou & prepare YouTube iPA
- name: Download uYou & Prepare YouTube iPA
run: |
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h"
curl "https://miro92.com/repo/debs/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" --output "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb"
@@ -102,7 +102,7 @@ jobs:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_URL: ${{ inputs.decrypted_youtube_url }}
- name: Fix compiling && Build Package
- name: Fix compiling & Build Package
id: build_package
run: |
(echo 'THEOS_IGNORE_PARALLEL_BUILDING_NOTICE = yes' >> ~/.theosrc)
+2 -1
View File
@@ -43,7 +43,8 @@
// DontEatMyContent
NSString* deviceName();
BOOL isDeviceSupported();
void aspectRatioChanged(CGFloat arg);
BOOL deviceIsSupported();
void activate();
void deactivate();
void center();
+99 -27
View File
@@ -12,30 +12,102 @@
* [Building](#building-optional)
# Credits
- Special thanks to all the developers who have contributed to uYouPlus!
- [MiRO92](https://twitter.com/miro92) for [uYou](https://github.com/MiRO92/uYou-for-YouTube).
- [Galactic-Dev](https://github.com/Galactic-Dev) and [Luewii](https://github.com/Luewii) for [iSponsorBlock](https://github.com/Galactic-Dev/iSponsorBlock) and [BigYTMiniPlayer](https://github.com/Galactic-Dev/BigYTMiniPlayer).
- [HASHBANG Productions](https://github.com/hbang) for [Alderis Color Picker](https://github.com/hbang/Alderis) - a dependency of iSponsorBlock.
- [PoomSmart](https://twitter.com/poomsmart) - the developer of many tweaks used by uYouPlus, see [Version info - Download](#download) for more details.
- [level3tjg](https://twitter.com/level3tjg) for [YTNoHoverCards](https://github.com/level3tjg/YTNoHoverCards), [YTMiniplayerEnabler](https://github.com/level3tjg/YTMiniplayerEnabler) and many hot patches for uYou.
- [BandarHL](https://twitter.com/bandarhl) for a bunch of improvements.
- [Julioverne](https://twitter.com/ijulioverne) for the solution to skip Google's safety warning when logging in.
- [Lyvendia](https://github.com/Lyvendia/) for [YTSpeed](https://github.com/Lyvendia/YTSpeed/)
- [therealFoxster](https://github.com/therealFoxster) for [DontEatMyContent](https://github.com/therealFoxster/DontEatMyContent).
- [YouTube Extensions](https://github.com/CokePokes/YoutubeExtensions) by [CokePokes](https://github.com/CokePokes/).
- [theos team](https://github.com/theos/theos) for theos & theos-jailed.
- Thanks to all the translators who have contributed to uYouPlus. Your contribution is highly appreciated!
<table id='credit'>
<tr>
<td id='miro92'>
<a href='https://github.com/MiRO92'>
<img src='https://github.com/MiRO92.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/miro92'>MiRO92</a></h4>
</td>
<td id='poomsmart'>
<a href='https://github.com/PoomSmart'>
<img src='https://github.com/PoomSmart.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/poomsmart'>PoomSmart</a></h4>
</td>
<td id='level3tjg'>
<a href='https://github.com/level3tjg'>
<img src='https://github.com/level3tjg.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/level3tjg'>level3tjg</a></h4>
</td>
<td id='bandarHL'>
<a href='https://github.com/BandarHL'>
<img src='https://github.com/BandarHL.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/bandarhl'>BandarHelal</a></h4>
</td>
<td id='galactic-dev'>
<a href='https://github.com/Galactic-Dev'>
<img src='https://github.com/Galactic-Dev.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/dev_galactic'>galactic</a></h4>
</td>
</tr>
<tr>
<td id='julioverne'>
<a href='https://github.com/julioverne'>
<img src='https://github.com/julioverne.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/ijulioverne'>julioverne</a></h4>
</td>
<td id='hbang'>
<a href='https://github.com/hbang'>
<img src='https://github.com/hbang.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/hashbang'>HASHBANG</a></h4>
</td>
<td id='lyvendia'>
<a href='https://github.com/Lyvendia'>
<img src='https://github.com/Lyvendia.png' width='140px;'>
</a>
<h4 align='center'><a href='https://github.com/Lyvendia'>Lyvendia</a></h4>
</td>
<td id='foxster'>
<a href='https://github.com/therealFoxster'>
<img src='https://github.com/therealFoxster.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/therealFoxster'>Foxster</a></h4>
</td>
<td id='ichitaso'>
<a href='https://github.com/ichitaso'>
<img src='https://github.com/ichitaso.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/ichitaso'>ichitaso</a></h4>
</td>
</tr>
<tr>
<td id='ahmed-bafkir'>
<a href='https://github.com/AhmedBafkir'>
<img src='https://github.com/AhmedBafkir.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/Peaceful_0'>Ahmed Bafkir</a></h4>
</td>
<td id='cokepokes'>
<a href='https://github.com/CokePokes'>
<img src='https://github.com/CokePokes.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/cokepokes'>CokePokes</a></h4>
</td>
<td id='isnackable'>
<a href='https://github.com/ISnackable'>
<img src='https://github.com/ISnackable.png' width='140px;'>
</a>
<h4 align='center'><a href='https://isnackable.me/'>Tommy Teo</a></h4>
</td>
<td id='theos-team'>
<a href='https://github.com/theos/theos'>
<img src='https://github.com/theos.png' width='140px;'>
</a>
<h4 align='center'><a href='https://theos.dev'>theos</a></h4>
</td>
</tr>
</table>
# Features
@@ -60,7 +132,7 @@
9. **YouRememberCaption**: make YouTube remember your video caption setting (if not already).
10. **NoYTPremium**: remove YouTube Premium upshells.
10. **NoYTPremium**: remove YouTube Premium upsells.
11. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
@@ -88,12 +160,12 @@
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- [Open in AltStore (v17.42.7-2.1)](https://tinyurl.com/4j5nyb6z) - It will take a while to install because AltStore needs to download the IPA.
- [Open in AltStore (v17.42.7-2.1)](https://tinyurl.com/4j5nyb6z) - It will take a while to install because AltStore needs to download the IPA first.
- Version info: _(last update: Oct 28)_
<details>
<summary>Expand</summary>
<summary>Expand </summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
@@ -124,7 +196,7 @@
</details>
# Installation
See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installation)
See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installation).
# Support the developers
- [**MiRO92**](https://twitter.com/miro92): https://github.com/MiRO92/uYou-for-YouTube#support
@@ -1,6 +1,6 @@
// Settings
"VERSION" = "uYouPlus's version: %@";
"VERSION_CHECK" = "Tap to check for update!";
"VERSION" = "Version de uYouPlus : %@";
"VERSION_CHECK" = "Appuyez pour vérifier les mises à jour !";
"DONT_EAT_MY_CONTENT" = "Empêcher l'encoche/Dynamic Island de grignoter le contenu vidéo 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Empêche l'encoche/Dynamic Island de grignoter du contenu vidéo 2:1 dans YouTube. Le redémarrage de l'application est nécessaire.";
@@ -8,7 +8,7 @@
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Remplacer le bouton précédent et suivant";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Remplace les boutons Précédent et Suivant par les boutons Avance rapide et Retour rapide. Le redémarrage de l'application est nécessaire";
"FIX_GOOGLE_SIGNIN" = "Réparer l'identification Google (pour les utilisateurs de TrollStore uniquement)" ;
"FIX_GOOGLE_SIGNIN" = "Réparer l'identification Google (pour les utilisateurs de TrollStore uniquement)";
"FIX_GOOGLE_SIGNIN_DESC" = "Activez cette option uniquement si vous ne pouvez pas vous connecter avec votre compte Google et que l'application a été installée via TrollStore. Si vous pouvez vous connecter normalement, laissez-la désactivée. Le redémarrage de l'application est nécessaire.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Masquer les boutons Précédent et Suivant";
@@ -1,17 +1,17 @@
/* uYouPlusSettings */
"VERSION" = "uYouPlus's version: %@";
"VERSION_CHECK" = "Tap to check for update!";
"VERSION" = "Версия uYouPlus: %@";
"VERSION_CHECK" = "Нажмите, чтобы проверить доступные обновления.";
"DONT_EAT_MY_CONTENT" = "Предотвратить выемку/остров на видеоконтенте 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Не позволяйте вырезу/Dynamic Island поглощать видеоконтент 2:1 на YouTube. Требуется перезапуск приложения.";
"DONT_EAT_MY_CONTENT" = "Запретить обрезку контента (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Запрещает обрезать контент с соотношением сторон 2:1 на устройствах с вырезом. Потребуется перезагрузка.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Заменить кнопку "Назад" и "Далее";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Замените кнопки «Назад» и «Далее» на кнопки «Перемотка вперед» и «Назад». Требуется перезапуск приложения.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Кнопки перемотки вместо «Пред.» и «След.»";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Заменяет переключатели «Следующий» и «Предыдущий» на кнопки перемотки на 10 сек. Потребуется перезагрузка.";
"FIX_GOOGLE_SIGNIN" = "Исправить вход через Google (только для пользователя TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Включайте эту опцию, только если вы не можете войти в свою учетную запись Google и приложение было установлено через TrollStore. Если вы можете нормально войти в систему, оставьте ее отключенной. Требуется перезапуск приложения.";
"FIX_GOOGLE_SIGNIN" = "Исправить авторизацию (TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Включите данную опцию только не можете войти в учетную запись Google, а приложение установлено через TrollStore. Если удается авторизоваться как обычно, оставьте данную опцию отключенной. Потребуется перезагрузка.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «Пред.» и «След.»";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «След.» и «Пред.»";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Убирает кнопки переключения видео «Следующий» и «Предыдущий» с плеера.";
"YT_MINIPLAYER" = "Мини-плеер для всех видео";
@@ -1,6 +1,6 @@
// Settings
"VERSION" = "uYouPlus's version: %@";
"VERSION_CHECK" = "Tap to check for update!";
"VERSION" = "您的uYouPlus版本為: %@";
"VERSION_CHECK" = "點擊查看最新版本!";
"DONT_EAT_MY_CONTENT" = "2:1影片瀏海/動態島優化 DontEatMyContent";
"DONT_EAT_MY_CONTENT_DESC" = "改進部分機型的瀏海區域或動態島在2:1比例影片中引發的遮擋問題。需要重新啟動應用程式。";
+49 -36
View File
@@ -940,7 +940,6 @@ NSLayoutConstraint *widthConstraint, *heightConstraint, *centerXConstraint, *cen
}
- (void)didPressToggleFullscreen {
YTMainAppVideoPlayerOverlayViewController *activeVideoPlayerOverlay = [self activeVideoPlayerOverlay];
if (![activeVideoPlayerOverlay isFullscreen]) // Entering fullscreen
activate();
else // Exiting fullscreen
@@ -948,26 +947,34 @@ NSLayoutConstraint *widthConstraint, *heightConstraint, *centerXConstraint, *cen
%orig;
}
- (void)didSwipeToEnterFullscreen {
%orig; activate();
}
- (void)didSwipeToExitFullscreen {
%orig; deactivate();
}
// Get video aspect ratio; doesn't work for some users; see -(void)resetForVideoWithAspectRatio:(double)
- (void)didSwipeToEnterFullscreen { %orig; activate(); }
- (void)didSwipeToExitFullscreen { %orig; deactivate(); }
// Retrieve video aspect ratio (1) (no longer works but kept for backwards compatibility)
- (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);
aspectRatioChanged(arg2);
}
%end
// Retrieve video aspect ratio (2) (no longer works but kept for backwards compatibility)
%hook YTVideoZoomOverlayController
- (void)resetForVideoWithAspectRatio:(double)arg1 {
%orig(arg1);
aspectRatioChanged(arg1);
}
%end
// Retrieve video aspect ratio (3)
%hook YTPlayerView
- (void)setAspectRatio:(CGFloat)arg1 {
%orig(arg1);
aspectRatioChanged(arg1);
// %log((CGFloat) aspectRatio);
}
%end
// Detect pinch gesture (1) (no longer works but kept for backwards compatibility)
%hook YTVideoZoomOverlayView
- (void)didRecognizePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
// %log((CGFloat) [pinchGestureRecognizer scale], (CGFloat) [pinchGestureRecognizer velocity]);
@@ -980,27 +987,22 @@ NSLayoutConstraint *widthConstraint, *heightConstraint, *centerXConstraint, *cen
}
%orig(pinchGestureRecognizer);
}
- (void)flashAndHideSnapIndicator {}
// https://github.com/lgariv/UniZoom/blob/master/Tweak.xm
- (void)setSnapIndicatorVisible:(bool)arg1 {
%orig(NO);
%end
// Detect pinch gesture (2)
%hook YTVideoFreeZoomOverlayView
- (void)didRecognizePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
if ([pinchGestureRecognizer velocity] <= 0.0) { // >>Zoom out<<
zoomedToFill = false;
activate();
} else if ([pinchGestureRecognizer velocity] > 0.0) { // <<Zoom in>>
zoomedToFill = true;
deactivate();
}
%orig(pinchGestureRecognizer);
}
%end
%hook YTVideoZoomOverlayController
// Get video aspect ratio; fallback for -(void)singleVideo:(id)aspectRatioDidChange:(CGFloat)
- (void)resetForVideoWithAspectRatio:(double)arg1 {
aspectRatio = arg1;
%log;
if (aspectRatio == 0.0) {}
else if (aspectRatio < THRESHOLD) {
deactivate();
} else {
activate();
}
%orig(arg1);
}
%end
%end // gDontEatMyContent
// DontEatMycontent - detecting device model
@@ -1011,7 +1013,7 @@ NSString* deviceName() {
return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
}
BOOL isDeviceSupported() {
BOOL deviceIsSupported() {
NSString *identifier = deviceName();
NSArray *unsupportedDevices = UNSUPPORTED_DEVICES;
@@ -1032,6 +1034,17 @@ BOOL isDeviceSupported() {
} else return NO;
}
void aspectRatioChanged(CGFloat arg) {
aspectRatio = arg;
if (aspectRatio == 0.0) {
// App backgrounded or something went wrong
} else if (aspectRatio < THRESHOLD) {
deactivate();
} else {
activate();
}
}
void activate() {
if (aspectRatio < THRESHOLD || zoomedToFill) return;
// NSLog(@"activate");
@@ -1159,7 +1172,7 @@ static BOOL didFinishLaunching;
if (replacePreviousAndNextButton()) {
%init(gReplacePreviousAndNextButton);
}
if (dontEatMyContent() && isDeviceSupported()) {
if (dontEatMyContent() && deviceIsSupported()) {
%init(gDontEatMyContent);
}
if (@available(iOS 16, *)) {