Compare commits

...

94 commits

Author SHA1 Message Date
Thatchapon Unprasert
871a742003 Cleanup 2024-06-28 22:05:09 +07:00
Thatchapon Unprasert
8ddd2c7d82
Update README.md 2024-06-28 16:40:15 +07:00
Thatchapon Unprasert
48809cc612
Update buildapp.yml 2024-06-28 16:39:44 +07:00
Thatchapon Unprasert
b0b2389591
Update Makefile 2024-06-28 16:39:19 +07:00
Thatchapon Unprasert
d371206b24 Update buildapp.yml 2024-06-27 15:09:36 +07:00
Thatchapon Unprasert
9fdf6164fa YT 19.25.4 2024-06-27 14:15:24 +07:00
Thatchapon Unprasert
8f807c3253 Update submodules 2024-06-24 21:13:48 +07:00
Thatchapon Unprasert
2413225c0a Update YTUHD 2024-06-22 12:51:58 +07:00
Thatchapon Unprasert
c0ba949162 Update Return-YouTube-Dislikes 2024-06-22 11:28:14 +07:00
Thatchapon Unprasert
9e09475aae Update YouTube-X 2024-06-22 09:45:34 +07:00
Thatchapon Unprasert
e7aaf00640 Update YouPiP 2024-06-22 09:18:28 +07:00
Thatchapon Unprasert
7ba963c628 Update submodules 2024-06-22 08:45:48 +07:00
Huy
7e96b5f75c
Add YouTube-X (#1498) 2024-06-17 10:58:04 +07:00
Thatchapon Unprasert
e05514298f Update submodules 2024-06-08 19:10:32 +07:00
Thatchapon Unprasert
fc24797258 Update submodules 2024-06-08 17:29:35 +07:00
Thatchapon Unprasert
26317e1869 Update submodules 2024-06-05 19:37:07 +07:00
John P
8742a0a9e7
feat: temp: update uYou deb to 3.0.4, reflect makefile (#1479) 2024-06-05 16:52:27 +07:00
Marcin Maj
041e2bf258
Add missing translations (#1475) 2024-06-03 18:57:41 +07:00
Nguyễn Đạt
b4f84deaac
Don't use new YT settings layout (#1468) 2024-05-21 23:57:34 +07:00
Nguyễn Đạt
e04f247789
temporary solution because MiRO92 repo is currently down 2024-05-21 23:52:25 +07:00
Nguyễn Đạt
51766ee9a3
Merge pull request #1463 from migmit/migmit-patch-1
Update buildapp.yml
2024-05-21 23:39:55 +07:00
migmit
f885e7f25b
Update buildapp.yml 2024-05-16 22:52:04 +02:00
Thatchapon Unprasert
add0bee6e4 Update RYD and YouTubeHeader 2024-05-08 20:55:42 +07:00
Thatchapon Unprasert
b0ab41ed0c Update YouPiP 2024-05-05 19:30:26 +07:00
Foxster
9c8716693c Update submodules 2024-04-30 17:51:43 -07:00
qnblackcat
d4b2243788 update sign in fix 2494cdf3c1 2024-04-30 00:05:28 +07:00
qnblackcat
cc1135e76f bump version 2024-04-29 23:58:36 +07:00
Jelly
4c819c69da
Pin runner image to macos-12 (#1430) 2024-04-25 08:20:08 +07:00
Thatchapon Unprasert
9aab7255b6 Update YouPiP and YouTubeHeader 2024-04-24 20:12:03 +07:00
Dan
076967ab94
Fixes uYou crash when trying to play video (#1422) (#1428) 2024-04-24 06:56:40 +07:00
Foxster
4fcb13d3aa Update submodules 2024-04-21 18:26:50 -07:00
Foxster
7e99ba39e9 Fix bug report URL 2024-04-21 18:26:50 -07:00
Thatchapon Unprasert
a7bc1264a9 Update iSponsorBlock 2024-04-16 10:48:42 +07:00
Thatchapon Unprasert
e73c884bfb Update submodules 2024-04-15 17:59:31 +07:00
Huy
8f5d7d9991
Update README.md (#1410)
Update FAQs URLs
2024-04-13 12:41:48 -07:00
Huy
f4012ca76a
Store URLs in uYouPlusSettings.h (#1409) 2024-04-13 11:36:32 -07:00
Thatchapon Unprasert
329cfcb441 Update FLEXing 2024-04-11 12:10:40 +07:00
anthony-huynh
3e7d8b2479
Update README.md (#1404) 2024-04-10 08:15:02 +07:00
Thatchapon Unprasert
e4de01a940 Update YouPiP 2024-04-09 00:17:08 +07:00
Thatchapon Unprasert
ed13a2fdc8 Update submodules 2024-04-08 09:55:39 +07:00
Victor Alves
c7aa258a33
Update Portuguese localization (#1387)
* Update Portuguese localization

* Update Portuguese localization
2024-04-06 18:31:41 +07:00
Thatchapon Unprasert
ed0b853d31 Update iSponsorBlock 2024-04-06 12:50:45 +07:00
Thatchapon Unprasert
c827624404 New code for red progress bar 2024-04-06 12:08:47 +07:00
Thatchapon Unprasert
0ff17cad55 Update iSponsorBlock 2024-04-06 12:08:32 +07:00
Thatchapon Unprasert
e3d6405ff5 Updated submodules 2024-04-06 12:06:19 +07:00
Thatchapon Unprasert
9c5eb0c488 Update submodules 2024-03-31 19:26:49 +07:00
Thatchapon Unprasert
ef69c0127f Update submodules 2024-03-29 21:51:01 +07:00
Thatchapon Unprasert
236989b5da Update submodules 2024-03-29 21:44:44 +07:00
DeciBelioS
7352749623
Update Localizable.strings Spanish (#1359) 2024-03-29 10:04:00 +07:00
SKEIDs
dfeaaa0d11
Update Japanese localization (#1368) 2024-03-29 10:03:50 +07:00
Truong PD
3486a66b15
update submodules (#1365) 2024-03-20 17:35:00 +07:00
Foxster
722c1a9bad
Update submodules (#1351) 2024-03-09 23:39:24 -08:00
qnblackcat
bdc9708c5e update README.md 2024-02-27 19:47:38 +07:00
qnblackcat
94a00f5356 bump version 2024-02-27 19:44:19 +07:00
Nguyễn Đạt
5adb3802fe
Merge pull request #1325 from qnblackcat/hide-buttons
hide useless buttons under the video player by @PoomSmart
2024-02-27 19:11:58 +07:00
Foxster
3d24576558
Merge pull request #1328 from therealFoxster/hide-isponsorblock-button
Update hide iSponsorBlock button
2024-02-26 13:02:45 -08:00
Foxster
f732fa3ced
Update uYouPlus.xm
Co-authored-by: arichornlover <78001398+arichornlover@users.noreply.github.com>
2024-02-26 13:00:16 -08:00
qnblackcat
88ac43d0d2 hide useless buttons under the video player by @PoomSmart 2024-02-27 01:07:34 +07:00
qnblackcat
4c34416fc4 update submodule 2024-02-26 18:28:15 +07:00
qnblackcat
b929861bf1 update submodules 2024-02-25 22:59:34 +07:00
qnblackcat
ff1793407a fixed OLED theme in Shorts 2024-02-25 22:59:11 +07:00
qnblackcat
7ffd5852e4 bump YT version 2024-02-25 12:40:30 +07:00
qnblackcat
ea3b3c90ba update conflict 2024-02-25 12:40:12 +07:00
Nguyễn Đạt
f2e151618f
Update README.md 2024-02-25 11:28:24 +07:00
Nguyễn Đạt
1c8af4daa8
Update OLED theme 2024-02-25 11:03:45 +07:00
qnblackcat
e69957ea5e update submodules 2024-02-25 10:32:43 +07:00
Nguyễn Đạt
a8d8f5222b
update to uYou v3.0.3 2024-02-25 10:08:15 +07:00
Nguyễn Đạt
5edb868c5a
Update OLED theme 2024-02-25 10:04:39 +07:00
Nguyễn Đạt
5f2252b919
Merge pull request #1318 from qnblackcat/update-OLED
please, work :/
2024-02-24 11:36:02 +07:00
qnblackcat
0da6da06af update OLED dark theme 2024-02-21 14:42:53 +07:00
Nguyễn Đạt
492db13195
Merge pull request #1316 from therealFoxster/main
Update README.md
2024-02-21 14:22:44 +07:00
Nguyễn Đạt
33b2132a65
Merge pull request #1317 from qnblackcat/uYou_3.0.3
prepare for uYou v3.0.3
2024-02-21 14:19:12 +07:00
Nguyễn Đạt
fd7c63cac6
Update README.md 2024-02-21 14:18:01 +07:00
qnblackcat
5df3bfbdfd prepare for uYou v3.0.3 2024-02-20 23:10:46 +07:00
Foxster
818d9abde1
Update README.md 2024-02-20 00:20:26 -08:00
Foxster
ff208b4191 Update README.md 2024-02-19 21:48:13 -08:00
Foxster
707c84608e
Merge pull request #1315 from therealFoxster/main
Update DontEatMyContent + reenable uYou appearance patch
2024-02-19 19:52:31 -08:00
Foxster
9a3c6be2d9 Update uYouPlusPatches.xm 2024-02-19 15:38:14 -08:00
Foxster
f4a8a32887 Update submodules 2024-02-19 14:42:10 -08:00
qnblackcat
684ba19c4f update submodules 2024-02-19 10:25:09 +07:00
qnblackcat
c6b6411697 uYou v3.0.3 2024-02-19 10:24:42 +07:00
Nguyễn Đạt
1b8e9821c7
prepare for uYou v3.0.2+ 2024-02-18 20:12:00 +07:00
qnblackcat
76657c6ba4 update vietnamese 2024-02-15 11:06:02 +07:00
qnblackcat
a94e60639f update submodules 2024-02-15 09:40:43 +07:00
qnblackcat
7e17cbb123 update submodule 2024-02-15 09:36:55 +07:00
qnblackcat
5522c7604b update workflows 2024-02-15 09:29:28 +07:00
qnblackcat
9f6d0562b8 bump YT & uYou version 2024-02-15 09:27:29 +07:00
qnblackcat
ced5cf81df prepare for uYou v3.0.2+ 2024-02-15 09:25:57 +07:00
qnblackcat
b9d1826c99 prepare for uYou v3.0.2+ 2024-02-13 13:36:09 +07:00
qnblackcat
6307c0c2c6 typo 2024-02-13 13:16:02 +07:00
qnblackcat
7263ce7127 wrong tweak name :/ 2024-02-13 11:27:41 +07:00
Thatchapon Unprasert
f376cabd2a Update YTABConfig submodule 2024-02-12 20:06:38 +07:00
Thatchapon Unprasert
d7aee836ac
Merge pull request #1304 from qnblackcat/psyt
Update PoomSmart's YouTube tweak submodules
2024-02-12 13:28:00 +07:00
Thatchapon Unprasert
556c7d99a5 Update PoomSmart's YouTube tweak submodules 2024-02-12 11:03:38 +07:00
56 changed files with 753 additions and 579 deletions

View file

@ -8,7 +8,7 @@ on:
inputs:
uyou_version:
description: "The version of uYou"
default: "3.0.1"
default: "3.0.3"
required: true
type: string
decrypted_youtube_url:
@ -44,7 +44,7 @@ concurrency:
jobs:
build:
name: Build uYouPlus
runs-on: macos-latest
runs-on: macos-12
permissions:
contents: write
@ -121,6 +121,7 @@ jobs:
- name: Fix compiling & Build Package
id: build_package
run: |
mkdir -p theos/lib/iphone/rootless
cd ${{ github.workspace }}/main
sed -i '' "27s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
sed -i '' "26s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile

10
.gitmodules vendored
View file

@ -26,10 +26,6 @@
path = Tweaks/YouTubeHeader
url = https://github.com/PoomSmart/YouTubeHeader.git
branch = main
[submodule "Tweaks/PSHeader"]
path = Tweaks/PSHeader
url = https://github.com/PoomSmart/PSHeader.git
branch = master
[submodule "Extensions"]
path = Extensions
url = https://github.com/CokePokes/YoutubeExtensions.git
@ -55,9 +51,6 @@
path = Tweaks/iSponsorBlock
url = https://github.com/Galactic-Dev/iSponsorBlock.git
branch = master
[submodule "Tweaks/IAmYouTube"]
path = Tweaks/IAmYouTube
url = https://github.com/PoomSmart/IAmYouTube.git
[submodule "Tweaks/YTClassicVideoQuality"]
path = Tweaks/YTClassicVideoQuality
url = https://github.com/PoomSmart/YTClassicVideoQuality.git
@ -67,3 +60,6 @@
[submodule "Tweaks/YTSpeed"]
path = Tweaks/YTSpeed
url = https://github.com/therealFoxster/YTSpeed.git
[submodule "Tweaks/YouTube-X"]
path = Tweaks/YouTube-X
url = https://github.com/PoomSmart/YouTube-X/

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "السماح بالمشغل المصغّر لكل فيديوهات يوتيوب";
"YT_MINIPLAYER_DESC" = "عند تصغير فيديوهات الأطفال مثلاً (قبل إغلاق المقطع).";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "استخدام مؤشر تغيير الصوت الخاص بالنظام";
"STOCK_VOLUME_HUD_DESC" = "إظهار مؤشر تغيير الصوت الرسمي الخاص بـ iOS بدلاً من مؤشر يوتيوب";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Povolit Minipřehrávač pro všechna videa";
"YT_MINIPLAYER_DESC" = "Například u videa pro děti";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren";
"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Standard iOS Lautstärke HUD aktivieren";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Ενεργοποιήστε το miniplayer για όλα τα βίντεο του YouTube";
"YT_MINIPLAYER_DESC" = "Τα παιδικά βίντεο για παράδειγμα.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Enable miniplayer for all videos";
"YT_MINIPLAYER_DESC" = "The miniplayer cannot be activated for certain videos (e.g., kids videos). This option bypasses that";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
@ -100,7 +109,7 @@
"MISCELLANEOUS" = "🔎 Miscellaneous";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_ISPONSORBLOCK" = "Hides iSponsorBlock button";
"CAST_CONFIRM" = "YTCastConfirm";
"CAST_CONFIRM_DESC" = "Shows a confirmation alert before casting";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Activar el minirreproductor para todos los vídeos de YouTube";
"YT_MINIPLAYER_DESC" = "Vídeos infantiles por ejemplo.";
"HIDE_REMIX_BUTTON" = "Oculta el botón Remix";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Ocultar botón Clip";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Ocultar botón de descarga";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Utiliza el HUD de volumen de iOS";
"STOCK_VOLUME_HUD_DESC" = "";
@ -99,8 +108,8 @@
// Miscellaneous
"MISCELLANEOUS" = "🔎 Varios";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_UYOU" = "Ocultar pestaña uYou";
"HIDE_ISPONSORBLOCK" = "Ocultar botón iSponsorBlock";
"CAST_CONFIRM" = "Alerta de confirmación antes de Enviar contenido (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Mostrar una alerta de confirmación antes de Enviar contenido para prevenir el secuestro accidental del TV.";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Activer le mini-lecteur pour toutes les vidéos YouTube";
"YT_MINIPLAYER_DESC" = "Vidéos pour enfants par exemple";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Utiliser l'affichage iOS du volume par défaut";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "אפשר את הנגן הקטן עבור כל הסרטונים ב-YouTube";
"YT_MINIPLAYER_DESC" = "סרטוני ילדים לדוגמה.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Engedélyezze a Minilejátszót az összes YouTube-videóhoz";
"YT_MINIPLAYER_DESC" = "Például gyermekvideók.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Abilita il Miniplayer su tutti i video di YouTube";
"YT_MINIPLAYER_DESC" = "Video YouTube Kids per esempio.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -21,7 +21,7 @@
"DEFAULT_THEME_DESC" = "";
"OLD_DARK_THEME" = "明るいグレー";
"OLD_DARK_THEME_DESC" = "YouTubeの古いダークテーマ";
"OLD_DARK_THEME_DESC" = "以前のダークテーマ";
"OLED_DARK_THEME" = "OLED (実験的)";
"OLED_DARK_THEME_2" = "OLED";
@ -31,24 +31,33 @@
"OLED_KEYBOARD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "⏯️ 動画コントロールのオーバーレイ設定";
"VIDEO_PLAYER_OPTIONS" = "⏯️ 動画コントロールのオーバーレイ設定";
"SLIDE_TO_SEEK" = "スライドシークを有効化";
"SLIDE_TO_SEEK_DESC" = "スライドシークジェスチャーを復活させます。";
"SLIDE_TO_SEEK_DESC" = "スライドシークジェスチャーを有効にします。";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "ダブルタップによるシークを無効化";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "ダブルタップシークを無効化";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "チャプターに合わせてのスクラブを無効にする";
"SNAP_TO_CHAPTER_DESC" = "動画を飛ばす際にチャプターに沿ってスクラブされるのを無効します。";
"SNAP_TO_CHAPTER" = "チャプターに合わせてのスクラブを無効";
"SNAP_TO_CHAPTER_DESC" = "動画を飛ばす際にチャプターに沿ってスクラブされるのを無効します。";
"PINCH_TO_ZOOM" = "ピンチで拡大を無効にする";
"PINCH_TO_ZOOM" = "ピンチで拡大を無効";
"PINCH_TO_ZOOM_DESC" = "";
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効にする";
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効";
"YT_MINIPLAYER_DESC" = "ミニプレーヤーが使えない動画(子ども向けの動画など)がありますが、このオプションでバイパスできます。";
"STOCK_VOLUME_HUD" = "iOSのstockボリュームHUDを利用する";
"HIDE_REMIX_BUTTON" = "リミックスボタンを非表示";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "クリップボタンを非表示";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "オフラインボタンを非表示";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "標準の音量HUDを利用する";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
@ -81,8 +90,8 @@
"HIDE_HOVER_CARD" = "YTNoHoverCards";
"HIDE_HOVER_CARD_DESC" = "動画のエンドスクリーンを非表示にします。";
"HIDE_RIGHT_PANEL" = "フルスクリーン時のエンゲージパネルを非表示";
"HIDE_RIGHT_PANEL_DESC" = "ランドスケープ時の右パネル(コメントなど)を非表示にします。";
"HIDE_RIGHT_PANEL" = "フルスクリーン時の右側パネルを非表示";
"HIDE_RIGHT_PANEL_DESC" = "横向きの時、右パネル(チャットなど)を非表示にします。";
// Shorts controls overlay options
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 ショート動画のオーバーレイ設定";
@ -93,21 +102,21 @@
"HIDE_SUBCRIPTIONS" = "チャンネル登録ボタンを非表示";
"HIDE_SUBCRIPTIONS_DESC" = "";
"DISABLE_RESUME_TO_SHORTS" = "ショートの再開を無効化";
"DISABLE_RESUME_TO_SHORTS" = "ショート動画からの再開を無効化";
"DISABLE_RESUME_TO_SHORTS_DESC" = "ショート動画を視聴中にアプリを終了し、再度開いた際にショートから再開されるのを防ぎます。";
// Miscellaneous
"MISCELLANEOUS" = "🔎 その他";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_UYOU" = "uYouタブを非表示";
"HIDE_ISPONSORBLOCK" = "iSponsorBlockボタンを非表示";
"CAST_CONFIRM" = "YTCastConfirm";
"CAST_CONFIRM_DESC" = "キャスト前に確認の警告を表示します。";
"CASTING" = "キャスト";
"MSG_ARE_YOU_SURE" = "本当にキャストを開始しますか?";
"MSG_YES" = "はい";
"MSG_CANCEL" = "キャンセル";
"MSG_CANCEL" = "いいえ";
"DISABLE_HINTS" = "ヒントを非表示";
"DISABLE_HINTS_DESC" = "アプリ初回起動時に表示されるYouTubeのヒントを非表示にします。";
@ -116,7 +125,7 @@
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"HIDE_CHIP_BAR" = "トップバーを非表示";
"HIDE_CHIP_BAR_DESC" = "ホーム(トレンド,音楽,ゲーム...)とサブスクリプション(すべてのビデオ、視聴を続ける...)リボンのトップバーを非表示にします。";
"HIDE_CHIP_BAR_DESC" = "ホームと登録チャンネルのトップバー(すべて,音楽,ゲーム,続きを見る など)を非表示にします。";
"HIDE_PLAY_NEXT_IN_QUEUE" = "「キューの最初に追加」を非表示";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화";
"YT_MINIPLAYER_DESC" = "유튜브 키즈의 영상 같은 경우.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "iOS 기본 음량 표시기 사용";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Schakel de Mini Speler in voor alle video's";
"YT_MINIPLAYER_DESC" = "Video's voor kinderen bijvoorbeeld.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -1,58 +1,67 @@
// About
"ABOUT" = "About";
"ABOUT" = "O programie";
"VERSION" = "Version";
"VERSION_CHECK" = "Tap to check for updates!";
"VERSION" = "Wersja";
"VERSION_CHECK" = "Dotknij aby sprawdzić aktualizację!";
"REPORT_AN_ISSUE" = "Report an issue";
"ADD_TITLE" = "Add your title here...";
"REPORT_AN_ISSUE" = "Zgłoś błąd";
"ADD_TITLE" = "Podaj tutaj tytuł...";
"QUIT_YOUTUBE" = "Quit YouTube";
"QUIT_YOUTUBE" = "Zamknij aplikację";
"RESTART_YOUTUBE" = "Restart YouTube to apply changes";
"RESTART_YOUTUBE" = "Zrestartuj YouTube aby wprowadzić zmiany";
// App appearance
"APP_THEME" = "🎨 App appearance";
"THEME_OPTIONS" = "Theme options";
"APP_THEME" = "🎨 Wygląd aplikacji";
"THEME_OPTIONS" = "Opcje motywu";
"DARK_THEME" = "Dark theme";
"DARK_THEME" = "Ciemny motyw";
"DEFAULT_THEME" = "Default";
"DEFAULT_THEME" = "Domyślny";
"DEFAULT_THEME_DESC" = "";
"OLD_DARK_THEME" = "Lighter grey";
"OLD_DARK_THEME_DESC" = "YouTube's old dark theme";
"OLD_DARK_THEME" = "Jasnoszary";
"OLD_DARK_THEME_DESC" = "Stary, ciemny motyw YouTube";
"OLED_DARK_THEME" = "Tryb ciemny OLED (Eksperymentalny)";
"OLED_DARK_THEME_2" = "Tryb ciemny OLED";
"OLED_DARK_THEME_DESC" = "Pure-black dark theme";
"OLED_DARK_THEME_DESC" = "Ciemny, czarny motyw";
"OLED_KEYBOARD" = "Klawiatura OLED (Eksperymentalna)";
"OLED_KEYBOARD_DESC" = "Może w niektórych przypadkach nie działać. Restart aplikacji jest wymagany.";
// Video player options
"VIDEO_PLAYER_OPTIONS" = "⏯️ Video player options";
"VIDEO_PLAYER_OPTIONS" = "⏯️ Ustawienia odtwarzacza";
"SLIDE_TO_SEEK" = "Enable Slide to seek";
"SLIDE_TO_SEEK_DESC" = "Bring back the Slide to seek gesture.";
"SLIDE_TO_SEEK" = "Włącz szukanie za pomocą przesuwania";
"SLIDE_TO_SEEK_DESC" = "Przywróć wyszukiwanie gestów za pomocą przesuwania.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Wyłącz podwójne kliknięcie aby szukać";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos";
"SNAP_TO_CHAPTER" = "Wyłącz przyciąganie do rozdziału";
"SNAP_TO_CHAPTER_DESC" = "Wyłącza przyciąganie do rozdziału w trakcie przeszukiwania filmu";
"PINCH_TO_ZOOM" = "Disable pinch to zoom";
"PINCH_TO_ZOOM_DESC" = "";
"PINCH_TO_ZOOM" = "Wyłącz możliwość powiększania obrazu";
"PINCH_TO_ZOOM_DESC" = "Przez gest rozsunięcia ekranu dwoma palcami";
"YT_MINIPLAYER" = "Włącz miniodtwarzach dla wszystkich filmów";
"YT_MINIPLAYER_DESC" = "Np. filmów dla dzieci.";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"HIDE_REMIX_BUTTON" = "Ukryj przycisk Remix";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Ukryj przycisk Clip";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Ukryj przycisk Pobierania";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Użyj systemowego paska głośności";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 Video controls overlay options";
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 Opcje wyglądu odtwarzacza video";
"HIDE_AUTOPLAY_SWITCH" = "Ukryj przycisk Autoodtwarzanie";
"HIDE_AUTOPLAY_SWITCH_DESC" = "Ukrywa przycisk Autoodtwarzanie w okładce odtwarzacza filmów.";
@ -66,8 +75,8 @@
"HIDE_PAID_PROMOTION_CARDS" = "Ukryj baner płatnej promocji";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ukrywa baner 'Zawiera płatną promocję' w niektórych filmach.";
"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark";
"HIDE_CHANNEL_WATERMARK_DESC" = "";
"HIDE_CHANNEL_WATERMARK" = "Ukryj znak wodny kanału";
"HIDE_CHANNEL_WATERMARK_DESC" = "Np. logo kanału w prawym dolnym rogu";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ukryj przyciski Poprzedni i Następny";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ukryj przyciski Poprzedni i Następny w okładce sterowania filmu.";
@ -75,32 +84,32 @@
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Zamień przyciski Poprzedni i Następny";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Zamienia przyciski Poprzedni i Następny z przyciskami Przewiń w przód i tył. Restart aplikacji jest wymagany.";
"RED_PROGRESS_BAR" = "Red progress bar";
"RED_PROGRESS_BAR" = "Czerwony pasek postępu";
"RED_PROGRESS_BAR_DESC" = "";
"HIDE_HOVER_CARD" = "Ukryj ekrany końcowe (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Ukryj ekrany końcowe (miniaturki) na końcu filmów.";
"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen";
"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape";
"HIDE_RIGHT_PANEL" = "Wyłącz dodatkowe nakładki w trybie pełnoekranowym";
"HIDE_RIGHT_PANEL_DESC" = "Np. Komentarze, czat na żywo itp.";
// Shorts controls overlay options
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 Shorts controls overlay options";
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 Ustawienia odtwarzacza dla Shorts";
"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner";
"HIDE_SUPER_THANKS" = "Ukryj przycisk superpodziękowania";
"HIDE_SUPER_THANKS_DESC" = "";
"HIDE_SUBCRIPTIONS" = "Hide subscriptions button";
"HIDE_SUBCRIPTIONS" = "Ukryj przycisk napisów";
"HIDE_SUBCRIPTIONS_DESC" = "";
"DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app";
"DISABLE_RESUME_TO_SHORTS" = "Wyłącz wznawianie Short\'ów";
"DISABLE_RESUME_TO_SHORTS_DESC" = "Jeśli zamkniesz aplikację podczas oglądania Short\'ów ta opcja zablokuje powrót do nich po ponownym uruchomieniu";
// Miscellaneous
"MISCELLANEOUS" = "🔎 Miscellaneous";
"MISCELLANEOUS" = "🔎 Inne";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_UYOU" = "Ukryj zakładkę uYou";
"HIDE_ISPONSORBLOCK" = "Ukryj przycisk iSponsorBlock";
"CAST_CONFIRM" = "Alert przed przesyłaniem (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Pokaż alert przed przesyłaniem aby nie łączyć się przez przypadek z telewizorem.";
@ -109,19 +118,19 @@
"MSG_YES" = "Tak";
"MSG_CANCEL" = "Anuluj";
"DISABLE_HINTS" = "Disable hints";
"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed";
"DISABLE_HINTS" = "Wyłącz wskazówki";
"DISABLE_HINTS_DESC" = "Wyłącza podpowiedzi kiedy aplikacja zostanie ponownie zainstalowana";
"ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION" = "Włącz animację YouTube podczas uruchamiania aplikacji";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"HIDE_CHIP_BAR" = "Hide upper bar";
"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)";
"HIDE_CHIP_BAR" = "Ukryj górny pasek";
"HIDE_CHIP_BAR_DESC" = "Ukryj górny pasek na głównym ekranie oraz w subskrybowanych kanałach (np. Wszystkie filmy, kontynuuj oglądanie itp.)";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Ukryj \"Otwórz jako następny w kolejce\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "";
"IPHONE_LAYOUT" = "Force iPhone layout";
"IPHONE_LAYOUT" = "Wymuś wygląd iPhone";
"IPHONE_LAYOUT_DESC" = "";
"NEW_MINIPLAYER_STYLE" = "Nowy styl miniodtwarzacza (BigYTMiniPlayer)";
@ -130,8 +139,8 @@
"YT_RE_EXPLORE" = "Zamień kartę Shorts na kartę Odkrywaj (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "Restart aplikacji jest wymagany.";
"ENABLE_FLEX" = "Enable FLEX";
"ENABLE_FLEX_DESC" = "Enables FLEX for debugging";
"ENABLE_FLEX" = "Włącz FLEX";
"ENABLE_FLEX_DESC" = "Uruchamia FLEX do diagnostyki";
"FIX_GOOGLE_SIGNIN" = "Napraw logowanie się z Google (tylko dla użytkowników TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Włącz tą opcję tylko wtedy, kiedy nie możesz zalogować się swoim kontem Google, a aplikacja została zainstalowana przez TrollStore. Jeżeli da się zalogować normalnie, zostaw to wyłączone. Restart aplikacji jest wymagany.";

View file

@ -1,21 +1,21 @@
// About
"ABOUT" = "About";
"ABOUT" = "Sobre";
"VERSION" = "Versão do uYouPlus: %@";
"VERSION" = "Versão";
"VERSION_CHECK" = "Toque para verificar se há atualização!";
"REPORT_AN_ISSUE" = "Report an issue";
"ADD_TITLE" = "Add your title here...";
"REPORT_AN_ISSUE" = "Informar um problema";
"ADD_TITLE" = "Adicione seu título aqui...";
"QUIT_YOUTUBE" = "Quit YouTube";
"QUIT_YOUTUBE" = "Sair do YouTube";
"RESTART_YOUTUBE" = "Restart YouTube to apply changes";
"RESTART_YOUTUBE" = "Reinicie o YouTube para aplicar as alterações";
// App appearance
"APP_THEME" = "🎨 App appearance";
"APP_THEME" = "🎨 Aparência do aplicativo";
"THEME_OPTIONS" = "Opções de Temas";
"DARK_THEME" = "Dark theme";
"DARK_THEME" = "Tema Escuro";
"DEFAULT_THEME" = "Padrão";
"DEFAULT_THEME_DESC" = "Tema escuro padrão do YouTube. A reinicialização do app é necessária.";
@ -33,8 +33,8 @@
// Video player options
"VIDEO_PLAYER_OPTIONS" = "⏯️ Opções do Reprodutor de Vídeo";
"SLIDE_TO_SEEK" = "Enable Slide to seek";
"SLIDE_TO_SEEK_DESC" = "Bring back the Slide to seek gesture.";
"SLIDE_TO_SEEK" = "Ativar Deslizar para buscar";
"SLIDE_TO_SEEK_DESC" = "Traz de volta o gesto Deslizar para buscar.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Desativar toque duplo para buscar";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Ative o Miniplayer para todos os vídeos do YouTube";
"YT_MINIPLAYER_DESC" = "Vídeos infantis, por exemplo.";
"HIDE_REMIX_BUTTON" = "Ocultar o botão Remix";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Ocultar o botão Clipe";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Ocultar o botão de Download";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Usar o HUD de volume padrão do iOS";
"STOCK_VOLUME_HUD_DESC" = "";
@ -100,7 +109,7 @@
"MISCELLANEOUS" = "🔎 Diversos";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_ISPONSORBLOCK" = "Ocultar o botão iSponsorBlock";
"CAST_CONFIRM" = "Alerta de confirmação antes de transmitir (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Mostra um alerta de confirmação antes da transmissão para evitar o sequestro acidental da TV.";
@ -118,7 +127,7 @@
"HIDE_CHIP_BAR" = "Ocultar a Barra superior";
"HIDE_CHIP_BAR_DESC" = "Oculta a Barra superior nos Feeds iniciais (Tendências, Música, Jogos...) e Feeds de inscrições (Todos os vídeos, Continuar assistindo...). A reinicialização do app é necessária.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Ocultar \"Adicionar como próximo na fila\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "";
"IPHONE_LAYOUT" = "Layout do iPhone";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Activare Miniplayer pentru toate videoclipurile YouTube";
"YT_MINIPLAYER_DESC" = "De exemplu, videoclipurile destinate pentri copii";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Мини-плеер для всех видео";
"YT_MINIPLAYER_DESC" = "Принудительно активирует мини-плеер для всех видео, включая видео, предназначенное для детей.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Использовать стоковый слайдер грмкости iOS";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -63,6 +63,15 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"YT_MINIPLAYER" = "Enable miniplayer for all videos";
"YT_MINIPLAYER_DESC" = "The miniplayer cannot be activated for certain videos (e.g., kids videos). This option bypasses that";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
@ -115,7 +124,7 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"MISCELLANEOUS" = "🔎 Miscellaneous";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_ISPONSORBLOCK" = "Hides iSponsorBlock button";
"CAST_CONFIRM" = "YTCastConfirm";
"CAST_CONFIRM_DESC" = "Shows a confirmation alert before casting";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Tüm YouTube videoları için Mini Oynatıcıyı etkinleştir";
"YT_MINIPLAYER_DESC" = "Örneğin çocuk videoları.";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Mevcut iOS baş yukarı göstergesi(HUD) alanını kullan";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -5,7 +5,7 @@
"VERSION_CHECK" = "Chạm để kiểm tra bản cập nhật!";
"REPORT_AN_ISSUE" = "Báo lỗi";
"ADD_TITLE" = "Add your title here...";
"ADD_TITLE" = "Thêm tiêu đề lỗi ở đây...";
"QUIT_YOUTUBE" = "Đóng YouTube";
@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "Cho phép sử dụng trình phát thu nhỏ với mọi video";
"YT_MINIPLAYER_DESC" = "Ví dụ: Video cho trẻ em.";
"HIDE_REMIX_BUTTON" = "Ẩn nút Phối lại";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Ẩn nút Tạo đoạn video";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Ẩn nút Tải xuống";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "Sử dụng thanh âm lượng mặc định của iOS";
"STOCK_VOLUME_HUD_DESC" = "";
@ -100,7 +109,7 @@
"MISCELLANEOUS" = "🔎 Cài đặt khác";
"HIDE_UYOU" = "Hide uYou tab";
"HIDE_ISPONSORBLOCK" = "Hide iSponsorBlock button";
"HIDE_ISPONSORBLOCK" = "Ẩn nút iSponsorBlock trên thanh menu";
"CAST_CONFIRM" = "Xác nhận trước khi cast video (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Hiện hộp thoại xác nhận trước khi cast video sang TV để tránh vô tình chiếm quyền điều khiển TV.";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "为所有 YouTube 视频启用迷你播放器";
"YT_MINIPLAYER_DESC" = "例如:面向儿童的视频。";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "使用 iOS 自带音量指示";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -48,6 +48,15 @@
"YT_MINIPLAYER" = "為所有 YouTube 影片啟用迷你播放器";
"YT_MINIPLAYER_DESC" = "例如兒童影片";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "使用 iOS 內建的音量 HUD";
"STOCK_VOLUME_HUD_DESC" = "";

View file

@ -6,7 +6,7 @@ export libFLEX_ARCHS = arm64
export Alderis_XCODEOPTS = LD_DYLIB_INSTALL_NAME=@rpath/Alderis.framework/Alderis
export Alderis_XCODEFLAGS = DYLIB_INSTALL_NAME_BASE=/Library/Frameworks BUILD_LIBRARY_FOR_DISTRIBUTION=YES ARCHS="$(ARCHS)"
export libcolorpicker_LDFLAGS = -F$(TARGET_PRIVATE_FRAMEWORK_PATH) -install_name @rpath/libcolorpicker.dylib
export ADDITIONAL_CFLAGS = -I$(THEOS_PROJECT_DIR)/Tweaks/RemoteLog
export ADDITIONAL_CFLAGS = -I$(THEOS_PROJECT_DIR)/Tweaks/RemoteLog -I$(THEOS_PROJECT_DIR)/Tweaks
ifneq ($(JAILBROKEN),1)
export DEBUGFLAG = -ggdb -Wno-unused-command-line-argument -L$(THEOS_OBJ_DIR) -F$(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install/Library/Frameworks
@ -14,10 +14,10 @@ MODULES = jailed
endif
ifndef YOUTUBE_VERSION
YOUTUBE_VERSION = 19.02.1
YOUTUBE_VERSION = 19.25.4
endif
ifndef UYOU_VERSION
UYOU_VERSION = 3.0.1
UYOU_VERSION = 3.0.3
endif
PACKAGE_VERSION = $(YOUTUBE_VERSION)-$(UYOU_VERSION)
@ -28,8 +28,8 @@ BUNDLE_ID = com.google.ios.youtube
$(TWEAK_NAME)_FILES := $(wildcard Sources/*.xm) $(wildcard Sources/*.x)
$(TWEAK_NAME)_FRAMEWORKS = UIKit Security
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\"
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" -Wno-module-import-in-extern-c
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YoutubeSpeed.dylib $(THEOS_OBJ_DIR)/YouTubeX.dylib
$(TWEAK_NAME)_EMBED_LIBRARIES = $(THEOS_OBJ_DIR)/libcolorpicker.dylib
$(TWEAK_NAME)_EMBED_FRAMEWORKS = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install_Alderis.xcarchive/Products/var/jb/Library/Frameworks/Alderis.framework
$(TWEAK_NAME)_EMBED_BUNDLES = $(wildcard Bundles/*.bundle)
@ -37,7 +37,7 @@ $(TWEAK_NAME)_EMBED_EXTENSIONS = $(wildcard Extensions/*.appex)
include $(THEOS)/makefiles/common.mk
ifneq ($(JAILBROKEN),1)
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality Tweaks/IAmYouTube Tweaks/YTClassicVideoQuality Tweaks/NoYTPremium Tweaks/YTSpeed
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality Tweaks/YTClassicVideoQuality Tweaks/NoYTPremium Tweaks/YTSpeed Tweaks/YouTube-X
include $(THEOS_MAKE_PATH)/aggregate.mk
endif
include $(THEOS_MAKE_PATH)/tweak.mk
@ -61,7 +61,7 @@ before-all::
fi
before-all::
@if [[ ! -f $(UYOU_DEB) ]]; then \
curl -s https://miro92.com/repo/debs/com.miro.uyou_$(UYOU_VERSION)_iphoneos-arm.deb -o $(UYOU_DEB); \
curl -s https://repo.miro92.com/debs/com.miro.uyou_$(UYOU_VERSION)_iphoneos-arm.deb -o $(UYOU_DEB); \
fi; \
if [[ ! -f $(UYOU_DYLIB) || ! -d $(UYOU_BUNDLE) ]]; then \
tar -xf Tweaks/uYou/com.miro.uyou_$(UYOU_VERSION)_iphoneos-arm.deb -C Tweaks/uYou; tar -xf Tweaks/uYou/data.tar* -C Tweaks/uYou; \

386
README.md
View file

@ -1,13 +1,14 @@
![IMG_2196](https://user-images.githubusercontent.com/52943116/189822859-8a0952db-9264-4b5b-9cbe-d0a87b2db5a0.PNG)
# uYouPlus
![Image 2](https://github.com/qnblackcat/uYouPlus/assets/77606385/c1a1c58a-5d4d-48a6-bb98-d00086719ccc)
<!--![Image](https://github.com/therealFoxster/uYouPlus/assets/77606385/eb34d3e3-a679-45d0-b2e5-01fdd459ce63)-->
***
<p align="center">
<img src="https://img.shields.io/badge/Platform-iOS%20%7C%20iPadOS%2014.0%2B-yellow" alt="Badge"/>
<a href="https://github.com/qnblackcat/uYouPlus/wiki/FAQ"><img src="https://img.shields.io/badge/Question%3F-FAQ-yellow" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/wiki/FAQ"><img src="https://custom-icon-badges.demolab.com/badge/translate-blue.svg?logo=translate&logoColor=white" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/wiki/FAQs"><img src="https://img.shields.io/badge/Question%3F-FAQ-yellow" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/wiki/FAQs"><img src="https://custom-icon-badges.demolab.com/badge/translate-blue.svg?logo=translate&logoColor=white" alt="Badge"></img></a>
</p>
<p align="center">
@ -24,218 +25,235 @@
<a href="https://github.com/qnblackcat/uYouPlus#support-the-developers"><img src="https://img.shields.io/badge/-Support-lightgrey?style=social&logo=paypal" alt="Badge"></img></a>
</p>
# Table of Contents
> [!NOTE]
> uYouPlus is a **modified version** of uYou. **Please DO NOT bother MiRO92 with issues unrelated to uYou!**
## Table of contents
* [Credits](#credits)
* [Features](#features)
* [Known issues](#known-issues)
* [Download](#download)
* [Installation](#installation)
* [Features](#features)
* [Credits](#credits)
* [Support the developers!](#support-the-developers)
* [FAQ](#faq)
* [Building](#building-optional)
* [FAQs](#faqs)
* [Building](#building)
# Credits
- Special thanks to all the developers who have contributed to uYouPlus!
## Download
<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
1. **uYou:** uYou has a ton of features that I can't list them all. Visit [here](https://miro92.com/repo/depictions/?p=com.miro.uyou) for more info!
2. **iSponsorBlock:** Skips annoying sponsor ads inside videos. iSponsorBlock is based on [SponsorBlock engine](https://sponsor.ajay.app/). Basically, this is the iOS version of the SponsorBlock extension.
3. **YouPiP:** enable YouTube's **native PiP**. More options are in YouTube Settings - General.
4. **YTUHD:** unlock VP9 codec and in effect, enables video quality of 2K and 4K. You can enable/disable YTUHD in YouTube Settings - Video quality preferences.
<details>
<summary>And many more...!</summary>
5. **YTClassicVideoQuality:** since YouTube v16.xx, you need one more step to change the video quality. YTClassicVideoQuality brings back the old video quality selector, which is a lot better than the new one.
6. **YTNoHoverCards:** offer an option to enable/disable the annoying suggested videos show up at the end of the videos.
7. **YouRememberCaption**: make YouTube remember your video caption setting (if not already).
8. **NoYTPremium**: remove YouTube Premium upsells.
9. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
10. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
11. **DontEatMyContent**: prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
12. **YTABConfig**: allow user to control over YouTube A/B testing flags.
13. **YouMute**: mute YouTube videos via a button.
14. **YouQuality**: change video quality via a button.
15. **YTVideoOverlay**: add buttons to overlay the video.
</details>
# Known issues
- **uYou**: all the known-issues of uYou are listed [here](https://github.com/MiRO92/uYou-for-YouTube/issues). Make sure you take a look at it before reporting any bugs! ***Also, keep in mind that uYou+ is a modified version of uYou, DO NOT bother MiRO92 with problems unrelated to uYou!!!***
- Issues that related to **uYouPlus** are [here](https://github.com/qnblackcat/uYouPlus/issues/)
# Download
- **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 14.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases/latest).
<!-- - For AltStore user:
- The latest version of **uYouPlus** can be found under [Releases](https://github.com/qnblackcat/uYouPlus/releases/latest).
- **Compatibility:** Requires iOS/iPadOS 14.0 or later.
- For AltStore user:
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- [Open in AltStore (v19.02.1-3.0.1)](http://tinyurl.com/z7hm2sar) - It will take a while to install because AltStore needs to download the IPA first. -->
- Version info: _(last update: Jan 29, 2024)_
- [Open in AltStore (v19.08.2-3.0.3)](http://tinyurl.com/4vzwk5hx) - It will take a while to install because AltStore needs to download the IPA first.
<details>
<summary>Expand </summary>
<summary>Version information (last updated: Jun 27, 2024)</summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 19.02.1 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.1 | ✖︎ |
| **YouTube** | Google Inc | 19.25.4 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.3 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.1 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.7 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.1.3 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.1.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **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.3 | [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.4.2 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.2 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.1 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.3 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.12 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.2 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
| **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.6 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.14 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1-3 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.4-2 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.4 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YouTube-X** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.9 | [✔︎](https://github.com/PoomSmart/YouTube-X) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
</details>
# Installation
## 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
- [**Poomsmart**](https://twitter.com/poomsmart): https://poomsmart.github.io
- [**level3tjg**](https://twitter.com/level3tjg): https://ko-fi.com/level3tjg
- [**BandarHL**](https://twitter.com/bandarhl): https://www.paypal.com/paypalme/BandarHL
- [**julioverne**](https://twitter.com/ijulioverne): https://www.patreon.com/julioverne
- [**Galactic-dev**](https://twitter.com/dev_galactic):
## Features
1. **[uYou](https://miro92.com/repo/depictions/?p=com.miro.uyou):** Enhance your YouTube experience.
2. **[iSponsorBlock](https://github.com/Galactic-Dev/iSponsorBlock):** A jailbreak tweak that implements the SponsorBlock API to skip sponsorships in YouTube videos.
3. **[YouPiP](https://poomsmart.github.io/repo/depictions/youpip):** Enable **native PiP** in iOS YouTube app.
4. **[YTUHD](https://poomsmart.github.io/repo/depictions/ytuhd):** Unlock 1440p (2K) and 2160p (4K) resolutions in iOS YouTube app.
<details>
<summary>And many more!</summary>
5. **[YTClassicVideoQuality](https://poomsmart.github.io/repo/depictions/ytclassicvideoquality):** Revert to the original video quality selector in YouTube app.
6. **[YTNoHoverCards](https://level3tjg.me/repo/depictions/?p=com.level3tjg.ytnohovercards):** Disable overlay at the end of YouTube videos.
7. **[YouRememberCaption](https://poomsmart.github.io/repo/depictions/youremembercaption)**: Make YouTube remember your video caption setting, if not already.
8. **[NoYTPremium](https://poomsmart.github.io/repo/depictions/noytpremium)**: Remove YouTube Premium upsell alerts.
9. **[YTSpeed](http://cydia.saurik.com/package/com.lyvendia.ytspeed/)**: Simple playback speed tweak for the YouTube app on jailbroken iOS/iPadOS devices.
10. **[YTMiniplayerEnabler](https://level3tjg.me/repo/depictions/?p=com.level3tjg.ytminiplayerenabler)**: Enable Miniplayer for all YouTube videos.
11. **[DontEatMyContent](https://github.com/therealFoxster/DontEatMyContent)**: Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
12. **[YTABConfig](https://poomsmart.github.io/repo/depictions/ytabconfig)**: Configure A/B settings in iOS YouTube app.
13. **[YouMute](https://poomsmart.github.io/repo/depictions/youmute)**: Mute/unmute videos in iOS YouTube directly.
14. **[YouQuality](https://poomsmart.github.io/repo/depictions/youquality)**: View and change video quality in YouTube app from the video overlay.
15. **[YouTube-X](https://poomsmart.github.io/repo/depictions/ytx)**: A lightweight YouTube improvement tweak.
</details>
## Credits
- Special thanks to all the developers who have contributed to uYouPlus!
<table id='credits'>
<tr align='center'>
<td id='miro92'>
<a href='https://github.com/MiRO92'>
<img src='https://github.com/MiRO92.png' width='140px;' style='border-radius: 99999px;'>
</a>
<br>
<a href='https://twitter.com/miro92'>MiRO92</a>
</td>
<td id='poomsmart'>
<a href='https://github.com/PoomSmart'>
<img src='https://github.com/PoomSmart.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/poomsmart'>PoomSmart</a>
</td>
<td id='level3tjg'>
<a href='https://github.com/level3tjg'>
<img src='https://github.com/level3tjg.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/level3tjg'>level3tjg</a>
</td>
<td id='bandarHL'>
<a href='https://github.com/BandarHL'>
<img src='https://github.com/BandarHL.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/bandarhl'>BandarHelal</a>
</td>
<td id='galactic-dev'>
<a href='https://github.com/Galactic-Dev'>
<img src='https://github.com/Galactic-Dev.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/dev_galactic'>galactic</a>
</td>
</tr>
<tr align='center'>
<td id='julioverne'>
<a href='https://github.com/julioverne'>
<img src='https://github.com/julioverne.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/ijulioverne'>julioverne</a>
</td>
<td id='hbang'>
<a href='https://github.com/hbang'>
<img src='https://github.com/hbang.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/hashbang'>HASHBANG</a>
</td>
<td id='lyvendia'>
<a href='https://github.com/Lyvendia'>
<img src='https://github.com/Lyvendia.png' width='140px;'>
</a>
<br>
<a href='https://github.com/Lyvendia'>Lyvendia</a>
</td>
<td id='foxster'>
<a href='https://github.com/therealFoxster'>
<img src='https://github.com/therealFoxster.png' width='140px;'>
</a>
<br>
<a href='https://github.com/therealFoxster'>Foxster</a>
</td>
<td id='ichitaso'>
<a href='https://github.com/ichitaso'>
<img src='https://github.com/ichitaso.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/ichitaso'>ichitaso</a>
</td>
</tr>
<tr align='center'>
<td id='ahmed-bafkir'>
<a href='https://github.com/AhmedBafkir'>
<img src='https://github.com/AhmedBafkir.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/Peaceful_0'>Ahmed Bafkir</a>
</td>
<td id='cokepokes'>
<a href='https://github.com/CokePokes'>
<img src='https://github.com/CokePokes.png' width='140px;'>
</a>
<br>
<a href='https://twitter.com/cokepokes'>CokePokes</a>
</td>
<td id='isnackable'>
<a href='https://github.com/ISnackable'>
<img src='https://github.com/ISnackable.png' width='140px;'>
</a>
<br>
<a href='https://isnackable.me/'>Tommy Teo</a>
</td>
<td id='theos-team'>
<a href='https://github.com/theos/theos'>
<img src='https://github.com/theos.png' width='140px;'>
</a>
<br>
<a href='https://theos.dev'>theos</a>
</td>
<td id='qnblackcat'>
<a href='https://github.com/qnblackcat'>
<img src='https://github.com/qnblackcat.png' width='140px;'>
</a>
<br>
<a href='https://https://twitter.com/t70438299'>qnblackcat</a>
</td>
</tr>
</table>
## Support the developers!
- **MiRO92**: https://github.com/MiRO92/uYou-for-YouTube#support
- **PoomSmart**: https://poomsmart.github.io
- **level3tjg**: https://ko-fi.com/level3tjg
- **BandarHL**: https://www.paypal.com/paypalme/BandarHL
- **julioverne**: https://www.patreon.com/julioverne
- **Galactic-Dev**:
- Paypal: https://www.paypal.com/paypalme/DBrett684
- Venmo: https://venmo.com/u/DavidBrett
# FAQ
## FAQs
See [FAQ - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/FAQ).
See [FAQs - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/FAQs).
# Building (optional)
## Building
See [Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Building).

View file

@ -1,21 +0,0 @@
#import "../Tweaks/YouTubeHeader/YTAlertView.h"
#import "uYouPlus.h"
extern NSBundle *uYouPlusBundle();
// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm
%hook MDXPlaybackRouteButtonController
- (void)didPressButton:(id)arg1 {
if (IS_ENABLED(@"castConfirm_enabled")) {
NSBundle *tweakBundle = uYouPlusBundle();
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
%orig;
} actionTitle:LOC(@"MSG_YES")];
alertView.title = LOC(@"CASTING");
alertView.subtitle = LOC(@"MSG_ARE_YOU_SURE");
[alertView show];
} else {
return %orig;
}
}
%end

View file

@ -1,5 +1,5 @@
#import "../Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h"
#import "../Tweaks/YouTubeHeader/YTPlayerOverlay.h"
#import <YouTubeHeader/YTPlayerOverlayProvider.h>
#import <YouTubeHeader/YTPlayerOverlay.h>
#import "uYouPlus.h"
// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo

View file

@ -1,7 +1,7 @@
#import "../Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
#import "../Tweaks/YouTubeHeader/YTIGuideResponse.h"
#import "../Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
#import "../Tweaks/YouTubeHeader/YTIBrowseRequest.h"
#import <YouTubeHeader/YTIPivotBarRenderer.h>
#import <YouTubeHeader/YTIGuideResponse.h>
#import <YouTubeHeader/YTIGuideResponseSupportedRenderers.h>
#import <YouTubeHeader/YTIBrowseRequest.h>
#import "uYouPlus.h"
%group YTReExplore // https://github.com/PoomSmart/YTReExplore/

View file

@ -1,21 +0,0 @@
#import "uYouPlus.h"
%group YTStockVolumeHUD // https://github.com/lilacvibes/YTStockVolumeHUD
%hook YTVolumeBarView
- (void)volumeChanged:(id)arg1 {
%orig(nil);
}
%end
%hook UIApplication
- (void)setSystemVolumeHUDEnabled:(BOOL)arg1 forAudioCategory:(id)arg2 {
%orig(true, arg2);
}
%end
%end
%ctor {
if (IS_ENABLED(@"stockVolumeHUD_enabled")) {
%init(YTStockVolumeHUD);
}
}

View file

@ -7,10 +7,17 @@
#import <rootless.h>
#import "uYouPlusThemes.h" // Hide "Buy Super Thanks" banner (_ASDisplayView)
#import "../Tweaks/YouTubeHeader/YTAppDelegate.h" // Activate FLEX
#import "../Tweaks/YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
#import <YouTubeHeader/YTAppDelegate.h> // Activate FLEX
#import <YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h>
#import <YouTubeHeader/YTIPlayerBarDecorationModel.h>
#import <YouTubeHeader/YTPlayerBarRectangleDecorationView.h>
// #import "../Tweaks/YouTubeHeader/YTISectionListRenderer.h" // Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X
// Hide buttons under the video player by @PoomSmart
#import <YouTubeHeader/ASCollectionElement.h>
#import <YouTubeHeader/ASCollectionView.h>
#import <YouTubeHeader/ELMNodeController.h>
// #import <YouTubeHeader/YTISectionListRenderer.h> // Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
#define IS_ENABLED(k) [[NSUserDefaults standardUserDefaults] boolForKey:k]

View file

@ -26,13 +26,6 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
%end
// Disable double tap to seek
%hook YTDoubleTapToSeekController
- (void)enableDoubleTapToSeek:(BOOL)arg1 {
return IS_ENABLED(@"doubleTapToSeek_disabled") ? %orig(NO) : %orig;
}
%end
// Disable snap to chapter
%hook YTSegmentableInlinePlayerBarView
- (void)didMoveToWindow {
@ -50,11 +43,68 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
%end
// Hide useless buttons under the video player by @PoomSmart
static BOOL findCell(ASNodeController *nodeController, NSArray <NSString *> *identifiers) {
for (id child in [nodeController children]) {
if ([child isKindOfClass:%c(ELMNodeController)]) {
NSArray <ELMComponent *> *elmChildren = [(ELMNodeController *)child children];
for (ELMComponent *elmChild in elmChildren) {
for (NSString *identifier in identifiers) {
if ([[elmChild description] containsString:identifier])
return YES;
}
}
}
if ([child isKindOfClass:%c(ASNodeController)]) {
ASDisplayNode *childNode = ((ASNodeController *)child).node; // ELMContainerNode
NSArray *yogaChildren = childNode.yogaChildren;
for (ASDisplayNode *displayNode in yogaChildren) {
if ([identifiers containsObject:displayNode.accessibilityIdentifier])
return YES;
}
return findCell(child, identifiers);
}
return NO;
}
return NO;
}
%hook ASCollectionView
- (CGSize)sizeForElement:(ASCollectionElement *)element {
if ([self.accessibilityIdentifier isEqualToString:@"id.video.scrollable_action_bar"]) {
ASCellNode *node = [element node];
ASNodeController *nodeController = [node controller];
if (IS_ENABLED(@"hideRemixButton_enabled") && findCell(nodeController, @[@"id.video.remix.button"])) {
return CGSizeZero;
}
if (IS_ENABLED(@"hideClipButton_enabled") && findCell(nodeController, @[@"clip_button.eml"])) {
return CGSizeZero;
}
if (IS_ENABLED(@"hideDownloadButton_enabled") && findCell(nodeController, @[@"id.ui.add_to.offline.button"])) {
return CGSizeZero;
}
}
return %orig;
}
%end
// Enable miniplayer for all videos
// See YTMiniPlayerEnabler.x
// Use stock iOS volume HUD
// See YTStockVolumeHUD.xm
// Use YTColdConfig's method instead of YTStockVolumeHUD.xm, see https://x.com/PoomSmart/status/1756904290445332653
%hook YTColdConfig
- (BOOL)iosUseSystemVolumeControlInFullscreen {
return IS_ENABLED(@"stockVolumeHUD_enabled") ? YES : %orig;
}
%end
# pragma mark - Video control overlay options
@ -93,29 +143,27 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
%end
// Hide next and previous buttons
%group gHidePreviousAndNextButton
%hook YTColdConfig
- (BOOL)removeNextPaddleForSingletonVideos { return YES; }
- (BOOL)removePreviousPaddleForSingletonVideos { return YES; }
%end
%end
// Replace next and previous buttons with fast forward and rewind
%group gReplacePreviousAndNextButton
%hook YTColdConfig
- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return YES; }
- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return YES; }
%end
%end
// Bring back the red progress bar - Broken?!
// Bring back the red progress bar - old versions
%hook YTInlinePlayerBarContainerView
- (id)quietProgressBarColor {
return IS_ENABLED(@"redProgressBar_enabled") ? [UIColor redColor] : %orig;
}
%end
// Bring back the red progress bar - new versions
%hook YTPlayerBarRectangleDecorationView
- (void)drawRectangleDecorationWithSideMasks:(CGRect)rect {
if (IS_ENABLED(@"redProgressBar_enabled")) {
YTIPlayerBarDecorationModel *model = [self valueForKey:@"_model"];
int overlayMode = model.playingState.overlayMode;
model.playingState.overlayMode = 1;
%orig;
model.playingState.overlayMode = overlayMode;
} else
%orig;
}
%end
// Hide videos' end screens
// See YTNoHoverCards.x
@ -151,27 +199,19 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
%end
// Disable resume to Shorts
%hook YTShortsStartupCoordinator
- (id)evaluateResumeToShorts {
return IS_ENABLED(@"disableResumeToShorts") ? nil : %orig;
}
%end
# pragma mark - Miscellaneous
// Hide iSponsorBlock
%hook YTRightNavigationButtons
- (void)didMoveToWindow {
%orig;
if (IS_ENABLED(@"hideiSponsorBlockButton_enabled"))
if (IS_ENABLED(@"hideiSponsorBlockButton_enabled")) {
self.sponsorBlockButton.hidden = YES;
self.sponsorBlockButton.frame = CGRectZero;
}
}
%end
// YTCastConfirm
// See YTCastConfirm.xm
// Disable hints - https://github.com/LillieH001/YouTube-Reborn/blob/v4/
%group gDisableHints
%hook YTSettings
@ -285,6 +325,33 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
%end
// Fixes uYou crash when trying to play video (#1422)
@interface YTVarispeedSwitchController : NSObject
@end
@interface YTPlayerOverlayManager : NSObject
@property (nonatomic, assign) float currentPlaybackRate;
@property (nonatomic, strong, readonly) YTVarispeedSwitchController *varispeedController;
- (void)varispeedSwitchController:(YTVarispeedSwitchController *)varispeed didSelectRate:(float)rate;
- (void)setCurrentPlaybackRate:(float)rate;
- (void)setPlaybackRate:(float)rate;
@end
%hook YTPlayerOverlayManager
%property (nonatomic, assign) float currentPlaybackRate;
%new
- (void)setCurrentPlaybackRate:(float)rate {
[self varispeedSwitchController:self.varispeedController didSelectRate:rate];
}
%new
- (void)setPlaybackRate:(float)rate {
[self varispeedSwitchController:self.varispeedController didSelectRate:rate];
}
%end
// Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X
// %hook YTIElementRenderer
// - (NSData *)elementData {
@ -313,6 +380,8 @@ NSBundle *tweakBundle = uYouPlusBundle();
- (BOOL)respectDeviceCaptionSetting { return NO; }
// Swipe right to dismiss the right panel in fullscreen mode
- (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; }
// Don't use new YT settings layout (Cairo Settings)
- (BOOL)mainAppCoreClientEnableCairoSettings { return NO; }
%end
# pragma mark - Constructor
@ -322,12 +391,6 @@ NSBundle *tweakBundle = uYouPlusBundle();
// dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY);
%init;
if (IS_ENABLED(@"hidePreviousAndNextButton_enabled")) {
%init(gHidePreviousAndNextButton);
}
if (IS_ENABLED(@"replacePreviousAndNextButton_enabled")) {
%init(gReplacePreviousAndNextButton);
}
if (IS_ENABLED(@"disableHints_enabled")) {
%init(gDisableHints);
}

View file

@ -1,4 +1,4 @@
#import "../Tweaks/YouTubeHeader/YTCommonColorPalette.h"
#import <YouTubeHeader/YTCommonColorPalette.h>
#import "uYouPlus.h"
@interface YTSingleVideoController : NSObject

View file

@ -6,22 +6,12 @@
%hook NSBundle
- (NSDictionary *)infoDictionary {
NSMutableDictionary *info = %orig.mutableCopy;
NSString *altBundleIdentifier = info[@"ALTBundleIdentifier"];
if (altBundleIdentifier) info[@"CFBundleIdentifier"] = altBundleIdentifier;
if ([self isEqual:NSBundle.mainBundle])
info[@"CFBundleIdentifier"] = @"com.google.ios.youtube";
return info;
}
%end
// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263
%hook YTDataUtils
+ (NSMutableDictionary *)spamSignalsDictionary {
return nil;
}
+ (NSMutableDictionary *)spamSignalsDictionaryWithoutIDFA {
return nil;
}
%end
%hook YTHotConfig
- (BOOL)disableAfmaIdfaCollection { return NO; }
%end
@ -62,36 +52,36 @@
%end
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
%group iOS16
%hook OBPrivacyLinkButton
%new
- (instancetype)initWithCaption:(NSString *)caption
buttonText:(NSString *)buttonText
image:(UIImage *)image
imageSize:(CGSize)imageSize
useLargeIcon:(BOOL)useLargeIcon {
return [self initWithCaption:caption
buttonText:buttonText
image:image
imageSize:imageSize
useLargeIcon:useLargeIcon
displayLanguage:[NSLocale currentLocale].languageCode];
}
%end
%end
// %group iOS16
// %hook OBPrivacyLinkButton
// %new
// - (instancetype)initWithCaption:(NSString *)caption
// buttonText:(NSString *)buttonText
// image:(UIImage *)image
// imageSize:(CGSize)imageSize
// useLargeIcon:(BOOL)useLargeIcon {
// return [self initWithCaption:caption
// buttonText:buttonText
// image:image
// imageSize:imageSize
// useLargeIcon:useLargeIcon
// displayLanguage:[NSLocale currentLocale].languageCode];
// }
// %end
// %end
// Fix uYou playback speed crashes YT v18.49.3+, see https://github.com/iCrazeiOS/uYouCrashFix
%hook YTPlayerViewController
%new
-(float)currentPlaybackRateForVarispeedSwitchController:(id)arg1 {
return [[self activeVideo] playbackRate];
}
// %hook YTPlayerViewController
// %new
// -(float)currentPlaybackRateForVarispeedSwitchController:(id)arg1 {
// return [[self activeVideo] playbackRate];
// }
%new
-(void)varispeedSwitchController:(id)arg1 didSelectRate:(float)arg2 {
[[self activeVideo] setPlaybackRate:arg2];
}
%end
// %new
// -(void)varispeedSwitchController:(id)arg1 didSelectRate:(float)arg2 {
// [[self activeVideo] setPlaybackRate:arg2];
// }
// %end
// Fix streched artwork in uYou's player view - https://github.com/MiRO92/uYou-for-YouTube/issues/287
%hook ArtworkImageView
@ -116,8 +106,17 @@
%end
// Fix uYou's appearance not updating if the app is backgrounded
DownloadsPagerVC *downloadsPagerVC;
NSUInteger selectedTabIndex;
static DownloadsPagerVC *downloadsPagerVC;
static NSUInteger selectedTabIndex;
%hook DownloadsPagerVC
- (id)init {
downloadsPagerVC = %orig;
return downloadsPagerVC;
}
- (void)viewPager:(id)viewPager didChangeTabToIndex:(NSUInteger)arg1 fromTabIndex:(NSUInteger)arg2 {
%orig; selectedTabIndex = arg1;
}
%end
static void refreshUYouAppearance() {
if (!downloadsPagerVC) return;
// View pager
@ -156,19 +155,12 @@ static void refreshUYouAppearance() {
}
}
}
%hook DownloadsPagerVC
- (instancetype)init {
downloadsPagerVC = %orig;
return downloadsPagerVC;
}
- (void)viewPager:(id)viewPager didChangeTabToIndex:(NSUInteger)arg1 fromTabIndex:(NSUInteger)arg2 {
%orig; selectedTabIndex = arg1;
}
%end
%hook UIViewController
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
%orig;
refreshUYouAppearance();
dispatch_async(dispatch_get_main_queue(), ^{
refreshUYouAppearance();
});
}
%end
@ -196,9 +188,9 @@ static void refreshUYouAppearance() {
%ctor {
%init;
if (@available(iOS 16, *)) {
%init(iOS16);
}
// if (@available(iOS 16, *)) {
// %init(iOS16);
// }
// Disable broken options

View file

@ -1,11 +1,14 @@
#import "../Tweaks/YouTubeHeader/YTSettingsViewController.h"
#import "../Tweaks/YouTubeHeader/YTSearchableSettingsViewController.h"
#import "../Tweaks/YouTubeHeader/YTSettingsSectionItem.h"
#import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
#import "../Tweaks/YouTubeHeader/YTUIUtils.h"
#import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h"
#import <YouTubeHeader/YTSettingsViewController.h>
#import <YouTubeHeader/YTSearchableSettingsViewController.h>
#import <YouTubeHeader/YTSettingsSectionItem.h>
#import <YouTubeHeader/YTSettingsSectionItemManager.h>
#import <YouTubeHeader/YTUIUtils.h>
#import <YouTubeHeader/YTSettingsPickerViewController.h>
#import "uYouPlus.h"
NSString *UYOUPLUS_RELEASES_URL = @"https://github.com/qnblackcat/uYouPlus/releases";
NSString *UYOUPLUS_NEW_ISSUE_URL = @"https://github.com/qnblackcat/uYouPlus/issues/new?assignees=&labels=bug&projects=&template=bug.yaml&title=[v%@] %@";
// For displaying snackbars
@interface YTHUDMessage : NSObject
+ (id)messageWithText:(id)text;

View file

@ -54,7 +54,7 @@ extern NSBundle *uYouPlusBundle();
return VERSION_STRING;
}
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/qnblackcat/uYouPlus/releases"]];
return [%c(YTUIUtils) openURL:[NSURL URLWithString:UYOUPLUS_RELEASES_URL]];
}
];
[sectionItems addObject:version];
@ -65,9 +65,9 @@ extern NSBundle *uYouPlusBundle();
accessibilityIdentifier:nil
detailTextBlock:nil
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSString *url = [NSString stringWithFormat:@"https://github.com/qnblackcat/uYouPlus/issues/new?assignees=&labels=bug&projects=&template=bug.yaml&title=[v%@] %@", VERSION_STRING, LOC(@"ADD_TITLE")];
NSString *url = [NSString stringWithFormat:UYOUPLUS_NEW_ISSUE_URL, VERSION_STRING, LOC(@"ADD_TITLE")];
return [%c(YTUIUtils) openURL:[NSURL URLWithString:[url stringByReplacingOccurrencesOfString:@" " withString:@"%20"]]];
return [%c(YTUIUtils) openURL:[NSURL URLWithString:url]];
}
];
[sectionItems addObject:bug];
@ -164,10 +164,12 @@ extern NSBundle *uYouPlusBundle();
SECTION_HEADER(LOC(@"VIDEO_PLAYER_OPTIONS"));
SWITCH_ITEM2(LOC(@"SLIDE_TO_SEEK"), LOC(@"SLIDE_TO_SEEK_DESC"), @"slideToSeek_enabled");
SWITCH_ITEM(LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK"), LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC"), @"doubleTapToSeek_disabled");
SWITCH_ITEM2(LOC(@"SNAP_TO_CHAPTER"), LOC(@"SNAP_TO_CHAPTER_DESC"), @"snapToChapter_enabled");
SWITCH_ITEM2(LOC(@"PINCH_TO_ZOOM"), LOC(@"PINCH_TO_ZOOM_DESC"), @"pinchToZoom_enabled");
SWITCH_ITEM(LOC(@"YT_MINIPLAYER"), LOC(@"YT_MINIPLAYER_DESC"), @"ytMiniPlayer_enabled");
SWITCH_ITEM(LOC(@"HIDE_REMIX_BUTTON"), LOC(@"HIDE_REMIX_BUTTON_DESC"), @"hideRemixButton_enabled");
SWITCH_ITEM(LOC(@"HIDE_CLIP_BUTTON"), LOC(@"HIDE_CLIP_BUTTON_DESC"), @"hideClipButton_enabled");
SWITCH_ITEM(LOC(@"HIDE_DOWNLOAD_BUTTON"), LOC(@"HIDE_DOWNLOAD_BUTTON_DESC"), @"hideDownloadButton_enabled");
SWITCH_ITEM(LOC(@"STOCK_VOLUME_HUD"), LOC(@"STOCK_VOLUME_HUD_DESC"), @"stockVolumeHUD_enabled");
# pragma mark - Video controls overlay options
@ -178,8 +180,6 @@ extern NSBundle *uYouPlusBundle();
SWITCH_ITEM(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), @"hideHUD_enabled");
SWITCH_ITEM(LOC(@"HIDE_PAID_PROMOTION_CARDS"), LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC"), @"hidePaidPromotionCard_enabled");
SWITCH_ITEM2(LOC(@"HIDE_CHANNEL_WATERMARK"), LOC(@"HIDE_CHANNEL_WATERMARK_DESC"), @"hideChannelWatermark_enabled");
SWITCH_ITEM(LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON"), LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC"), @"hidePreviousAndNextButton_enabled");
SWITCH_ITEM2(LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON"), LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC"), @"replacePreviousAndNextButton_enabled");
SWITCH_ITEM2(LOC(@"RED_PROGRESS_BAR"), LOC(@"RED_PROGRESS_BAR_DESC"), @"redProgressBar_enabled");
SWITCH_ITEM(LOC(@"HIDE_HOVER_CARD"), LOC(@"HIDE_HOVER_CARD_DESC"), @"hideHoverCards_enabled");
SWITCH_ITEM2(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled");
@ -189,16 +189,13 @@ extern NSBundle *uYouPlusBundle();
SWITCH_ITEM(LOC(@"HIDE_SUPER_THANKS"), LOC(@"HIDE_SUPER_THANKS_DESC"), @"hideBuySuperThanks_enabled");
SWITCH_ITEM(LOC(@"HIDE_SUBCRIPTIONS"), LOC(@"HIDE_SUBCRIPTIONS_DESC"), @"hideSubcriptions_enabled");
SWITCH_ITEM(LOC(@"DISABLE_RESUME_TO_SHORTS"), LOC(@"DISABLE_RESUME_TO_SHORTS_DESC"), @"disableResumeToShorts");
# pragma mark - Miscellaneous
SECTION_HEADER(LOC(@"MISCELLANEOUS"));
// SWITCH_ITEM2(LOC(@"HIDE_UYOU"), nil, @"hideUYouTab_enabled"); // We stay on 19.02.1 until MiRO92 update uYou?
SWITCH_ITEM2(LOC(@"HIDE_ISPONSORBLOCK"), nil, @"hideiSponsorBlockButton_enabled");
SWITCH_ITEM(LOC(@"CAST_CONFIRM"), LOC(@"CAST_CONFIRM_DESC"), @"castConfirm_enabled");
SWITCH_ITEM(LOC(@"HIDE_ISPONSORBLOCK"), nil, @"hideiSponsorBlockButton_enabled");
SWITCH_ITEM(LOC(@"DISABLE_HINTS"), LOC(@"DISABLE_HINTS_DESC"), @"disableHints_enabled");
SWITCH_ITEM(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled");
SWITCH_ITEM2(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled");
SWITCH_ITEM(LOC(@"HIDE_CHIP_BAR"), LOC(@"HIDE_CHIP_BAR_DESC"), @"hideChipBar_enabled");
SWITCH_ITEM(LOC(@"HIDE_PLAY_NEXT_IN_QUEUE"), LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC"), @"hidePlayNextInQueue_enabled");
SWITCH_ITEM2(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled");

View file

@ -1,9 +1,10 @@
#import "../Tweaks/YouTubeHeader/YTCommonColorPalette.h"
#import "../Tweaks/YouTubeHeader/ASCollectionView.h"
#import <YouTubeHeader/YTCommonColorPalette.h>
#import <YouTubeHeader/ASCollectionView.h>
#import <YouTubeHeader/_ASDisplayView.h>
#import "uYouPlus.h"
@interface YCHLiveChatView : UIView
@end
// @interface YCHLiveChatView : UIView
// @end
@interface YTFullscreenEngagementOverlayView : UIView
@end
@ -11,8 +12,8 @@
@interface YTRelatedVideosView : UIView
@end
@interface ELMView : UIView
@end
// @interface ELMView : UIView
// @end
@interface ASWAppSwitcherCollectionViewCell : UIView
@end
@ -26,11 +27,8 @@
@interface UIKeyboardDockView : UIView
@end
@interface _ASDisplayView : UIView
@end
@interface YTCommentDetailHeaderCell : UIView
@end
// @interface YTCommentDetailHeaderCell : UIView
// @end
@interface SponsorBlockSettingsController : UITableViewController
@end
@ -44,6 +42,9 @@
@interface UIPredictionViewController : UIViewController
@end
@interface TUIEmojiSearchView : UIView
@end
@interface FRPreferences : UITableViewController
@end

View file

@ -123,22 +123,20 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
}
%end
// Your videos
// Download sort
%hook GOODialogView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
// Playlist sort
%hook ASCollectionView
- (void)didMoveToWindow {
%orig;
if (IS_DARK_APPEARANCE_ENABLED && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) {
self.superview.backgroundColor = [UIColor blackColor];
}
}
%end
// Sub menu?
%hook ELMView
- (void)didMoveToWindow {
%orig;
if (IS_DARK_APPEARANCE_ENABLED) {
// self.subviews[0].backgroundColor = [UIColor clearColor];
self.backgroundColor = [UIColor clearColor];
}
}
%end
@ -162,111 +160,48 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
}
%end
// Search view
%hook YTSearchBarView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
// History search view
%hook YTSearchBoxView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
// Comment view
%hook YTCommentView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTCreateCommentAccessoryView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTCreateCommentTextView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor whiteColor]) : %orig;
}
%end
%hook YTCommentDetailHeaderCell
- (void)didMoveToWindow {
%orig;
if (IS_DARK_APPEARANCE_ENABLED) {
// self.subviews[2].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTFormattedStringLabel // YT is werid...
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor clearColor]) : %orig;
}
%end
// Live chat comment
%hook YCHLiveChatActionPanelView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTEmojiTextView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YCHLiveChatView
- (void)didMoveToWindow {
%orig;
if (IS_DARK_APPEARANCE_ENABLED) {
// self.subviews[1].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTCollectionView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
//
%hook YTBackstageCreateRepostDetailView
- (void)setBackgroundColor:(UIColor *)color {
return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig;
}
%end
// Others
%hook _ASDisplayView
- (void)didMoveToWindow {
%orig;
if (IS_DARK_APPEARANCE_ENABLED) {
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; }
//
UIResponder *responder = self.nextResponder;
UIViewController *closestViewController = nil;
while (responder != nil) {
if ([responder isKindOfClass:[UIViewController class]]) {
closestViewController = (UIViewController *)responder;
break;
}
responder = responder.nextResponder;
}
if ([NSStringFromClass([closestViewController class]) isEqualToString:@"YTActionSheetDialogViewController"] &&
(([NSStringFromClass([self.superview class]) isEqualToString:@"YTELMView"]) ||
[NSStringFromClass([self.superview class]) isEqualToString:@"_ASDisplayView"] ||
[NSStringFromClass([self.superview class]) isEqualToString:@"ELMView"])) {
self.backgroundColor = [UIColor clearColor];
}
// Save video bottom
if ([NSStringFromClass([closestViewController class]) isEqualToString:@"YTBottomSheetController"]) { self.backgroundColor = [UIColor clearColor]; }
// Subcriptions header
if ([NSStringFromClass([closestViewController class]) isEqualToString:@"YTMySubsFilterHeaderViewController"] &&
([NSStringFromClass([self.superview class]) isEqualToString:@"YTELMView"])) {
self.backgroundColor = [UIColor clearColor];
}
if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier hasPrefix:@"id.elements.components.overflow_menu_item_"]) { self.backgroundColor = [UIColor clearColor]; }
}
}
%end
@ -289,7 +224,6 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
%orig;
if (IS_DARK_APPEARANCE_ENABLED) {
self.backgroundColor = raisedColor;
// self.subviews[1].backgroundColor = raisedColor;
self.superview.backgroundColor = raisedColor;
}
}
@ -304,6 +238,13 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
# pragma mark - OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
%group gOLEDKB
%hook TUIEmojiSearchView
- (void)didMoveToWindow {
%orig;
self.backgroundColor = [UIColor blackColor];
}
%end
%hook UIPredictionViewController
- (void)loadView {
%orig;
@ -347,4 +288,4 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
if (IS_ENABLED(@"oledKeyBoard_enabled")) {
%init(gOLEDKB);
}
}
}

@ -1 +1 @@
Subproject commit fea6b066e821672479e701bee8f29846da2c064b
Subproject commit 95fecff296722df4a9938308c3bdb178cb690b7c

@ -1 +1 @@
Subproject commit f7a65cf89b92ca1d35bf8b499acc4419eef7bc13
Subproject commit 8373b770db07855b05105c4f407915c6e8c00247

@ -1 +0,0 @@
Subproject commit f3872945d98199c331b388aec1b9c26963e75cc7

@ -1 +1 @@
Subproject commit 510b474b3713d639993db601e46a6460692f9698
Subproject commit f792a421308f898988357990a56fe9c0d806d322

@ -1 +0,0 @@
Subproject commit b836acf9c1f487879b74db63d077575e0bedc289

@ -1 +1 @@
Subproject commit 720578a621c960f473c2d61d5cf7f221462f5aa2
Subproject commit 3b911c0117e882adf12dd896386a11c4700ff76a

@ -1 +1 @@
Subproject commit c677a585e20c053570a558cb0f0c471f6f9f9bf2
Subproject commit 0731dec58e018485f169660699caae19a4a290ad

@ -1 +1 @@
Subproject commit d983151bcb0d86dc3cae17c8ffcc87661457ea5e
Subproject commit d66bc3db70b0193db22174764c564f2017593a53

@ -1 +1 @@
Subproject commit 3ddaf3d0e1b49b69a428d1ac877cf3bde8dd0861
Subproject commit c8551998b1c58551d94b323b8fc49ecee461caee

@ -1 +1 @@
Subproject commit a53583681d1019986a94f88fcaba7dcaf7e74c5a
Subproject commit 54b8acfd7862cbc204e52f519ed0c17930025c41

@ -1 +1 @@
Subproject commit d255e192750ddf8c2e72d67d26f9095e6d3fc8ca
Subproject commit 0fc6d29d1aa9e75f8c13d675daec9365f753d45e

@ -1 +1 @@
Subproject commit 7ffdb1eda6697f718382f74b9310c6a2b3e92c62
Subproject commit c6b8b6ba2f3a38106200064e74e1eec8178b1cd6

@ -1 +1 @@
Subproject commit 0597b15d57361e652557a33f0592667058c5145c
Subproject commit e112746d91b55d18c2a3856f25aef5a669a6089b

@ -1 +1 @@
Subproject commit 7a9841410d3715a46f8a2c34aa58b17772f01d55
Subproject commit 5dfe20bd8afdc2fd0926718024eb613de4e4a0bb

1
Tweaks/YouTube-X Submodule

@ -0,0 +1 @@
Subproject commit fcf46873c632082fd6c522cf761328e26e847e4d

@ -1 +1 @@
Subproject commit 4e9ea16e22a67d00a83427d77f41fdc4d8a06c57
Subproject commit ec666d1cd5a35020850349e04be617aa2a6556f0

@ -1 +1 @@
Subproject commit 4f643248d6e7d60487c9a047e0eb04a2cc35a651
Subproject commit 58951f248bfe90298ca65007603d465f58369876

View file

@ -6,5 +6,5 @@ Maintainer: qnblackcat
Author: qnblackcat
Section: Tweaks
Depends: mobilesubstrate (>= 0.9.5000), com.miro.uyou
Conflicts: com.level3tjg.ytminiplayerenabler, com.level3tjg.ytnohovercards, com.devvix.ytcastconfirm, com.ps.ytclassicvideoquality, com.ps.noytpremium, com.ps.ytnopaidpromo, com.ps.ytreexplore, com.galacticdev.bigytminiplayer, me.foxster.donteatmycontent, com.lilacvibes.ytstockvolumehud, net.sarahh12099.youtubereborn, com.twickd.sarahh12099.youtube-reborn, h.ryan.youtubereborn, weeb.lillie.enhancerforyoutubepremium, com.ps.uyoucompat, com.ichitaso.uyouplus
Conflicts: com.level3tjg.ytminiplayerenabler, com.level3tjg.ytnohovercards, com.ps.noytpremium, com.ps.ytnopaidpromo, com.ps.ytreexplore, com.galacticdev.bigytminiplayer, com.lilacvibes.ytstockvolumehud, net.sarahh12099.youtubereborn, com.twickd.sarahh12099.youtube-reborn, h.ryan.youtubereborn, weeb.lillie.enhancerforyoutubepremium, com.ps.uyoucompat, com.ichitaso.uyouplus
Recommends: com.ps.youmute, com.ps.youpip, com.ps.youquality, com.ps.ytabconfig, com.ps.ytvideooverlay, libflex, weeb.lillie.youtubedislikesreturn