Compare commits

...

90 commits

Author SHA1 Message Date
GitHub Actions
0f08053c53 updated submodules 2024-02-24 23:55:14 +00:00
arichornlover
555ae56d4b
Fix Hide iSponsorBlock Button 2024-02-24 17:09:06 -06:00
GitHub Actions
e09ee6ddc6 updated submodules 2024-02-24 10:33:06 +00:00
arichornlover
4789ae1738
Update update-submodules.yml 2024-02-24 04:32:40 -06:00
GitHub Actions
da2843d783 updated submodules 2024-02-24 10:30:38 +00:00
arichornlover
dccd9774c1
Update FLEX Submodule
FLEX had deprecated APIs! Results in a crash therefore I need to update this so I can use FLEX correctly on newer iOS Versions!
2024-02-24 04:29:59 -06:00
arichornlover
5a4692d437
Update buildapp.yml 2024-02-11 18:05:54 -06:00
arichornlover
c665199953
v16.42.3-2.1-F21 2024-02-11 17:57:31 -06:00
GitHub Actions
e5766b17ad updated submodules 2024-02-11 23:47:22 +00:00
arichornlover
178155d00e
Update .gitmodules 2024-02-11 17:46:50 -06:00
arichornlover
28770a92c0
Update Settings.xm 2024-02-11 17:38:17 -06:00
arichornlover
583fe1a0b6
Fix header for v16.42.3 2024-02-11 17:34:01 -06:00
arichornlover
403feee43e
Update VersionSpoofer.xm 2024-02-11 17:33:34 -06:00
arichornlover
ecfecdada6
Update LowContrastMode.xm 2024-02-11 17:33:25 -06:00
arichornlover
5483628f83
Rename Header.h to uYouPlus.h 2024-02-11 17:33:12 -06:00
arichornlover
424b019d47
Better Submodules for v16.42.3 2024-02-11 17:23:19 -06:00
GitHub Actions
a813cc19e3 updated submodules 2024-02-11 23:22:23 +00:00
GitHub Actions
a30dc51dbf added uYouLocalization submodules 2024-02-11 23:22:12 +00:00
arichornlover
fc401adfc6
Update update-submodules.yml 2024-02-11 17:21:12 -06:00
arichornlover
e10b1d62ad
Update .gitmodules 2024-02-11 17:13:22 -06:00
arichornlover
0a1966cd41
Improved Updating Submodules for v16.42.3 2024-02-11 17:12:24 -06:00
arichornlover
9fa1d89ca0
Update .gitmodules 2024-02-11 16:55:27 -06:00
arichornlover
ded048d0c6
Improved v16.42.3 Building
v16.42.3 is now in Parody with the Main Branch of uYouEnhanced!
Also I removed the uYouPlusExtra name from this new release!
2024-02-10 13:25:15 -06:00
GitHub Actions
a7c53286ab updated submodules 2024-02-10 19:19:29 +00:00
arichorn
1986066e06
Update uYouPlus.xm 2023-09-24 20:04:22 -05:00
arichorn
fd1f0cbe00
Fix YTNoChannelLinks Tweak 2023-09-24 09:34:31 -05:00
arichorn
5a7146710e
Update Settings.xm 2023-09-04 18:38:47 -05:00
arichorn
cfdb350255
v16.42.3-2.1-F20 2023-09-02 09:49:09 -05:00
GitHub Actions
c79bc496e4 updated submodules 2023-09-02 14:28:25 +00:00
arichorn
d5f1ddebdb
Improvements to v16.42.3 building 2023-09-02 09:12:55 -05:00
arichorn
66276dcea0
v16.42.3-2.1-F20 2023-09-02 03:07:27 -05:00
GitHub Actions
d261475659 updated submodules 2023-09-02 07:49:26 +00:00
arichorn
b0678ca526
Update update-submodules.yml 2023-09-02 02:47:47 -05:00
arichorn
e464bea592
Update .gitmodules 2023-09-02 02:42:29 -05:00
GitHub Actions
9e742093c3 updated submodules 2023-09-02 07:12:04 +00:00
arichorn
1d78420840
New SDK 2023-09-02 02:11:15 -05:00
arichorn
01500dee04
Improved Crash Fix 2023-09-02 00:05:02 -05:00
arichorn
d125e09ea3
LowContrastMode v1.4.2 2023-09-01 23:07:18 -05:00
arichorn
cac13be185
Fix Crashing - v16.42.3
YouTube has added a new feature but this new particular feature was links under the channel profile. This commit removes the button to prevent the app from crashing.
2023-09-01 22:33:11 -05:00
arichorn
5d1aeda416
Added v17.38.10 version 2023-08-28 18:33:29 -05:00
arichorn
aab450a6d3
Update Settings.xm 2023-08-11 17:45:06 -05:00
arichorn
d88165f2a5
Update uYouPlus.xm 2023-08-11 17:45:01 -05:00
arichorn
546f1f3603
New Option (16.42.3 App Fixer)
This New Option is recommended in 2024. this option will be important because in that year Google will kill those APIs for older app versions like 16.42.3 but whenever enabling this option it will completely change and force the app into using newer APIs. Into making the app functional once again.
2023-08-11 17:30:16 -05:00
arichorn
0d3ab04bc5
Support for Promo View 2023-08-11 04:35:46 -05:00
arichorn
6ba4426180
v16.42.3-2.1-F19 2023-08-01 22:16:49 -05:00
arichorn
eedb0670d0
Fix uYou 2.1 Building 2023-08-01 21:57:47 -05:00
arichorn
6cb24ab1c8
New Options for 16.42.3 2023-08-01 21:45:52 -05:00
arichorn
2f5680513d
Update VersionSpoofer.xm 2023-08-01 21:41:40 -05:00
arichorn
6688de6214
Fix 16.42.3’s Dark Theme 2023-08-01 21:38:45 -05:00
arichorn
7b7e86f853
Update Settings.xm 2023-08-01 21:04:10 -05:00
arichorn
ffa3f33ac7
Update update-submodules.yml 2023-08-01 21:02:35 -05:00
GitHub Actions
056e803e6d updated submodules 2023-08-02 01:25:41 +00:00
GitHub Actions
4fdbdeccfd added submodules 2023-08-02 01:25:39 +00:00
arichorn
9f4c737bff
Create update-submodules.yml 2023-08-01 20:25:20 -05:00
arichorn
a05d1b9d5a
v16.42.3-2.1-F18 2023-07-09 00:13:47 -05:00
arichorn
38d92e5aae
Another Change
I needed to declare it so it can work on v16.42.3 LTS Build
2023-07-09 00:13:10 -05:00
arichorn
e15d2d1d37
Added another option
This option is required in order for the version spoofer to work 😅
2023-07-09 00:00:24 -05:00
arichorn
a4e3978182
LowContrastMode v1.3.0 2023-07-08 23:55:06 -05:00
arichorn
af2a84173e
Added New Options! 2023-07-08 23:20:23 -05:00
arichorn
a14bab860f
Added Client-Side VersionSpoofer Option 2023-07-08 00:45:34 -05:00
arichorn
6e31be103d
Added Version Spoofer for v16.42.3 2023-07-07 23:32:06 -05:00
arichorn
089417e152
Update README.md 2023-07-05 20:51:26 -05:00
arichorn
bede8d8844
Fixed LowContrastMode not working (v16.42.3 LTS)
sorry for removing something that shouldn't be removed. this whole file is everywhere on the tweaks.
2023-04-29 14:18:50 -05:00
arichorn
63880797b9
Removed Hide Tab Bar Labels Option (v16.42.3 LTS)
option stopped work due to a server-side change. this will not work on any version.
2023-04-29 09:45:34 -05:00
arichorn
6fecd1f060
fixed login issue 2023-04-29 09:42:56 -05:00
arichorn
68f8731322
Update uYouPlus.xm 2023-04-28 18:50:03 -05:00
arichorn
482788870e
fixed grouping 2023-04-28 18:15:32 -05:00
arichorn
526523ff56
Update Strings 2023-04-28 18:14:16 -05:00
arichorn
4fa727e671
v16.42.3-2.1-F17 2023-04-28 18:09:59 -05:00
arichorn
0a30141c49
Added 3 New Options
Volume HUD, Disable Wifi Related Settings & YTSpeed Option(s)

also removed options that stopped working with v16.42.3 LTS
2023-04-28 18:07:53 -05:00
arichorn
d5c3e6d37e
fixed uYou 2.1 Deb
uYou 2.1 Deb gotten removed from the repo. but except I added it back in a different way.
2023-04-28 18:00:47 -05:00
arichorn
276358b913
fixed YTSpeed 2023-04-28 17:30:51 -05:00
Aric Horn
76c65e1016 updated submodules 2023-04-28 16:49:33 -05:00
arichorn
b04407e420
Fixed Header.h 2023-04-28 17:23:49 -05:00
arichorn
46d0ade95d
v16.42.3 LTS Improvements.
uYouPlus.xm gets an update with new features based off of the latest changes from v18.14.1 LTS releases.
2023-04-28 17:23:08 -05:00
arichorn
e2e90d053a
Added Source Folder (16.42.3LTS) 2023-04-28 16:57:34 -05:00
Aric
67bc83167a
Merge branch 'qnblackcat:main' into main-16.42.3LTS 2023-03-08 00:47:01 -06:00
Aric
74b69b4dd0
Merge branch 'qnblackcat:main' into main-16.42.3LTS 2023-03-05 16:37:44 -06:00
Aric
1e608bd7b3
Merge branch 'qnblackcat:main' into main-16.42.3LTS 2023-03-01 16:31:38 -06:00
Aric
bf914d9c21
Merge branch 'qnblackcat:main' into main-16.42.3LTS 2023-02-28 23:35:58 -06:00
Aric
c388b6fcf4
Removed Shadow Overlay Buttons Option
Option is only remove in this branch because this DOESN'T work on v16.42.3 of YouTube.
2023-02-28 19:24:32 -06:00
Aric Horn
be8c68e317 updated submodules 2023-02-28 19:03:29 -06:00
Aric
9527c2fc2b
v16.42.3-2.1-F16 2023-02-28 18:27:17 -06:00
Aric
891c9045da
v16.42.3 Compatible Code
Enabled and added the code that makes 16.42.3 work perfectly.
2023-02-28 18:26:31 -06:00
Aric
93a4664b1e
Update uYouPlus.xm 2023-02-28 18:12:13 -06:00
Aric
e66bc8fe7a
Removed Section 2023-02-28 18:04:00 -06:00
Aric
79b387f89f
Fix Settings 2023-02-28 18:00:56 -06:00
Aric
79cebe6d79
Update uYouPlus.xm 2023-02-28 17:49:22 -06:00
Aric
1b433fd107
Update README.md 2023-02-28 17:43:22 -06:00
Aric
2591664bba
Refreshed Branch I guess 2023-02-28 17:41:52 -06:00
47 changed files with 4580 additions and 535 deletions

View file

@ -1,19 +1,14 @@
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
# https://github.com/ISnackable/YTCubePlus/blob/main/.github/workflows/Build.yml
name: Build and Release uYouPlus
name: Build and Release uYouEnhanced (v16.42.3-2.1 LTS)
on:
workflow_dispatch:
inputs:
uyou_version:
description: "The version of uYou"
default: "2.3~1"
required: true
type: string
decrypted_youtube_url:
description: "The direct URL to the decrypted YouTube ipa"
default: ""
sdk_version:
description: "iOS SDK version to be used during build"
default: "16.2"
required: true
type: string
youtube_version:
@ -21,6 +16,16 @@ on:
default: ""
required: true
type: string
uyou_version:
description: "The version of uYou"
default: "2.1"
required: true
type: string
decrypted_youtube_url:
description: "The direct URL to the decrypted YouTube ipa"
default: ""
required: true
type: string
bundle_id:
description: "Modify the bundle ID. Not recommended"
default: "com.google.ios.youtube"
@ -36,6 +41,11 @@ on:
default: true
required: false
type: boolean
upload_artifact:
description: "Upload Artifact"
default: true
required: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@ -43,51 +53,55 @@ concurrency:
jobs:
build:
name: Build uYouPlus
name: Build uYouEnhanced
runs-on: macos-latest
permissions:
contents: write
steps:
- name: Install Dependencies
run: brew install curl dpkg jq ldid make node svn wget xz
- name: Set PATH environment variable
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Checkout Main
uses: actions/checkout@v3.2.0
uses: actions/checkout@v4.1.1
with:
path: main
submodules: recursive
- name: Install Dependencies
run: brew install ldid dpkg make
- name: Set PATH environment variable
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Setup Theos
uses: actions/checkout@v3.2.0
uses: actions/checkout@v4.1.1
with:
repository: theos/theos
ref: master
ref: 9941262c450c0abac524574cb96b9a4cdf5e50f4
path: theos
submodules: recursive
- name: Caching
- name: SDK Caching
id: SDK
uses: actions/cache@v3.2.0
uses: actions/cache@v4.0.0
env:
cache-name: iOS-15.5-SDK
cache-name: iOS-${{ inputs.sdk_version }}-SDK
with:
path: theos/sdks/
key: ${{ env.cache-name }}
- name: Download iOS 15.5 SDK
restore-keys: ${{ env.cache-name }}
- name: Download iOS SDK
if: steps.SDK.outputs.cache-hit != 'true'
run: |
svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk
git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/arichorn/sdks/
cd sdks
git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk
git checkout
mv *.sdk $THEOS/sdks
env:
THEOS: ${{ github.workspace }}/theos
- name: Setup Theos Jailed
uses: actions/checkout@v3.2.0
uses: actions/checkout@v4.1.1
with:
repository: qnblackcat/theos-jailed
ref: master
@ -103,7 +117,7 @@ jobs:
- 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" && echo -e "==> \033[1muYou v${{ inputs.uyou_version }} downloaded! \033[0m"
curl "https://dl.dropboxusercontent.com/s/cz6rfvawt4j4aeq/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" --output "main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" && echo -e "==> \033[1muYou v${{ inputs.uyou_version }} downloaded! \033[0m"
wget "$YOUTUBE_URL" --no-verbose -O main/YouTube.ipa && echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} downloaded! \033[0m"
dpkg-deb -x "main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" main/Tweaks/uYou/
unzip -q main/YouTube.ipa -d main/tmp
@ -123,7 +137,7 @@ jobs:
sed -i '' "12s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
sed -i '' "11s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile
make package FINALPACKAGE=1
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouEnhanced_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m"
echo -e "==> \033[1mBundle ID: ${{ env.BUNDLE_ID }}\033[0m"
@ -136,12 +150,13 @@ jobs:
APP_NAME: ${{ inputs.app_name }}
- name: Upload Artifact
uses: actions/upload-artifact@v3.1.1
if: ${{ inputs.upload_artifact }}
uses: actions/upload-artifact@v4.3.0
env:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
with:
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
name: uYouEnhanced_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
if-no-files-found: error

57
.github/workflows/update-submodules.yml vendored Normal file
View file

@ -0,0 +1,57 @@
name: Update Submodules
on:
workflow_dispatch:
jobs:
update-submodules:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
- name: Set up Git
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
- name: Update submodules
run: |
git submodule update --init --recursive --remote Tweaks/Alderis
git add .
git submodule update --init --recursive --remote Tweaks/PSHeader
git add .
git submodule update --init --recursive --remote Tweaks/Return-YouTube-Dislikes
git add .
git submodule update --init --recursive --remote Tweaks/FLEX
git add .
git submodule update --init --recursive --remote Tweaks/uYouLocalization
git add .
git submodule update --init --recursive --remote Tweaks/YTABConfig
git add .
git submodule update --init --recursive --remote Tweaks/YTUHD
git add .
git submodule update --init --recursive --remote Tweaks/YTVideoOverlay
git add .
git submodule update --init --recursive --remote Tweaks/YouMute
git add .
git submodule update --init --recursive --remote Tweaks/YouPiP
git add .
git submodule update --init --recursive --remote Tweaks/YouQuality
git add .
git submodule update --init --recursive --remote Tweaks/YouTubeHeader
git add .
git submodule update --init --recursive --remote Tweaks/iSponsorBlock
git add .
git commit -m "updated submodules"
git push origin
continue-on-error: true
- name: Check exit code
run: |
exit_code=$?
if [ $exit_code -ne 0 ]; then
echo "Submodule update failed with exit code $exit_code"
exit 1
fi

46
.gitmodules vendored
View file

@ -1,27 +1,31 @@
[submodule "Tweaks/iSponsorBlock"]
path = Tweaks/iSponsorBlock
url = https://github.com/qnblackcat/iSponsorBlock.git
branch = master
[submodule "Tweaks/YTUHD"]
path = Tweaks/YTUHD
url = https://github.com/PoomSmart/YTUHD.git
url = https://github.com/arichorn/YTUHD.git
branch = master
[submodule "Tweaks/YouPiP"]
path = Tweaks/YouPiP
url = https://github.com/PoomSmart/YouPiP.git
url = https://github.com/arichorn/YouPiP.git
branch = main
[submodule "Tweaks/YouMute"]
path = Tweaks/YouMute
url = https://github.com/arichornlover/YouMute.git
branch = main
[submodule "Tweaks/YouQuality"]
path = Tweaks/YouQuality
url = https://github.com/arichorn/YouQuality.git
branch = main
[submodule "Tweaks/YTVideoOverlay"]
path = Tweaks/YTVideoOverlay
url = https://github.com/arichorn/YTVideoOverlay.git
branch = main
[submodule "Tweaks/Return-YouTube-Dislikes"]
path = Tweaks/Return-YouTube-Dislikes
url = https://github.com/PoomSmart/Return-YouTube-Dislikes.git
branch = main
url = https://github.com/arichorn/Return-YouTube-Dislikes.git
branch = uYouEnhanced
[submodule "Tweaks/YouTubeHeader"]
path = Tweaks/YouTubeHeader
url = https://github.com/PoomSmart/YouTubeHeader.git
branch = main
[submodule "Tweaks/Alderis"]
path = Tweaks/Alderis
url = https://github.com/qnblackcat/Alderis.git
branch = master
[submodule "Tweaks/PSHeader"]
path = Tweaks/PSHeader
url = https://github.com/PoomSmart/PSHeader.git
@ -32,9 +36,23 @@
branch = main
[submodule "Tweaks/YTABConfig"]
path = Tweaks/YTABConfig
url = https://github.com/PoomSmart/YTABConfig.git
url = https://github.com/arichorn/YTABConfig.git
branch = main
[submodule "Tweaks/Alderis"]
path = Tweaks/Alderis
url = https://github.com/arichorn/Alderis.git
branch = master
[submodule "Tweaks/iSponsorBlock"]
path = Tweaks/iSponsorBlock
url = https://github.com/arichorn/iSponsorBlock.git
branch = v16.42.3
[submodule "Tweaks/FLEX"]
path = Tweaks/FLEX
url = https://github.com/qnblackcat/FLEX-Classes.git
url = https://github.com/arichorn/FLEX-Classes.git
branch = main
[submodule "Tweaks/uYouLocalization"]
path = Tweaks/uYouLocalization
url = https://github.com/dayanch96/uYouLocalization.git
[submodule "Tweaks/YTNoCommunityPosts"]
path = Tweaks/YTNoCommunityPosts
url = https://github.com/michael-winay/YTNoCommunityPosts.git

View file

@ -1,10 +1,11 @@
TARGET = iphone:clang:15.5:14.0
TARGET = iphone:clang:16.2:14.0
uYouPlus_USE_FLEX = 0
uYouPlus_USE_FISHHOOK = 0
ARCHS = arm64
MODULES = jailed
FINALPACKAGE = 1
CODESIGN_IPA = 0
PACKAGE_VERSION = 18.08.1-2.3~1
PACKAGE_VERSION = 16.42.3-2.1-F21
TWEAK_NAME = uYouPlus
DISPLAY_NAME = YouTube
@ -12,15 +13,15 @@ BUNDLE_ID = com.google.ios.youtube
EXTRA_CFLAGS := $(addprefix -I,$(shell find Tweaks/FLEX -name '*.h' -exec dirname {} \;))
uYouPlus_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YTABConfig.dylib
uYouPlus_FILES = uYouPlus.xm Settings.xm $(shell find Tweaks/FLEX -type f \( -iname \*.c -o -iname \*.m -o -iname \*.mm \))
uYouPlus_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YTABConfig.dylib .theos/obj/YTVideoOverlay.dylib .theos/obj/YouMute.dylib .theos/obj/YouQuality.dylib
uYouPlus_FILES = uYouPlus.xm Settings.xm $(shell find Source -name '*.xm' -o -name '*.x' -o -name '*.m') $(shell find Tweaks/FLEX -type f \( -iname \*.c -o -iname \*.m -o -iname \*.mm \))
uYouPlus_IPA = tmp/Payload/YouTube.app
uYouPlus_FRAMEWORKS = UIKit Security
uYouPlus_CFLAGS = -fobjc-arc -Wno-deprecated-declarations -Wno-unsupported-availability-guard -Wno-unused-but-set-variable -DTWEAK_VERSION=$(PACKAGE_VERSION) $(EXTRA_CFLAGS)
include $(THEOS)/makefiles/common.mk
include $(THEOS_MAKE_PATH)/tweak.mk
SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig
SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality
include $(THEOS_MAKE_PATH)/aggregate.mk
before-package::
@ -30,7 +31,11 @@ before-package::
@cp -R Tweaks/YTUHD/layout/Library/Application\ Support/YTUHD.bundle Resources/
@cp -R Tweaks/Return-YouTube-Dislikes/layout/Library/Application\ Support/RYD.bundle Resources/
@cp -R Tweaks/YTABConfig/layout/Library/Application\ Support/YTABC.bundle Resources/
@cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/
@cp -R Tweaks/YTVideoOverlay/layout/Library/Application\ Support/YTVideoOverlay.bundle Resources/
@cp -R Tweaks/YouMute/layout/Library/Application\ Support/YouMute.bundle Resources/
@cp -R Tweaks/YouQuality/layout/Library/Application\ Support/YouQuality.bundle Resources/
@cp -R Tweaks/iSponsorBlock/layout/var/mobile/Library/Application\ Support/iSponsorBlock Resources/
@cp -R Tweaks/uYouLocalization/layout/Library/Application\ Support/uYouLocalization.bundle Resources/
@cp -R Tweaks/uYou/Library/Application\ Support/uYouBundle.bundle Resources/
@cp -R lang/uYouPlus.bundle Resources/
@echo -e "==> \033[1mChanging the installation path of dylibs...\033[0m"

View file

@ -11,7 +11,7 @@
</p>
<p align="center">
<a href="https://github.com/qnblackcat/uYouPlus/release/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/qnblackcat/uYouPlus?color=brightgreen&label=Latest%20release" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/qnblackcat/uYouPlus?color=brightgreen&label=Latest%20release" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/releases/latest"><img src="https://img.shields.io/github/downloads/qnblackcat/uYouPlus/total?label=Download" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/qnblackcat/uYouPlus?logo=history&logoColor=white&label=Last commit" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/issues"><img src="https://custom-icon-badges.demolab.com/github/issues-raw/qnblackcat/uYouPlus?logo=issue-opened&label=Issues" alt="Badge"></img></a>
@ -146,25 +146,21 @@
<details>
<summary>And many more...!</summary>
5. **YTAutoFullScreen:** autoplay videos at full screen.
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. **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. **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. **YouRememberCaption**: make YouTube remember your video caption setting (if not already).
8. **NoYTPremium**: remove YouTube Premium upsells.
9. **NoYTPremium**: remove YouTube Premium upsells.
9. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
10. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
10. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
11. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
11. **DontEatMyContent**: prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
12. **DontEatMyContent**: prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
13. **YTShortsProgress**: always enable progress bar and scrubbing in YouTube Shorts (iPhone only).
14. **YTABConfig**: allow user to control over YouTube A/B testing flags.
12. **YTABConfig**: allow user to control over YouTube A/B testing flags.
</details>
@ -182,17 +178,17 @@
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- [Open in AltStore (v18.08.1-2.3~1)](https://tinyurl.com/2p8jnjsh) - It will take a while to install because AltStore needs to download the IPA first.
- [Open in AltStore (v18.14.1-3.0)](https://tinyurl.com/yv6wrxjz) - It will take a while to install because AltStore needs to download the IPA first.
- Version info: _(last update: Feb 28)_
- Version info: _(last update: Apr 28)_
<details>
<summary>Expand </summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 18.08.1 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.3~1 | ✖︎ |
| **YouTube** | Google Inc | 18.14.1 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
@ -202,17 +198,15 @@
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.5 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.19 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.5-1 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.19-1 | [✔︎](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.0 | [✔︎](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) |
| **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
| **YTShortsProgress** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTShortsProgress) |
| **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.0 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
</details>

View file

@ -4,7 +4,7 @@
#import "Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
#import "Tweaks/YouTubeHeader/YTUIUtils.h"
#import "Tweaks/YouTubeHeader/YTSettingsPickerViewController.h"
#import "Header.h"
#import "uYouPlus.h"
static BOOL IsEnabled(NSString *key) {
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
@ -12,6 +12,12 @@ static BOOL IsEnabled(NSString *key) {
static int GetSelection(NSString *key) {
return [[NSUserDefaults standardUserDefaults] integerForKey:key];
}
static int colorContrastMode() {
return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcmColor"];
}
static int appVersionSpoofer() {
return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"];
}
static const NSInteger uYouPlusSection = 500;
@interface YTSettingsSectionItemManager (uYouPlus)
@ -52,7 +58,7 @@ extern NSBundle *uYouPlusBundle();
accessibilityIdentifier:nil
detailTextBlock:nil
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/qnblackcat/uYouPlus/releases/latest"]];
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/arichorn/uYouPlusExtra/releases/latest"]];
}];
[sectionItems addObject:version];
@ -98,7 +104,17 @@ extern NSBundle *uYouPlusBundle();
return YES;
}
settingItemId:0],
];
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"STOCK_VOLUME_HUD")
titleDescription:LOC(@"STOCK_VOLUME_HUD_DESC")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"stockVolumeHUD_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"stockVolumeHUD_enabled"];
return YES;
}
settingItemId:0],
];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_PLAYER_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;
@ -108,6 +124,26 @@ extern NSBundle *uYouPlusBundle();
# pragma mark - Video Controls Overlay Options
YTSettingsSectionItem *videoControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Enable Share Button")
titleDescription:LOC(@"Enable the Share Button in video controls overlay.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"enableShareButton_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"enableShareButton_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Enable 'Save To Playlist' Button")
titleDescription:LOC(@"Enable the 'Save To Playlist' Button in video controls overlay.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"enableSaveToButton_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"enableSaveToButton_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_AUTOPLAY_SWITCH")
titleDescription:LOC(@"HIDE_AUTOPLAY_SWITCH_DESC")
accessibilityIdentifier:nil
@ -178,16 +214,6 @@ extern NSBundle *uYouPlusBundle();
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"RED_PROGRESS_BAR")
titleDescription:LOC(@"RED_PROGRESS_BAR_DESC")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"redProgressBar_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"redProgressBar_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HOVER_CARD")
titleDescription:LOC(@"HIDE_HOVER_CARD_DESC")
accessibilityIdentifier:nil
@ -207,17 +233,17 @@ extern NSBundle *uYouPlusBundle();
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DONT_EAT_MY_CONTENT")
titleDescription:LOC(@"DONT_EAT_MY_CONTENT_DESC")
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Hide Dark Overlay Background")
titleDescription:LOC(@"Hide video player's dark overlay background.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"dontEatMyContent_enabled")
switchOn:IsEnabled(@"hideOverlayDarkBackground_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"dontEatMyContent_enabled"];
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideOverlayDarkBackground_enabled"];
return YES;
}
settingItemId:0],
];
settingItemId:0]
];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;
@ -237,6 +263,16 @@ extern NSBundle *uYouPlusBundle();
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Hide Shorts like button")
titleDescription:LOC(@"")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"hideShortsLikeButton_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideShortsLikeButton_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SHORTS_DISLIKE_BUTTON")
titleDescription:LOC(@"HIDE_SHORTS_DISLIKE_BUTTON_DESC")
accessibilityIdentifier:nil
@ -286,7 +322,7 @@ extern NSBundle *uYouPlusBundle();
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON")
titleDescription:LOC(@"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC")
accessibilityIdentifier:nil
@ -296,7 +332,7 @@ extern NSBundle *uYouPlusBundle();
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_RESUME_TO_SHORTS")
titleDescription:LOC(@"DISABLE_RESUME_TO_SHORTS_DESC")
accessibilityIdentifier:nil
@ -305,13 +341,417 @@ extern NSBundle *uYouPlusBundle();
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableResumeToShorts"];
return YES;
}
settingItemId:0],
];
settingItemId:0]
];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"SHORTS_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;
}];
[sectionItems addObject:shortsControlOverlayGroup];
# pragma mark - LowContrastMode
YTSettingsSectionItem *lowContrastModeSection = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Low contrast text color")
accessibilityIdentifier:nil
detailTextBlock:^NSString *() {
switch (colorContrastMode()) {
case 1:
return LOC(@"Red UI");
case 2:
return LOC(@"Blue UI");
case 3:
return LOC(@"Green UI");
case 4:
return LOC(@"Yellow UI");
case 5:
return LOC(@"Orange UI");
case 6:
return LOC(@"Purple UI");
case 7:
return LOC(@"Violet UI");
case 8:
return LOC(@"Pink UI");
case 0:
default:
return LOC(@"Default UI");
}
}
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Default UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Red UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Blue UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Green UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:3 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Yellow UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:4 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Orange UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:5 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Purple UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:6 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Violet UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:7 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"Pink UI") titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:8 forKey:@"lcmColor"];
[settingsViewController reloadData];
return YES;
}]
];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Low contrast text color") pickerSectionTitle:nil rows:rows selectedItemIndex:colorContrastMode() parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;
}];
# pragma mark - VersionSpoofer
YTSettingsSectionItem *versionSpooferSection = [YTSettingsSectionItemClass itemWithTitle:@"Version Spoofer Picker"
accessibilityIdentifier:nil
detailTextBlock:^NSString *() {
switch (appVersionSpoofer()) {
case 1:
return @"v17.38.10";
case 2:
return @"v16.42.3";
case 3:
return @"v16.41.2";
case 4:
return @"v16.40.3";
case 5:
return @"v16.39.6";
case 6:
return @"v16.38.2";
case 7:
return @"v16.37.3";
case 8:
return @"v16.36.4";
case 9:
return @"v16.35.5";
case 10:
return @"v16.35.4";
case 11:
return @"v16.34.7";
case 12:
return @"v16.34.3";
case 13:
return @"v16.33.3";
case 14:
return @"v16.32.6";
case 15:
return @"v16.31.4";
case 16:
return @"v16.30.2";
case 17:
return @"v16.29.4";
case 18:
return @"v16.28.2";
case 19:
return @"v16.27.3";
case 20:
return @"v16.26.6";
case 21:
return @"v16.25.2";
case 22:
return @"v16.24.2";
case 23:
return @"v16.23.3";
case 24:
return @"v16.23.2";
case 25:
return @"v16.22.5";
case 26:
return @"v16.20.5";
case 27:
return @"v16.19.6";
case 28:
return @"v16.18.5";
case 29:
return @"v16.17.4";
case 30:
return @"v16.16.4";
case 31:
return @"v16.16.3";
case 32:
return @"v16.15.4";
case 33:
return @"v16.14.2";
case 34:
return @"v16.13.1";
case 35:
return @"v16.12.3";
case 36:
return @"v16.11.3";
case 37:
return @"v16.10.3";
case 38:
return @"v16.09.3";
case 39:
return @"v16.09.2";
case 40:
return @"v16.08.2";
case 41:
return @"v16.05.9";
case 42:
return @"v16.05.8";
case 43:
return @"v16.05.7";
case 0:
default:
return @"latest version";
}
}
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"latest version" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.38.10" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.42.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.41.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:3 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.40.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:4 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.39.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:5 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.38.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:6 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.37.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:7 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.36.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:8 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.35.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:9 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.35.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:10 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.34.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:11 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.34.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:12 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.33.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:13 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.32.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:14 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.31.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:15 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.30.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:16 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.29.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:17 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.28.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:18 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.27.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:19 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.26.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:20 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.25.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:21 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.24.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:22 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.23.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:23 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.23.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:24 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.22.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:25 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.20.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:26 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.19.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:27 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.18.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:28 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.17.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:29 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.16.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:30 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.16.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:31 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.15.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:32 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.14.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:33 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.13.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:34 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.12.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:35 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.11.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:36 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.10.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:37 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.09.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:38 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.09.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:39 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.08.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:40 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.05.9" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:41 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.05.8" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:42 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v16.05.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:43 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}]
];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Version Spoofer Picker") pickerSectionTitle:nil rows:rows selectedItemIndex:appVersionSpoofer() parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;
}];
# pragma mark - Theme
YTSettingsSectionItem *themeGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"THEME_OPTIONS")
@ -320,8 +760,6 @@ extern NSBundle *uYouPlusBundle();
switch (GetSelection(@"appTheme")) {
case 1:
return LOC(@"OLED_DARK_THEME_2");
case 2:
return LOC(@"OLD_DARK_THEME");
case 0:
default:
return LOC(@"DEFAULT_THEME");
@ -339,11 +777,6 @@ extern NSBundle *uYouPlusBundle();
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"OLED_KEYBOARD")
titleDescription:LOC(@"OLED_KEYBOARD_DESC")
@ -353,8 +786,17 @@ extern NSBundle *uYouPlusBundle();
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"];
return YES;
}
settingItemId:0]
];
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Low Contrast Mode")
titleDescription:LOC(@"this will Low Contrast texts and buttons just like how the old YouTube Interface did. App restart is required.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"lowContrastMode_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"lowContrastMode_enabled"];
return YES;
}
settingItemId:0], lowContrastModeSection];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"THEME_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:GetSelection(@"appTheme") parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;
@ -364,6 +806,16 @@ extern NSBundle *uYouPlusBundle();
# pragma mark - Miscellaneous
YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"App Patcher - v16.42.3 Exclusive")
titleDescription:LOC(@"Enabling this Option will change the APIs, Functionality and it will also patch the app into removing the error 400 message for a little longer which is really useful.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"ytAppPatcher_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytAppPatcher_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"CAST_CONFIRM")
titleDescription:LOC(@"CAST_CONFIRM_DESC")
accessibilityIdentifier:nil
@ -384,22 +836,12 @@ extern NSBundle *uYouPlusBundle();
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX")
titleDescription:LOC(@"ENABLE_FLEX_DESC")
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Hide YouTube Logo")
titleDescription:LOC(@"Toggle this to hide the YouTube Logo in the YouTube App.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"flex_enabled")
switchOn:IsEnabled(@"hideYouTubeLogo_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"flex_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_YT_STARTUP_ANIMATION")
titleDescription:LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"ytStartupAnimation_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytStartupAnimation_enabled"];
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideYouTubeLogo_enabled"];
return YES;
}
settingItemId:0],
@ -413,7 +855,7 @@ extern NSBundle *uYouPlusBundle();
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"IPHONE_LAYOUT")
titleDescription:LOC(@"IPHONE_LAYOUT_DESC")
accessibilityIdentifier:nil
@ -434,6 +876,26 @@ extern NSBundle *uYouPlusBundle();
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Hide iSponsorBlock button in the Navigation bar")
titleDescription:LOC(@"")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"hideSponsorBlockButton_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideSponsorBlockButton_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Disable Wifi Related Settings ")
titleDescription:LOC(@"This will disable the following sections which will be Autoplay, Purchases and memberships, Notifications, Connected apps, Manage all history, Privacy & Live chat.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"disableWifiRelatedSettings_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableWifiRelatedSettings_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_RE_EXPLORE")
titleDescription:LOC(@"YT_RE_EXPLORE_DESC")
accessibilityIdentifier:nil
@ -443,8 +905,36 @@ extern NSBundle *uYouPlusBundle();
return YES;
}
settingItemId:0],
];
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Enable YTSpeed")
titleDescription:LOC(@"Enable YTSpeed to have more Playback Speed Options. App restart is required.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"ytSpeed_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytSpeed_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX")
titleDescription:LOC(@"ENABLE_FLEX_DESC")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"flex_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"flex_enabled"];
return YES;
}
settingItemId:0],
[YTSettingsSectionItemClass switchItemWithTitle:LOC(@"Enable App Version Spoofer")
titleDescription:LOC(@"Enable this to use the Version Spoofer and select your perferred version below. App restart is required.")
accessibilityIdentifier:nil
switchOn:IsEnabled(@"enableVersionSpoofer_enabled")
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"enableVersionSpoofer_enabled"];
return YES;
}
settingItemId:0], versionSpooferSection];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"MISCELLANEOUS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
[settingsViewController pushViewController:picker];
return YES;

2651
Source/LowContrastMode.xm Normal file

File diff suppressed because it is too large Load diff

547
Source/VersionSpoofer.xm Normal file
View file

@ -0,0 +1,547 @@
#import "../uYouPlus.h"
//
static BOOL IsEnabled(NSString *key) {
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
}
static int appVersionSpoofer() {
return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"];
}
static BOOL version0() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 0;
}
static BOOL version1() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 1;
}
static BOOL version2() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 2;
}
static BOOL version3() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 3;
}
static BOOL version4() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 4;
}
static BOOL version5() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 5;
}
static BOOL version6() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 6;
}
static BOOL version7() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 7;
}
static BOOL version8() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 8;
}
static BOOL version9() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 9;
}
static BOOL version10() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 10;
}
static BOOL version11() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 11;
}
static BOOL version12() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 12;
}
static BOOL version13() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 13;
}
static BOOL version14() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 14;
}
static BOOL version15() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 15;
}
static BOOL version16() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 16;
}
static BOOL version17() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 17;
}
static BOOL version18() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 18;
}
static BOOL version19() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 19;
}
static BOOL version20() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 20;
}
static BOOL version21() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 21;
}
static BOOL version22() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 22;
}
static BOOL version23() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 23;
}
static BOOL version24() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 24;
}
static BOOL version25() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 25;
}
static BOOL version26() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 26;
}
static BOOL version27() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 27;
}
static BOOL version28() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 28;
}
static BOOL version29() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 29;
}
static BOOL version30() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 30;
}
static BOOL version31() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 31;
}
static BOOL version32() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 32;
}
static BOOL version33() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 33;
}
static BOOL version34() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 34;
}
static BOOL version35() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 35;
}
static BOOL version36() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 36;
}
static BOOL version37() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 37;
}
static BOOL version38() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 38;
}
static BOOL version39() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 39;
}
static BOOL version40() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 40;
}
static BOOL version41() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 41;
}
static BOOL version42() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 42;
}
static BOOL version43() {
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 43;
}
%group gVersion0
%hook YTVersionUtils
+ (NSString *)appVersion {
NSURL *versionURL = [NSURL URLWithString:@"https://raw.githubusercontent.com/arichorn/YTAppVersionSpoofer-WIP/main/version.txt"];
NSString *latestVersion = [NSString stringWithContentsOfURL:versionURL encoding:NSUTF8StringEncoding error:nil];
return latestVersion ?: @"18.33.2";
}
%end
%end
%group gVersion1
%hook YTVersionUtils // 1
+ (NSString *)appVersion { return @"17.38.10"; }
%end
%end
%group gVersion2
%hook YTVersionUtils // 2
+ (NSString *)appVersion { return @"16.42.3"; }
%end
%end
%group gVersion3
%hook YTVersionUtils // 3
+ (NSString *)appVersion { return @"16.41.2"; }
%end
%end
%group gVersion4
%hook YTVersionUtils // 4
+ (NSString *)appVersion { return @"16.40.3"; }
%end
%end
%group gVersion5
%hook YTVersionUtils // 5
+ (NSString *)appVersion { return @"16.39.6"; }
%end
%end
%group gVersion6
%hook YTVersionUtils // 6
+ (NSString *)appVersion { return @"16.38.2"; }
%end
%end
%group gVersion7
%hook YTVersionUtils // 7
+ (NSString *)appVersion { return @"16.37.3"; }
%end
%end
%group gVersion8
%hook YTVersionUtils // 8
+ (NSString *)appVersion { return @"16.36.4"; }
%end
%end
%group gVersion9
%hook YTVersionUtils // 9
+ (NSString *)appVersion { return @"16.35.5"; }
%end
%end
%group gVersion10
%hook YTVersionUtils // 10
+ (NSString *)appVersion { return @"16.35.4"; }
%end
%end
%group gVersion11
%hook YTVersionUtils // 11
+ (NSString *)appVersion { return @"16.34.7"; }
%end
%end
%group gVersion12
%hook YTVersionUtils // 12
+ (NSString *)appVersion { return @"16.34.3"; }
%end
%end
%group gVersion13
%hook YTVersionUtils // 13
+ (NSString *)appVersion { return @"16.33.3"; }
%end
%end
%group gVersion14
%hook YTVersionUtils // 14
+ (NSString *)appVersion { return @"16.32.6"; }
%end
%end
%group gVersion15
%hook YTVersionUtils // 15
+ (NSString *)appVersion { return @"16.31.4"; }
%end
%end
%group gVersion16
%hook YTVersionUtils // 16
+ (NSString *)appVersion { return @"16.30.2"; }
%end
%end
%group gVersion17
%hook YTVersionUtils // 17
+ (NSString *)appVersion { return @"16.29.4"; }
%end
%end
%group gVersion18
%hook YTVersionUtils // 18
+ (NSString *)appVersion { return @"16.28.2"; }
%end
%end
%group gVersion19
%hook YTVersionUtils // 19
+ (NSString *)appVersion { return @"16.27.3"; }
%end
%end
%group gVersion20
%hook YTVersionUtils // 20
+ (NSString *)appVersion { return @"16.26.6"; }
%end
%end
%group gVersion21
%hook YTVersionUtils // 21
+ (NSString *)appVersion { return @"16.25.2"; }
%end
%end
%group gVersion22
%hook YTVersionUtils // 22
+ (NSString *)appVersion { return @"16.24.2"; }
%end
%end
%group gVersion23
%hook YTVersionUtils // 23
+ (NSString *)appVersion { return @"16.23.3"; }
%end
%end
%group gVersion24
%hook YTVersionUtils // 24
+ (NSString *)appVersion { return @"16.23.2"; }
%end
%end
%group gVersion25
%hook YTVersionUtils // 25
+ (NSString *)appVersion { return @"16.22.5"; }
%end
%end
%group gVersion26
%hook YTVersionUtils // 26
+ (NSString *)appVersion { return @"16.20.5"; }
%end
%end
%group gVersion27
%hook YTVersionUtils // 27
+ (NSString *)appVersion { return @"16.19.6"; }
%end
%end
%group gVersion28
%hook YTVersionUtils // 28
+ (NSString *)appVersion { return @"16.18.5"; }
%end
%end
%group gVersion29
%hook YTVersionUtils // 29
+ (NSString *)appVersion { return @"16.17.4"; }
%end
%end
%group gVersion30
%hook YTVersionUtils // 30
+ (NSString *)appVersion { return @"16.16.4"; }
%end
%end
%group gVersion31
%hook YTVersionUtils // 31
+ (NSString *)appVersion { return @"16.16.3"; }
%end
%end
%group gVersion32
%hook YTVersionUtils // 32
+ (NSString *)appVersion { return @"16.15.4"; }
%end
%end
%group gVersion33
%hook YTVersionUtils // 33
+ (NSString *)appVersion { return @"16.14.2"; }
%end
%end
%group gVersion34
%hook YTVersionUtils // 34
+ (NSString *)appVersion { return @"16.13.1"; }
%end
%end
%group gVersion35
%hook YTVersionUtils // 35
+ (NSString *)appVersion { return @"16.12.3"; }
%end
%end
%group gVersion36
%hook YTVersionUtils // 36
+ (NSString *)appVersion { return @"16.11.3"; }
%end
%end
%group gVersion37
%hook YTVersionUtils // 37
+ (NSString *)appVersion { return @"16.10.3"; }
%end
%end
%group gVersion38
%hook YTVersionUtils // 38
+ (NSString *)appVersion { return @"16.09.3"; }
%end
%end
%group gVersion39
%hook YTVersionUtils // 39
+ (NSString *)appVersion { return @"16.09.2"; }
%end
%end
%group gVersion40
%hook YTVersionUtils // 40
+ (NSString *)appVersion { return @"16.08.2"; }
%end
%end
%group gVersion41
%hook YTVersionUtils // 41
+ (NSString *)appVersion { return @"16.05.9"; }
%end
%end
%group gVersion42
%hook YTVersionUtils // 42
+ (NSString *)appVersion { return @"16.05.8"; }
%end
%end
%group gVersion43
%hook YTVersionUtils // 43
+ (NSString *)appVersion { return @"16.05.7"; }
%end
%end
# pragma mark - ctor
%ctor {
%init;
if (version0()) { // 0
%init(gVersion0);
}
if (version1()) { // 1
%init(gVersion1);
}
if (version2()) { // 2
%init(gVersion2);
}
if (version3()) { // 3
%init(gVersion3);
}
if (version4()) { // 4
%init(gVersion4);
}
if (version5()) { // 5
%init(gVersion5);
}
if (version6()) { // 6
%init(gVersion6);
}
if (version7()) { // 7
%init(gVersion7);
}
if (version8()) { // 8
%init(gVersion8);
}
if (version9()) { // 9
%init(gVersion9);
}
if (version10()) { // 10
%init(gVersion10);
}
if (version11()) { // 11
%init(gVersion11);
}
if (version12()) { // 12
%init(gVersion12);
}
if (version13()) { // 13
%init(gVersion13);
}
if (version14()) { // 14
%init(gVersion14);
}
if (version15()) { // 15
%init(gVersion15);
}
if (version16()) { // 16
%init(gVersion16);
}
if (version17()) { // 17
%init(gVersion17);
}
if (version18()) { // 18
%init(gVersion18);
}
if (version19()) { // 19
%init(gVersion19);
}
if (version20()) { // 20
%init(gVersion20);
}
if (version21()) { // 21
%init(gVersion21);
}
if (version22()) { // 22
%init(gVersion22);
}
if (version23()) { // 23
%init(gVersion23);
}
if (version24()) { // 24
%init(gVersion24);
}
if (version25()) { // 25
%init(gVersion25);
}
if (version26()) { // 26
%init(gVersion26);
}
if (version27()) { // 27
%init(gVersion27);
}
if (version28()) { // 28
%init(gVersion28);
}
if (version29()) { // 29
%init(gVersion29);
}
if (version30()) { // 30
%init(gVersion30);
}
if (version31()) { // 31
%init(gVersion31);
}
if (version32()) { // 32
%init(gVersion32);
}
if (version33()) { // 33
%init(gVersion33);
}
if (version34()) { // 34
%init(gVersion34);
}
if (version35()) { // 35
%init(gVersion35);
}
if (version36()) { // 36
%init(gVersion36);
}
if (version37()) { // 37
%init(gVersion37);
}
if (version38()) { // 38
%init(gVersion38);
}
if (version39()) { // 39
%init(gVersion39);
}
if (version40()) { // 40
%init(gVersion40);
}
if (version41()) { // 41
%init(gVersion41);
}
if (version42()) { // 42
%init(gVersion42);
}
if (version43()) { // 43
%init(gVersion43);
}
}

@ -1 +1 @@
Subproject commit 7992b3b57e86beca069905df121dc57542ae5b6f
Subproject commit 1aa78d34aef25bc8de518c0c833b54d92a8fa467

@ -1 +1 @@
Subproject commit 20830170bfe50659de36eace461fd95ebdb16cba
Subproject commit 897c45df73ebde33f4f35091848f8c0976a1428c

@ -1 +1 @@
Subproject commit ac9324f4410096674eb9fa906089fe95f115c8d9
Subproject commit 591de492eae66ecb649d9a023d39f7508a253791

@ -1 +1 @@
Subproject commit f10b1bbab8a21ae247593acf7798a673c6e5f963
Subproject commit d2aec88d3e8c300983592d4e54f55eccad12c50d

@ -1 +1 @@
Subproject commit 08bfe5dc9092ead0cfce0691ae45b2a56747c12c
Subproject commit 03be2de7f7380a836280054779554b0180446161

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

@ -1 +1 @@
Subproject commit ac6829e27c9871b7948afbe903281b11ab6dfa98
Subproject commit 31e218b2725bdcbc1e85d52e87f9167080708914

1
Tweaks/YTVideoOverlay Submodule

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

1
Tweaks/YouMute Submodule

@ -0,0 +1 @@
Subproject commit 7f36c985716839fa9398186cd33ef7e638ed1d5c

@ -1 +1 @@
Subproject commit eddc0ba7f3227935fc8a1330f05fe740023ea8df
Subproject commit a310cefd7832194757e62f926d097d52421c0bc1

1
Tweaks/YouQuality Submodule

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

@ -1 +1 @@
Subproject commit 451985d9dbb18a80edb6f3be256f26ee776deb3b
Subproject commit a64276723da57312c6a8e24bf73060810f64604a

@ -1 +1 @@
Subproject commit eb19fd1089f4a940cf1e3df48c6f064ea9a65cf6
Subproject commit 7b79fe83141fbd3b19ca096fe5fd552db65b64c4

@ -0,0 +1 @@
Subproject commit 3e14f0280c3a183dbcfc3b7903be0522cfb1b6c6

View file

@ -4,17 +4,17 @@
cd "$(dirname "$0")"
# Check uYou
if [ ! -f Tweaks/uYou/com.miro.uyou_2.3~1_iphoneos-arm.deb ]
if [ ! -f Tweaks/uYou/com.miro.uyou_2.1_iphoneos-arm.deb ]
then
echo -e "==> \033[1muYou v2.3~1 is not found. Downloading uYou (v2.3~1)...\033[0m"
(set -x ; curl https://miro92.com/repo/debs/com.miro.uyou_2.3~1_iphoneos-arm.deb --output Tweaks/uYou/com.miro.uyou_2.3~1_iphoneos-arm.deb)
echo -e "==> \033[1muYou v2.1 is not found. Downloading uYou (v2.1)...\033[0m"
(set -x ; curl https://miro92.com/repo/debs/com.miro.uyou_2.1_iphoneos-arm.deb --output Tweaks/uYou/com.miro.uyou_2.1_iphoneos-arm.deb)
else
echo -e "==> \033[1mFounded uYou (v2.3~1)!\033[0m"
echo -e "==> \033[1mFounded uYou (v2.1)!\033[0m"
fi
# Extract uYou
echo -e "==> \033[1mExtracting uYou...\033[0m"
if (cd Tweaks/uYou && tar -xf com.miro.uyou_2.3~1_iphoneos-arm.deb && tar -xf data.tar.*)
if (cd Tweaks/uYou && tar -xf com.miro.uyou_2.1_iphoneos-arm.deb && tar -xf data.tar.*)
then
echo -e "\033[1m> Extracted uYou!\033[0m"
else
@ -50,6 +50,6 @@ else
fi
# Clean up
tput setaf 1 && echo -e "==> \033[1mCleaning up...\033[0m"
find Tweaks/uYou -mindepth 1 ! -name "com.miro.uyou_2.3~1_iphoneos-arm.deb" ! -name ".gitkeep" -exec rm -rf {} \; 2>/dev/null
find Tweaks/uYou -mindepth 1 ! -name "com.miro.uyou_2.1_iphoneos-arm.deb" ! -name ".gitkeep" -exec rm -rf {} \; 2>/dev/null
rm -rf tmp/ Resources .theos/_/Payload
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa)\033[0m"

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "كامل الشاشة تلقائياً (أداة YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "تشغيل الفيديوهات تلقائياً بكامل الشاشة.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "منع الارتباط بالفصول";
"SNAP_TO_CHAPTER_DESC" = "تعطيل الربط التلقائي لبداية الفصول عند تحريك المؤشر في شريط التقدم. تتطلب إعادة تشغيل التطبيق.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "السماح بالمشغل المصغّر لكل فيديوهات يوتيوب";
"YT_MINIPLAYER_DESC" = "عند تصغير فيديوهات الأطفال مثلاً (قبل إغلاق المقطع).";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "أزرار التحكم على الطبقة فوق الفيديو";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "إخفاء عبارة 'شراء سوبر شكراً' في المقاطع القصيرة";
"HIDE_SUPER_THANKS_DESC" = "إخفاء لافتة 'Buy Super Thanks' من مقاطع Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Přes celou obrazovku (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Automaticky spouští videa přes celou obrazovku.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Povolit Minipřehrávač pro všechna videa";
"YT_MINIPLAYER_DESC" = "Například u videa pro děti";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Automatisches Vollbild (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Automatisch Videos im Vollbild starten.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Zu Abschnitten springen deaktivieren";
"SNAP_TO_CHAPTER_DESC" = "Deaktiviere das automatische springen zu Abschnitten Disable bei der Suche in Videos. App-Neustart erforderlich.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren";
"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Optionen";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "'Buy Super Thanks'-Banner ausblenden";
"HIDE_SUPER_THANKS_DESC" = "Ausblenden des "Buy Super Thanks'"-Banners in bestimmten Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Αυτόματη αναπαραγωγή σε πλήρη οθόνη (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Αυτόματη αναπαραγωγή των βίντεο σε πλήρη οθόνη.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Ενεργοποιήστε το miniplayer για όλα τα βίντεο του YouTube";
"YT_MINIPLAYER_DESC" = "Τα παιδικά βίντεο για παράδειγμα.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -5,9 +5,12 @@
// Video player options
"VIDEO_PLAYER_OPTIONS" = "Video Player Options";
"AUTO_FULLSCREEN" = "Auto Full Screen (YTAutoFullScreen)";
"AUTO_FULLSCREEN" = "Auto full screen (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking through videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Enable the mini player for all YouTube videos";
"YT_MINIPLAYER_DESC" = "Kid videos for example.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -32,7 +38,7 @@
"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos.";
"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark";
"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark";
"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
@ -50,7 +56,7 @@
"RED_PROGRESS_BAR" = "Red progress bar";
"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required.";
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 video content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required.";
// Shorts controls overlay options
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Pantalla completa automática (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Reproducir vídeos en pantalla completa automáticamente.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Desactivar la doble pulsación para buscar";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Deshabilitar ajuste a capítulo";
"SNAP_TO_CHAPTER_DESC" = "Desactivar el ajuste automático a capítulo al buscar en vídeos. Es necesario reiniciar la aplicación.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Activar el minirreproductor para todos los vídeos de YouTube";
"YT_MINIPLAYER_DESC" = "Vídeos infantiles por ejemplo.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opciones de superposición de controles de vídeo";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Ocultar botones de uYou";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Ocultar los botones de descarga de uYou en Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Ocultar banner 'Comprar Supergracias";
"HIDE_SUPER_THANKS_DESC" = "Ocultar el banner 'Comprar Supergracias' en Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Plein écran automatique (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Lecture automatique des vidéos en plein écran";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Désactiver l'alignement sur les chapitres";
"SNAP_TO_CHAPTER_DESC" = "Désactiver l'alignement automatique sur les chapitres lors de la recherche dans les vidéos. Un redémarrage de l'application est nécessaire.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Activer le mini-lecteur pour toutes les vidéos YouTube";
"YT_MINIPLAYER_DESC" = "Vidéos pour enfants par exemple";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Options de superposition des contrôles vidéo";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Masquer la bannière 'Acheter des Super Thanks'";
"HIDE_SUPER_THANKS_DESC" = "Masquer la bannière 'Acheter des Super Thanks' dans les Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "מסך מלא אוטומטי (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "נגן סרטונים במסך מלא אוטומטית.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "אפשר את הנגן הקטן עבור כל הסרטונים ב-YouTube";
"YT_MINIPLAYER_DESC" = "סרטוני ילדים לדוגמה.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Automatikus teljes képernyő (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Videók automatikus lejátszása teljes képernyőn.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Engedélyezze a Minilejátszót az összes YouTube-videóhoz";
"YT_MINIPLAYER_DESC" = "Például gyermekvideók.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Auto Schermo Intero (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Riproduci automaticamente video a tutto schermo.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disabilita snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disattiva lo snap to chapter durante la ricerca nei video. È richiesto il riavvio dell'app.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Abilita il Miniplayer su tutti i video di YouTube";
"YT_MINIPLAYER_DESC" = "Video YouTube Kids per esempio.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opzioni Sovrimpressione (Overlay) Video";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Nascondi il uYou's bottone download Shorts";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Nascondi il bottone uYou's download dagli Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Nascondi 'Buy Super Thanks'";
"HIDE_SUPER_THANKS_DESC" = "Nascondi il banner 'Buy Super Thanks' dagli Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "自動でフルスクリーンにする (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "動画を自動でフルスクリーンにします。";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "チャプターに合わせてのスクラブを無効にする";
"SNAP_TO_CHAPTER_DESC" = "動画を飛ばす際にチャプターに沿ってスクラブされるのを無効化します。";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効にする";
"YT_MINIPLAYER_DESC" = "例:子ども向けの動画など";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "動画コントロールのオーバーレイ設定";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYouボタンを非表示";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "ショートのuYouボタンを非表示にします。";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Super Thanks を購入のバナーを非表示";
"HIDE_SUPER_THANKS_DESC" = "ショート動画のSuper Thanks を購入のバナーを非表示にします。";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "자동 전체화면 재생 (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "자동으로 전체화면에서 재생합니다.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "두번 탭하여 탐색 사용하지 않음";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "챕터 스냅 사용하지 않음";
"SNAP_TO_CHAPTER_DESC" = "비디오 탐색시 챕터표시에 스냅되는 기능을 끕니다. 앱을 다시 시작해야 합니다.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화";
"YT_MINIPLAYER_DESC" = "유튜브 키즈의 영상 같은 경우.";
"STOCK_VOLUME_HUD" = "iOS 기본 음량 표시기 사용";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "비디오 재생 오버레이 설정";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYou 버튼 숨기기";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Shorts에서 uYou의 다운로드 버튼을 숨깁니다.";
"HIDE_SUBCRIPTIONS" = "구독 버튼 숨기기";
"HIDE_SUBCRIPTIONS_DESC" = "일시 정지 할 때 보이는 구독 버튼을 숨깁니다.";
"HIDE_SUPER_THANKS" = "'Super Thanks 구매' 배너 숨기기";
"HIDE_SUPER_THANKS_DESC" = "Shorts 영상에서 'Super Thanks 구매' 배너를 숨깁니다.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Auto Volledig Scherm (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Automatisch volledig scherm wanneer je een video aan klikt.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Schakel de Mini Speler in voor alle video's";
"YT_MINIPLAYER_DESC" = "Video's voor kinderen bijvoorbeeld.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Auto pełny ekran (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Automaczycznie otwórz filmy w pełnym ekranie.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Włącz miniodtwarzach dla wszystkich filmów";
"YT_MINIPLAYER_DESC" = "Np. filmów dla dzieci.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Tela cheia automática (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Reproduz videos em tela cheia automaticamente.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Desativar toque duplo para buscar";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Desativar ajuste ao capítulo";
"SNAP_TO_CHAPTER_DESC" = "Desativa o ajuste automático ao capítulo ao buscar no vídeo. A reinicialização do app é necessária.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Ative o Miniplayer para todos os vídeos do YouTube";
"YT_MINIPLAYER_DESC" = "Vídeos infantis, por exemplo.";
"STOCK_VOLUME_HUD" = "Usar o HUD de volume padrão do iOS";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opções de Sobreposição de Controles de Vídeo";
@ -71,8 +77,11 @@
"HIDE_SHORTS_SHARE_BUTTON" = "Ocultar o botão de compartilhamento do Shorts";
"HIDE_SHORTS_SHARE_BUTTON_DESC" = "";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's download buttons in Shorts";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Ocultar os botões do uYou";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Oculta os botões de download do uYou nos Shorts";
"HIDE_SUBCRIPTIONS" = "Ocultar o botão Inscrições";
"HIDE_SUBCRIPTIONS_DESC" = "Oculta o botão Inscrições que aparece quando pausado.";
"HIDE_SUPER_THANKS" = "Ocultar o banner 'Comprar Valeu Demais'";
"HIDE_SUPER_THANKS_DESC" = "Oculta o banner 'Comprar Valeu Demais' nos Shorts.";
@ -109,11 +118,11 @@
"DISABLE_HINTS" = "Desativar dicas";
"DISABLE_HINTS_DESC" = "Desativa as dicas de recursos do YouTube que geralmente são exibidas quando o aplicativo é instalado recentemente.";
"ENABLE_FLEX" = "Enable FLEX";
"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing.";
"ENABLE_FLEX" = "Ativar FLEX";
"ENABLE_FLEX_DESC" = "Ativa o FLEX para depuração (não recomendado). Deixe isso desligado, a menos que você saiba o que está fazendo.";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"ENABLE_YT_STARTUP_ANIMATION" = "Ativar animação de inicialização do YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Ative esta opção somente quando você não conseguir fazer login com sua conta do Google e o aplicativo foi instalado via TrollStore. Se você conseguir fazer login normalmente, mantenha-o desativado. A reinicialização do app é necessária.";
@ -127,5 +136,5 @@
"YT_RE_EXPLORE" = "Substituir a guia Shorts pela guia Explorar (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "A reinicialização do app é necessária.";
"IPHONE_LAYOUT" = "iPhone Layout";
"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required.";
"IPHONE_LAYOUT" = "Layout do iPhone";
"IPHONE_LAYOUT_DESC" = "Alterne para usar o Layout do iPhone. A reinicialização do app é necessária.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Auto Ecran Întreg (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Redare automată video pe ecran complet.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking videos. App restart is required.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Activare Miniplayer pentru toate videoclipurile YouTube";
"YT_MINIPLAYER_DESC" = "De exemplu, videoclipurile destinate pentri copii";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's download buttons in Shorts";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Полноэкранный режим (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Автоматически открывает ролики в полноэкранном режиме.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Отключить привязку к эпизодам";
"SNAP_TO_CHAPTER_DESC" = "Отключает автоматическую привязку к эпизодам при перемотке видео. Требуется перезапуск приложения.";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "Мини-плеер для всех видео";
"YT_MINIPLAYER_DESC" = "Принудительно активирует мини-плеер для всех видео, включая видео, предназначенное для детей.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Параметры элементов оверлея видеоплеера";
@ -74,6 +80,9 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Скрыть кнопки uYou";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Скрывает кнопки uYou для скачивания видеороликов Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Скрыть баннер 'Купить суперспасибо'";
"HIDE_SUPER_THANKS_DESC" = "Скрывает баннер 'Купить суперспасибо' в Shorts.";

View file

@ -20,9 +20,12 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
// Video player options
"VIDEO_PLAYER_OPTIONS" = "Video Player Options";
"AUTO_FULLSCREEN" = "Auto Full Screen (YTAutoFullScreen)";
"AUTO_FULLSCREEN" = "Auto full screen (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking through videos. App restart is required.";
@ -32,6 +35,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"YT_MINIPLAYER" = "Enable the mini player for all YouTube videos";
"YT_MINIPLAYER_DESC" = "Kid videos for example.";
"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
@ -47,7 +53,7 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos.";
"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark";
"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark";
"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
@ -65,7 +71,7 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"RED_PROGRESS_BAR" = "Red progress bar";
"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required.";
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 video content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required.";
// Shorts controls overlay options
@ -89,6 +95,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button";
"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";

View file

@ -1,24 +1,27 @@
// Settings
"VERSION" = "uYouPlus'ın sürümü: %@";
"VERSION_CHECK" = "Güncellemeyi kontrol etmek için dokunun!";
"VERSION_CHECK" = "Güncellemeyi kontrol etmek için dokun!";
// Video player options
"VIDEO_PLAYER_OPTIONS" = "Video Player Options";
"VIDEO_PLAYER_OPTIONS" = "Video Oynatıcı Seçenekleri";
"AUTO_FULLSCREEN" = "Otomatik Tam Ekran (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Videoları otomatik olarak tam ekranda oynatır.";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking videos. App restart is required.";
"SNAP_TO_CHAPTER" = "Bölüme geçişi devre dışı bırak";
"SNAP_TO_CHAPTER_DESC" = "Video ararken otomatik olarak bölüme geçmeyi devre dışı bırakır. Uygulamanın yeniden başlatılması gerekir.";
"PINCH_TO_ZOOM" = "Disable pinch to zoom";
"PINCH_TO_ZOOM_DESC" = "App restart is required.";
"PINCH_TO_ZOOM" = "Yakınlaştırmak için sıkıştırmayı devre dışı bırak";
"PINCH_TO_ZOOM_DESC" = "Uygulamanın yeniden başlatılması gerekir.";
"YT_MINIPLAYER" = "Tüm YouTube videoları için Mini Oynatıcıyı etkinleştirin";
"YT_MINIPLAYER" = "Tüm YouTube videoları için Mini Oynatıcıyı etkinleştir";
"YT_MINIPLAYER_DESC" = "Örneğin çocuk videoları.";
"STOCK_VOLUME_HUD" = "Mevcut iOS baş yukarı göstergesi(HUD) alanını kullan";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Kontrolleri Kaplaması Seçenekleri";
"HIDE_AUTOPLAY_SWITCH" = "Otomatik oynatma anahtarını gizle";
"HIDE_AUTOPLAY_SWITCH_DESC" = "Otomatik oynat anahtarını video kontrolleri katmanından gizler.";
@ -32,94 +35,97 @@
"HIDE_PAID_PROMOTION_CARDS" = "Ücretli Promosyon afişini gizle";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Bazı videolarda 'Ücretli Promosyonları İçerir' afişini gizler.";
"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark";
"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required.";
"HIDE_CHANNEL_WATERMARK" = "Kanal Filigranını Gizle";
"HIDE_CHANNEL_WATERMARK_DESC" = "Video kontrolleri yer paylaşımında kanalın filigranını gizle. Uygulamanın yeniden başlatılması gerekir.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Önceki ve Sonraki düğmelerini gizle";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Video kontrolleri katmanında Önceki ve Sonraki düğmelerini gizler.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Önceki ve Sonraki Düğmelerini Değiştir";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Önceki ve Sonraki Düğmelerini Hızlı ileri ve Geri Sar düğmeleriyle değiştirin. Uygulamanın yeniden başlatılması gerekir.";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Önceki ve Sonraki Düğmelerini Hızlı ileri ve Geri Sar düğmeleriyle değiştir. Uygulamanın yeniden başlatılması gerekir.";
"HIDE_HOVER_CARD" = "Bitiş ekranlarının üzerine gelen kartları gizle.(YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Videoların sonundaki içerik oluşturucu bitiş ekranlarını (küçük resimler) gizler.";
"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode";
"HIDE_RIGHT_PANEL_DESC" = "App restart is required.";
"HIDE_RIGHT_PANEL" = "Tam ekran modunda sağ paneli gizle";
"HIDE_RIGHT_PANEL_DESC" = "Uygulamanın yeniden başlatılması gerekir.";
"RED_PROGRESS_BAR" = "Red progress bar";
"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required.";
"RED_PROGRESS_BAR" = "Kırmızı ilerleme çubuğu";
"RED_PROGRESS_BAR_DESC" = "Kırmızı ilerleme çubuğunu geri getirir. Uygulamanın yeniden başlatılması gerekir.";
"DONT_EAT_MY_CONTENT" = "2:1 Video İçeriğinde Çentik/Ada Önleme (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Çentik/Dinamik Ada'nın YouTube'daki 2:1 video içeriğini yemesini önleyin. Uygulamanın yeniden başlatılması gerekir.";
"DONT_EAT_MY_CONTENT_DESC" = "Çentik/Dinamik Ada'nın YouTube'daki 2:1 video içeriğini yemesini önle. Uygulamanın yeniden başlatılması gerekir.";
// Shorts controls overlay options
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options";
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Kontroller Kaplama Seçenekleri";
"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar";
"HIDE_SHORTS_CHANNEL_AVATAR" = "Shorts kanalının avatarını gizle";
"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = "";
"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button";
"HIDE_SHORTS_DISLIKE_BUTTON" = "Shorts beğenmeme düğmesini gizle";
"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = "";
"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button";
"HIDE_SHORTS_COMMENT_BUTTON" = "Shorts yorum düğmesini gizle";
"HIDE_SHORTS_COMMENT_BUTTON_DESC" = "";
"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button";
"HIDE_SHORTS_REMIX_BUTTON" = "Shorts remix düğmesini gizle";
"HIDE_SHORTS_REMIX_BUTTON_DESC" = "";
"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button";
"HIDE_SHORTS_SHARE_BUTTON" = "Shorts paylaşım düğmesini gizle";
"HIDE_SHORTS_SHARE_BUTTON_DESC" = "";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYou'nun düğmelerini gizle";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Shorts'ta uYou'nun indirme düğmelerini gizle.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";
"HIDE_SUBCRIPTIONS" = "Abonelikler düğmesini gizle ";
"HIDE_SUBCRIPTIONS_DESC" = "Duraklatıldığında görünen Abonelikler düğmesini gizle .";
"DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts wont automatically play next time you launch YouTube.";
"HIDE_SUPER_THANKS" = ""Süper Teşekkür Satın Alın" afişini gizle";
"HIDE_SUPER_THANKS_DESC" = "Shorts'ta "Süper Teşekkür Satın Alın" afişini gizle.";
"DISABLE_RESUME_TO_SHORTS" = "Shorts'ta kaldığı yerden devam etmeyi devre dışı bırak";
"DISABLE_RESUME_TO_SHORTS_DESC" = "Shorts izlerken YouTube'u kapatırsan Shorts, YouTube'u bir sonraki açışında otomatik olarak oynatılmaz.";
// Theme
"THEME_OPTIONS" = "Theme Options";
"THEME_OPTIONS" = "Tema ayarları";
"OLED_DARK_THEME" = "OLED Karanlık modu (Deneysel)";
"OLED_DARK_THEME_2" = "OLED Karanlık modu";
"OLED_DARK_THEME_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Bu seçeneği etkinleştirdikten/devre dışı bıraktıktan sonra uygulamanın yeniden başlatılması gerekir.";
"OLD_DARK_THEME" = "Old dark theme";
"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required.";
"OLD_DARK_THEME" = "Eski karanlık tema";
"OLD_DARK_THEME_DESC" = "Eski YouTube'un karanlık teması (gri tema). Uygulamanın yeniden başlatılması gerekir.";
"DEFAULT_THEME" = "Default";
"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required.";
"DEFAULT_THEME" = "Varsayılan";
"DEFAULT_THEME_DESC" = "YouTube'un varsayılan daha karanlık teması. Uygulamanın yeniden başlatılması gerekir.";
"OLED_KEYBOARD" = "OLED Klavye (Deneysel)";
"OLED_KEYBOARD_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Uygulamanın yeniden başlatılması gerekir.";
// Miscellaneous
"MISCELLANEOUS" = "Miscellaneous";
"MISCELLANEOUS" = "Diğer";
"CAST_CONFIRM" = "Yayınlamadan önce uyarıyı onaylayın (YTCastConfirm)";
"CAST_CONFIRM" = "Yayınlamadan önce uyarıyı onayla (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "TV'nin yanlışlıkla ele geçirilmesini önlemek için yayınlamadan önce bir onay uyarısı gösterir.";
"CASTING" = "Yayınlar";
"MSG_ARE_YOU_SURE" = "Yayınlamaya başlamak istediğinizden emin misiniz?";
"MSG_ARE_YOU_SURE" = "Yayınlamaya başlamak istediğinden emin misin?";
"MSG_YES" = "Evet";
"MSG_CANCEL" = "İptal";
"DISABLE_HINTS" = "Disable hints";
"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed.";
"DISABLE_HINTS" = "İpuçlarını devre dışı bırak";
"DISABLE_HINTS_DESC" = "Genellikle uygulama yeni yüklendiğinde görüntülenen YouTube'dan özellik ipuçlarını devre dışı bırak.";
"ENABLE_FLEX" = "Enable FLEX";
"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing.";
"ENABLE_FLEX" = "FLEX'i etkinleştir";
"ENABLE_FLEX_DESC" = "Hata ayıklama için FLEX'i etkinleştir (önerilmez). Ne yaptığını bilmiyorsan bunu kapalı bırak.";
"ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION" = "YouTube başlangıç animasyonunu etkinleştir";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"FIX_GOOGLE_SIGNIN" = "Google Oturumu Açma'yı düzeltin (yalnızca TrollStore kullanıcıları için)";
"FIX_GOOGLE_SIGNIN_DESC" = "Bu seçeneği yalnızca Google hesabınızla oturum açamadığınızda ve uygulama TrollStore aracılığıyla yüklendiyse açın. Normal olarak giriş yapabiliyorsanız, devre dışı bırakın. Uygulamanın yeniden başlatılması gerekir.";
"FIX_GOOGLE_SIGNIN_DESC" = "Bu seçeneği yalnızca Google hesabınızla oturum açamadığınızda ve uygulama TrollStore aracılığıyla yüklendiyse aç. Normal olarak giriş yapabiliyorsan, devre dışı bırak. Uygulamanın yeniden başlatılması gerekir.";
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_CHIP_BAR" = "Üst çubuğu gizle";
"HIDE_CHIP_BAR_DESC" = "Ana Sayfa akışlarında (Trendler, Müzik, Oyun...) ve Abonelik akışlarında (Tüm videolar, İzlemeye devam et...) Üst çubuğu gizle. Uygulamanın yeniden başlatılması gerekir.";
"NEW_MINIPLAYER_STYLE" = "Yeni mini oynatıcı bar stili. (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Uygulamanın yeniden başlatılması gerekir.";
@ -127,5 +133,5 @@
"YT_RE_EXPLORE" = "Shorts sekmesini Keşfet sekmesiyle değiştirin (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "Uygulamanın yeniden başlatılması gerekir.";
"IPHONE_LAYOUT" = "iPhone Layout";
"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required.";
"IPHONE_LAYOUT" = "iPhone Düzeni";
"IPHONE_LAYOUT_DESC" = "iPhone Düzenini kullanmak istersen etkinleştir. Uygulamanın yeniden başlatılması gerekir.";

View file

@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "Tự động toàn màn hình (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Tự động phát video ở chế độ toàn màn hình.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Tắt tình năng chạm 2 lần để tua";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "Vô hiệu hóa tự động chuyển tới chương";
"SNAP_TO_CHAPTER_DESC" = "Tắt tính năng tự động chuyển tới chương gần nhất khi tua video. Cần khởi động lại ứng dụng.";
@ -17,6 +20,9 @@
"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.";
"STOCK_VOLUME_HUD" = "Sử dụng thanh âm lượng mặc định của iOS";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Tùy chọn hiển thị trong trình phát video";
@ -77,6 +83,9 @@
"HIDE_SUPER_THANKS" = "Ẩn biểu ngữ 'Mua ảnh động Super Thanks'";
"HIDE_SUPER_THANKS_DESC" = "Ẩn biểu ngữ 'Mua ảnh động Super Thanks'.";
"HIDE_SUBCRIPTIONS" = "Ẩn nút Đăng ký kênh";
"HIDE_SUBCRIPTIONS_DESC" = "Ẩn nút Đăng ký kênh khi tạm dừng Shorts.";
"DISABLE_RESUME_TO_SHORTS" = "Tắt tính năng tự động tiếp tục Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "Nếu bạn thoát YouTube trong khi đang xem video Shorts, video Shorts đó sẽ không tự động phát khi bạn mở lại YouTube.";

View file

@ -1,5 +1,5 @@
// Settings
"VERSION" = "当前 uYouPlus 插件版本:%@";
"VERSION" = "当前 uYouPlus 版本:%@";
"VERSION_CHECK" = "点击此处前往 GitHub 查看最新版本信息!";
// Video player options
@ -8,6 +8,9 @@
"AUTO_FULLSCREEN" = "自动全屏 YTAutoFullScreen";
"AUTO_FULLSCREEN_DESC" = "自动全屏播放视频。";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "禁用双击快进和快退";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "禁用进度条章节吸附";
"SNAP_TO_CHAPTER_DESC" = "禁用进度条在手动移动时自动吸附至章节分隔处的行为。更改本设置后需要重启 App。";
@ -17,6 +20,9 @@
"YT_MINIPLAYER" = "为所有 YouTube 视频启用迷你播放器";
"YT_MINIPLAYER_DESC" = "例如:面向儿童的视频。";
"STOCK_VOLUME_HUD" = "使用 iOS 自带音量指示";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "视频播放器控制界面选项";
@ -74,10 +80,13 @@
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "隐藏 uYou 下载按钮";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "隐藏 Shorts 短片播放器中的 uYou 下载按钮。";
"HIDE_SUBCRIPTIONS" = "隐藏订阅按钮";
"HIDE_SUBCRIPTIONS_DESC" = "隐藏在暂停时出现的订阅按钮。";
"HIDE_SUPER_THANKS" = "隐藏“购买超级感谢”横幅";
"HIDE_SUPER_THANKS_DESC" = "隐藏出现在部分 Shorts 短片中的“购买超级感谢”横幅。";
"DISABLE_RESUME_TO_SHORTS" = "禁用重启后恢复至 Shorts 短片";
"DISABLE_RESUME_TO_SHORTS" = "应用重启后不恢复至 Shorts 短片";
"DISABLE_RESUME_TO_SHORTS_DESC" = "若您在观看 Shorts 短片时关闭了 YouTube下次启动时将不再自动进入 Shorts 短片分区。";
// Theme
@ -119,7 +128,7 @@
"FIX_GOOGLE_SIGNIN_DESC" = "仅在使用 TrollStore 安装本 App 的情况下生效:启用本设置后即可正常登录您的 Google 账号。更改本设置后需要重启 App。";
"HIDE_CHIP_BAR" = "隐藏顶部标签栏";
"HIDE_CHIP_BAR_DESC" = "隐藏首页和订阅内容页顶部的标签栏(例如:首页顶部的“音乐”、“游戏”、“新闻”以及订阅内容页顶部的“今天”、“继续观看”、“未观看”等)。更改本设置后需要重启 App。";
"HIDE_CHIP_BAR_DESC" = "隐藏首页和订阅内容页顶部的标签栏(例如:首页顶部的“音乐”、“游戏”、“新闻”以及订阅内容页顶部的“今天”、“继续观看”、“未观看”等)。更改本设置后需要重启 App。";
"NEW_MINIPLAYER_STYLE" = "新迷你播放器风格 BigYTMiniPlayer";
"NEW_MINIPLAYER_STYLE_DESC" = "更改本设置后需要重启 App。";
@ -128,4 +137,4 @@
"YT_RE_EXPLORE_DESC" = "更改本设置后需要重启 App。";
"IPHONE_LAYOUT" = "iPhone 视图";
"IPHONE_LAYOUT_DESC" = "在 iPad 上使用 iPhone 版本的应用布局,以便访问社区贴子和短片创作功能。更改本设置后需要重启 App。";
"IPHONE_LAYOUT_DESC" = "在 iPad 上使用 iPhone 版本的应用布局,以便查看社区贴子和使用短片创作功能。更改本设置后需要重启 App。";

View file

@ -3,22 +3,28 @@
"VERSION_CHECK" = "查看最新版本";
// Video player options
"VIDEO_PLAYER_OPTIONS" = "Video Player Options";
"VIDEO_PLAYER_OPTIONS" = "播放器選項";
"AUTO_FULLSCREEN" = "自動全螢幕 (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "自動全螢幕播放影片。";
"SNAP_TO_CHAPTER" = "Disable snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking videos. App restart is required.";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"PINCH_TO_ZOOM" = "Disable pinch to zoom";
"PINCH_TO_ZOOM_DESC" = "App restart is required.";
"SNAP_TO_CHAPTER" = "停用章節跳轉";
"SNAP_TO_CHAPTER_DESC" = "停用影片快轉時自動跳轉到章節。. 需要重新啟動應用程式。";
"YT_MINIPLAYER" = "為所有YouTube影片啟用迷你播放器";
"PINCH_TO_ZOOM" = "停用手勢縮放";
"PINCH_TO_ZOOM_DESC" = "需要重新啟動應用程式。";
"YT_MINIPLAYER" = "為所有 YouTube 影片啟用迷你播放器";
"YT_MINIPLAYER_DESC" = "例如兒童影片";
"STOCK_VOLUME_HUD" = "使用 iOS 內建的音量 HUD";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options";
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "影片懸浮控制選項";
"HIDE_AUTOPLAY_SWITCH" = "隱藏自動播放開關";
"HIDE_AUTOPLAY_SWITCH_DESC" = "在影片控制中隱藏自動播放開關。";
@ -32,8 +38,8 @@
"HIDE_PAID_PROMOTION_CARDS" = "隱藏付費橫幅YTNoPaidPromo";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "在某些影片中隱藏「包括付費促銷」橫幅。";
"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark";
"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required.";
"HIDE_CHANNEL_WATERMARK" = "隱藏頻道浮水印";
"HIDE_CHANNEL_WATERMARK_DESC" = "隱藏懸浮控制的頻道浮水印. 需要重新啟動應用程式。";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "隱藏上一個和下一個按鈕";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "在影片控制層中隱藏上一個和下一個按鈕";
@ -41,91 +47,95 @@
"REPLACE_PREVIOUS_NEXT_BUTTON" = "更換上一個/下一個按鈕";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "將影片播放器控制介面上的上一個/下一個按鈕替換成快轉/倒轉按鈕,需要重新啟動應用程式。";
"HIDE_HOVER_CARD" = "隱藏片尾畫面懸浮卡 (YTNoHoverCards)";
"HIDE_HOVER_CARD" = "隱藏片尾畫面懸浮卡 (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "在影片結尾隱藏創作者結束畫面。";
"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode";
"HIDE_RIGHT_PANEL_DESC" = "App restart is required.";
"HIDE_RIGHT_PANEL" = "在全螢幕下隱藏右側面板";
"HIDE_RIGHT_PANEL_DESC" = "需要重新啟動應用程式。";
"RED_PROGRESS_BAR" = "Red progress bar";
"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required.";
"RED_PROGRESS_BAR" = "紅色進度列";
"RED_PROGRESS_BAR_DESC" = "恢復紅色進度列. 需要重新啟動應用程式。";
"DONT_EAT_MY_CONTENT" = "2:1 影片瀏海/動態島優化DontEatMyContent";
"DONT_EAT_MY_CONTENT_DESC" = "改進部分機型的瀏海區域/動態島在 2:1 影片中的遮擋問題,需要重新啟動應用程式。";
// Shorts controls overlay options
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options";
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts 懸浮控制選項";
"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar";
"HIDE_SHORTS_CHANNEL_AVATAR" = "隱藏 Shorts 頻道大頭照";
"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = "";
"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button";
"HIDE_SHORTS_DISLIKE_BUTTON" = "隱藏 Shorts 不喜歡按鈕";
"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = "";
"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button";
"HIDE_SHORTS_COMMENT_BUTTON" = "隱藏 Shorts 留言按鈕";
"HIDE_SHORTS_COMMENT_BUTTON_DESC" = "";
"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button";
"HIDE_SHORTS_REMIX_BUTTON" = "隱藏 Shorts remix 按鈕";
"HIDE_SHORTS_REMIX_BUTTON_DESC" = "";
"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button";
"HIDE_SHORTS_SHARE_BUTTON" = "隱藏 Shorts 分享按鈕";
"HIDE_SHORTS_SHARE_BUTTON_DESC" = "";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts.";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "隱藏 uYou 按鈕";
"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "在 Shorts 中隱藏 uYou 下載按鈕.";
"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner";
"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts.";
"HIDE_SUBCRIPTIONS" = "隱藏訂閱按鈕";
"HIDE_SUBCRIPTIONS_DESC" = "隱藏當暫停時出現的訂閱按鈕。";
"DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts wont automatically play next time you launch YouTube.";
"HIDE_SUPER_THANKS" = "隱藏 '購買超級感謝' 橫幅";
"HIDE_SUPER_THANKS_DESC" = "在 Shorts 中隱藏 '購買超級感謝' 橫幅.";
"DISABLE_RESUME_TO_SHORTS" = "停用恢復播放 Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "如果你在觀看 Shorts 時關閉程式,下次開啟程式時將不再自動播放 Shorts.";
// Theme
"THEME_OPTIONS" = "Theme Options";
"THEME_OPTIONS" = "主題風格選項";
"OLED_DARK_THEME" = "OLED 深色模式(實驗性)";
"OLED_DARK_THEME_2" = "OLED 深色模式";
"OLED_DARK_THEME_DESC" = "在某些情況下無法正常運作。更動此選項後,需要重新啟動應用程式。";
"OLD_DARK_THEME" = "Old dark theme";
"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required.";
"OLD_DARK_THEME" = "傳統深色模式";
"OLD_DARK_THEME_DESC" = "YouTube深色模式 (灰色風格). 需要重新啟動應用程式。";
"DEFAULT_THEME" = "Default";
"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required.";
"DEFAULT_THEME" = "預設";
"DEFAULT_THEME_DESC" = "YouTube預設深色模式. 需要重新啟動應用程式。";
"OLED_KEYBOARD" = "OLED 鍵盤(實驗性)";
"OLED_KEYBOARD_DESC" = "在某些情況下可能無法正常運作。需要重新啟動應用程式。";
// Miscellaneous
"MISCELLANEOUS" = "Miscellaneous";
"MISCELLANEOUS" = "雜項";
"CAST_CONFIRM" = "投放前確認 (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "在投放前顯示確認訊息,以防止家人幹樵。";
"CASTING" = "投放中";
"MSG_ARE_YOU_SURE" = "是否開始投放";
"MSG_ARE_YOU_SURE" = "是否開始投放?";
"MSG_YES" = "確定";
"MSG_CANCEL" = "取消";
"DISABLE_HINTS" = "Disable hints";
"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed.";
"DISABLE_HINTS" = "停用提示";
"DISABLE_HINTS_DESC" = "停用初次安裝應用程式時顯示的功能提示。";
"ENABLE_FLEX" = "Enable FLEX";
"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing.";
"ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation";
"ENABLE_FLEX" = "啟用 FLEX";
"ENABLE_FLEX_DESC" = "啟用 FLEX 供除錯 (不推薦)。 當你不知道你在幹嘛時請勿使用。";
"ENABLE_YT_STARTUP_ANIMATION" = "啟用 Youtube 歡迎動畫";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"FIX_GOOGLE_SIGNIN" = "修復 Google 帳號登入問題僅TrollStore 使用者有效)";
"FIX_GOOGLE_SIGNIN_DESC" = "僅在使用 TrollStore 安裝此應用程式時有效:啟用本設定後即可正常登入 Google 帳號,需要重新啟動應用程式。";
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_CHIP_BAR" = "隱藏上層欄位";
"HIDE_CHIP_BAR_DESC" = "隱藏主畫面上層欄位 (話題, 音樂, 遊戲...) 和訂閱對象動態 (所有影片, 繼續觀看...). 需要重新啟動應用程式。";
"NEW_MINIPLAYER_STYLE" = "迷你播放器 (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "需要重新啟動應用程式。";
"YT_RE_EXPLORE" = "用探索選項卡代替 Shorts 選項卡 (YTReExplore)";
"YT_RE_EXPLORE" = "用探索分頁代替 Shorts 分頁 (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "需要重新啟動應用程式。";
"IPHONE_LAYOUT" = "iPhone Layout";
"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required.";
"IPHONE_LAYOUT" = "iPhone 佈局";
"IPHONE_LAYOUT_DESC" = "切換使用iPhone佈局. 需要重新啟動應用程式。";

View file

@ -1,5 +1,33 @@
#import "Tweaks/YouTubeHeader/YTAppDelegate.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTQTMButton.h"
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
#import <dlfcn.h>
#import <sys/utsname.h>
#import <substrate.h>
#import <rootless.h>
#import "Tweaks/FLEX/FLEX.h"
#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTWatchController.h"
#import "Tweaks/YouTubeHeader/YTIGuideResponse.h"
#import "Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h"
#import "Tweaks/YouTubeHeader/YTColorPalette.h"
#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h"
#import "Tweaks/YouTubeHeader/ASCollectionView.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlay.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h"
#import "Tweaks/YouTubeHeader/YTReelWatchPlaybackOverlayView.h"
#import "Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h"
#import "Tweaks/YouTubeHeader/YTReelPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTAlertView.h"
#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h"
#import "Tweaks/YouTubeHeader/YTPivotBarItemView.h"
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
#define YT_BUNDLE_ID @"com.google.ios.youtube"
@ -40,6 +68,9 @@
@interface boolSettingsVC : UIViewController
@end
@interface YTPlaybackButton : UIControl
@end
@interface PlayerManager : NSObject
- (float)progress;
@end
@ -52,6 +83,12 @@
@property UIButton *downloadsButton;
@end
// Buttons
@interface YTRightNavigationButtons : UIView
@property YTQTMButton *notificationButton;
@property YTQTMButton *sponsorBlockButton;
@end
// DontEatMyContent
BOOL DEMC_deviceIsSupported();
void DEMC_activate();

View file

@ -1,28 +1,4 @@
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
#import <dlfcn.h>
#import <sys/utsname.h>
#import <substrate.h>
#import "Header.h"
#import "Tweaks/FLEX/FLEX.h"
#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTWatchController.h"
#import "Tweaks/YouTubeHeader/YTIGuideResponse.h"
#import "Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h"
#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h"
#import "Tweaks/YouTubeHeader/ASCollectionView.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlay.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h"
#import "Tweaks/YouTubeHeader/YTReelWatchPlaybackOverlayView.h"
#import "Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h"
#import "Tweaks/YouTubeHeader/YTReelPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTAlertView.h"
#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h"
#import "uYouPlus.h"
// Tweak's bundle for Localizations support - @PoomSmart - https://github.com/PoomSmart/YouPiP/commit/aea2473f64c75d73cab713e1e2d5d0a77675024f
NSBundle *uYouPlusBundle() {
@ -33,7 +9,7 @@ NSBundle *uYouPlusBundle() {
if (tweakBundlePath)
bundle = [NSBundle bundleWithPath:tweakBundlePath];
else
bundle = [NSBundle bundleWithPath:@"/Library/Application Support/uYouPlus.bundle"];
bundle = [NSBundle bundleWithPath:ROOT_PATH_NS(@"/Library/Application Support/uYouPlus.bundle")];
});
return bundle;
}
@ -65,12 +41,12 @@ static BOOL IsEnabled(NSString *key) {
static BOOL isDarkMode() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1);
}
static BOOL defaultDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 0);
}
static BOOL oledDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1);
}
static BOOL oldDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2);
}
//
# pragma mark - uYou's patches
@ -131,8 +107,9 @@ static BOOL oldDarkTheme() {
- (void)didTapOverflowButton:(id)sender {}
%end
%subclass YTReelPlayerBottomButton : YTReelPlayerButton
%end
// Not Compatible for the releases 16.42.3 LTS + 17.49.6 LTS
// %subclass YTReelPlayerBottomButton : YTReelPlayerButton
// %end
%hook NSLayoutConstraint
+ (instancetype)constraintWithItem:(UIView *)view1
@ -247,6 +224,16 @@ static BOOL didFinishLaunching;
}
%end
// Fix login for YouTube 18.13.2 and higher
%hook SSOKeychainHelper
+ (NSString *)accessGroup {
return accessGroupID();
}
+ (NSString *)sharedAccessGroup {
return accessGroupID();
}
%end
// Fix login for YouTube 17.33.2 and higher
%hook SSOKeychainCore
+ (NSString *)accessGroup {
@ -391,7 +378,7 @@ static BOOL didFinishLaunching;
}
%end
//YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm
// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm
%hook MDXPlaybackRouteButtonController
- (void)didPressButton:(id)arg1 {
if (IsEnabled(@"castConfirm_enabled")) {
@ -447,6 +434,19 @@ static BOOL didFinishLaunching;
- (BOOL)mainAppCoreClientIosTransientVisualGlitchInPivotBarFix { return NO; } // Fix uYou's label glitching - qnblackcat/uYouPlus#552
%end
// Hide Upgrade Dialog
%hook YTGlobalConfig
- (BOOL)shouldBlockUpgradeDialog { return YES;}
- (BOOL)shouldForceUpgrade { return NO;}
- (BOOL)shouldShowUpgrade { return NO;}
- (BOOL)shouldShowUpgradeDialog { return NO;}
%end
// Disable Autoplay Settings Section - @qnblackcat (not needed, autoplay section works normal on v16.42.3)
// %hook YTSettingsSectionItemManager
// - (void)updateAutoplaySectionWithEntry:(id)arg1 {}
// %end
// NOYTPremium - https://github.com/PoomSmart/NoYTPremium/
%hook YTCommerceEventGroupHandler
- (void)addEventHandlers {}
@ -496,6 +496,150 @@ static BOOL didFinishLaunching;
- (BOOL)enablePlayerBarForVerticalVideoWhenControlsHiddenInFullscreen { return YES; }
%end
// YTNoTracking - https://github.com/arichorn/YTNoTracking/
%hook YTICompactLinkRenderer
- (BOOL)hasTrackingParams { return NO; }
%end
%hook YTIReelPlayerOverlayRenderer
- (BOOL)hasTrackingParams { return NO; }
%end
%group gYouTubeAppPatcher // YTAppPatcher for 16.42.3 - @arichorn
%hook YTVersionUtils
+ (NSString *)appVersion { return @"17.05.2"; }
%end
%hook YTSettingsCell // made by Dayanch96
- (void)setDetailText:(id)arg1 {
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appVersion = infoDictionary[@"CFBundleShortVersionString"];
if ([arg1 isEqualToString:@"17.05.2"]) {
arg1 = appVersion;
} %orig(arg1);
}
%end
%end
// Disable Wifi Related Settings - @arichorn
%group gDisableWifiRelatedSettings
%hook YTSettingsSectionItemManager
- (void)updateAutoplaySectionWithEntry:(id)arg1 {} // Autoplay
- (void)updateNotificationSectionWithEntry:(id)arg1 {} // Notifications
- (void)updateHistorySectionWithEntry:(id)arg1 {} // History
- (void)updatePrivacySectionWithEntry:(id)arg1 {} // Privacy
- (void)updateHistoryAndPrivacySectionWithEntry:(id)arg1 {} // History & Privacy
- (void)updateLiveChatSectionWithEntry:(id)arg1 {} // Live chat
%end
%end
// YTNoModernUI - @arichorn
%group gYTNoModernUI
%hook YTColdConfig
// Disable Modern Content - YTNoModernUI
- (BOOL)creatorClientConfigEnableStudioModernizedMdeThumbnailPickerForClient { return NO; }
- (BOOL)cxClientEnableModernizedActionSheet { return NO; }
- (BOOL)enableClientShortsSheetsModernization { return NO; }
- (BOOL)enableTimestampModernizationForNative { return NO; }
- (BOOL)mainAppCoreClientIosEnableModernOssPage { return NO; }
- (BOOL)modernizeElementsTextColor { return NO; }
- (BOOL)modernizeElementsBgColor { return NO; }
- (BOOL)modernizeCollectionLockups { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableEpUxUpdates { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableModernButtonsForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableModernButtonsForNativeLongTail { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableModernTabsForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigIosEnableSnackbarModernization { return NO; }
// Disable Rounded Content - YTNoModernUI
- (BOOL)iosEnableRoundedSearchBar { return NO; }
- (BOOL)enableIosRoundedSearchBar { return NO; }
- (BOOL)enableIosSearchBar { return NO; }
- (BOOL)iosDownloadsPageRoundedThumbs { return NO; }
- (BOOL)iosRoundedSearchBarSuggestZeroPadding { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedThumbnailsForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedThumbnailsForNativeLongTail { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedTimestampForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedDialogForNative { return NO; }
// Disable Darker Dark Mode - YTNoModernUI
- (BOOL)enableDarkerDarkMode { return NO; }
- (BOOL)useDarkerPaletteBgColorForElements { return NO; }
- (BOOL)useDarkerPaletteTextColorForElements { return NO; }
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteTextColorForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; }
// Disable Ambient Mode - YTNoModernUI
- (BOOL)disableCinematicForLowPowerMode { return NO; }
- (BOOL)enableCinematicContainer { return NO; }
- (BOOL)enableCinematicContainerOnClient { return NO; }
- (BOOL)enableCinematicContainerOnTablet { return NO; }
- (BOOL)iosCinematicContainerClientImprovement { return NO; }
- (BOOL)iosEnableGhostCardInlineTitleCinematicContainerFix { return NO; }
- (BOOL)iosUseFineScrubberMosaicStoreForCinematic { return NO; }
- (BOOL)mainAppCoreClientEnableClientCinematicPlaylists { return NO; }
- (BOOL)mainAppCoreClientEnableClientCinematicPlaylistsPostMvp { return NO; }
- (BOOL)mainAppCoreClientEnableClientCinematicTablets { return NO; }
// 16.42.3 Styled YouTube Channel Page Interface - YTNoModernUI
- (BOOL)channelsClientConfigIosChannelNavRestructuring { return NO; }
- (BOOL)channelsClientConfigIosMultiPartChannelHeader { return NO; }
// Disable Optional Content - YTNoModernUI
- (BOOL)elementsClientIosElementsEnableLayoutUpdateForIob { return NO; }
- (BOOL)supportElementsInMenuItemSupportedRenderers { return NO; }
- (BOOL)isNewRadioButtonStyleEnabled { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableButtonSentenceCasingForNative { return NO; }
%end
%hook YTHotConfig
- (BOOL)liveChatIosUseModernRotationDetectiom { return NO; } // Disable Modern Content (YTHotConfig)
- (BOOL)iosShouldRepositionChannelBar { return NO; }
- (BOOL)enableElementRendererOnChannelCreation { return NO; }
%end
%end
// Hide YouTube Logo
%group gHideYouTubeLogo
%hook YTHeaderLogoController
- (YTHeaderLogoController *)init {
return NULL;
}
%end
%end
// Hide YouTube Heatwaves in Video Player (YouTube v17.19.2-present) - @level3tjg - https://www.reddit.com/r/jailbreak/comments/v29yvk/
%group gHideHeatwaves
%hook YTInlinePlayerBarContainerView
- (BOOL)canShowHeatwave { return NO; }
%end
%end
%group gHideuYouTab
%hook YTPivotBarView
- (void)setRenderer:(YTIPivotBarRenderer *)renderer {
NSMutableArray <YTIPivotBarSupportedRenderers *> *items = [renderer itemsArray];
NSUInteger index = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) {
return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:@"com.miro.uyou"];
}];
if (index != NSNotFound) [items removeObjectAtIndex:index];
%orig;
}
%end
%end
# pragma mark - Hide Notification Button && SponsorBlock Button
%hook YTRightNavigationButtons
- (void)layoutSubviews {
%orig;
if (IsEnabled(@"hideNotificationButton_enabled")) {
self.notificationButton.hidden = YES;
}
if (IsEnabled(@"hideSponsorBlockButton_enabled")) {
self.sponsorBlockButton.hidden = YES;
self.sponsorBlockButton.frame = CGRectZero;
}
}
%end
// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo
%hook YTMainAppVideoPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
@ -575,214 +719,14 @@ static void replaceTab(YTIGuideResponse *response) {
%end
%end
// DontEatMyContent - @therealFoxster: https://github.com/therealFoxster/DontEatMyContent
static double videoAspectRatio = 16/9;
static bool zoomedToFill = false;
static bool engagementPanelIsVisible = false, removeEngagementPanelViewControllerWithIdentifierCalled = false;
static MLHAMSBDLSampleBufferRenderingView *renderingView;
static NSLayoutConstraint *widthConstraint, *heightConstraint, *centerXConstraint, *centerYConstraint;
%group gDontEatMyContent
// Retrieve video aspect ratio
%hook YTPlayerView
- (void)setAspectRatio:(CGFloat)aspectRatio {
%orig(aspectRatio);
videoAspectRatio = aspectRatio;
}
%end
%hook YTPlayerViewController
- (void)viewDidAppear:(BOOL)animated {
YTPlayerView *playerView = [self playerView];
UIView *renderingViewContainer = MSHookIvar<UIView *>(playerView, "_renderingViewContainer");
renderingView = [playerView renderingView];
// Making renderingView a bit larger since constraining to safe area leaves a gap between the notch and video
CGFloat constant = 22.0; // Tested on iPhone 13 mini & 14 Pro Max
widthConstraint = [renderingView.widthAnchor constraintEqualToAnchor:renderingViewContainer.safeAreaLayoutGuide.widthAnchor constant:constant];
heightConstraint = [renderingView.heightAnchor constraintEqualToAnchor:renderingViewContainer.safeAreaLayoutGuide.heightAnchor constant:constant];
centerXConstraint = [renderingView.centerXAnchor constraintEqualToAnchor:renderingViewContainer.centerXAnchor];
centerYConstraint = [renderingView.centerYAnchor constraintEqualToAnchor:renderingViewContainer.centerYAnchor];
// playerView.backgroundColor = [UIColor blueColor];
// renderingViewContainer.backgroundColor = [UIColor greenColor];
// renderingView.backgroundColor = [UIColor redColor];
YTMainAppVideoPlayerOverlayViewController *activeVideoPlayerOverlay = [self activeVideoPlayerOverlay];
// Must check class since YTInlineMutedPlaybackPlayerOverlayViewController doesn't have -(BOOL)isFullscreen
if ([NSStringFromClass([activeVideoPlayerOverlay class]) isEqualToString:@"YTMainAppVideoPlayerOverlayViewController"] // isKindOfClass doesn't work for some reason
&& [activeVideoPlayerOverlay isFullscreen]) {
if (!zoomedToFill && !engagementPanelIsVisible) DEMC_activate();
} else {
DEMC_centerRenderingView();
}
%orig(animated);
}
- (void)didPressToggleFullscreen {
%orig;
if (![[self activeVideoPlayerOverlay] isFullscreen]) { // Entering full screen
if (!zoomedToFill && !engagementPanelIsVisible) DEMC_activate();
} else { // Exiting full screen
DEMC_deactivate();
}
%orig;
}
- (void)didSwipeToEnterFullscreen {
%orig;
if (!zoomedToFill && !engagementPanelIsVisible) DEMC_activate();
}
- (void)didSwipeToExitFullscreen {
%orig;
DEMC_deactivate();
}
// New video played
-(void)playbackController:(id)playbackController didActivateVideo:(id)video withPlaybackData:(id)playbackData {
%orig(playbackController, video, playbackData);
if ([[self activeVideoPlayerOverlay] isFullscreen]) // New video played while in full screen (landscape)
// Activate since new videos played in full screen aren't zoomed-to-fill by default
// (i.e. the notch/Dynamic Island will cut into content when playing a new video in full screen)
DEMC_activate();
engagementPanelIsVisible = false;
removeEngagementPanelViewControllerWithIdentifierCalled = false;
}
%end
// Pinch to zoom
%hook YTVideoFreeZoomOverlayView
- (void)didRecognizePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
DEMC_deactivate();
%orig(pinchGestureRecognizer);
}
// Detect zoom to fill
- (void)showLabelForSnapState:(NSInteger)snapState {
if (snapState == 0) { // Original
zoomedToFill = false;
DEMC_activate();
} else if (snapState == 1) { // Zoomed to fill
zoomedToFill = true;
// No need to deactivate constraints as it's already done in -(void)didRecognizePinch:(UIPinchGestureRecognizer *)
}
%orig(snapState);
}
%end
// Mini bar dismiss
%hook YTWatchMiniBarViewController
- (void)dismissMiniBarWithVelocity:(CGFloat)velocity gestureType:(int)gestureType {
%orig(velocity, gestureType);
zoomedToFill = false; // Setting to false since YouTube undoes zoom-to-fill when mini bar is dismissed
}
- (void)dismissMiniBarWithVelocity:(CGFloat)velocity gestureType:(int)gestureType skipShouldDismissCheck:(BOOL)skipShouldDismissCheck {
%orig(velocity, gestureType, skipShouldDismissCheck);
zoomedToFill = false;
}
%end
%hook YTMainAppEngagementPanelViewController
// Engagement panel (comment, description, etc.) about to show up
- (void)viewWillAppear:(BOOL)animated {
if ([self isPeekingSupported]) {
// Shorts (only Shorts support peeking, I think)
} else {
// Everything else
engagementPanelIsVisible = true;
if ([self isLandscapeEngagementPanel]) {
DEMC_deactivate();
}
}
%orig(animated);
}
// Engagement panel about to dismiss
// - (void)viewDidDisappear:(BOOL)animated { %orig; %log; } // Called too late & isn't reliable so sometimes constraints aren't activated even when engagement panel is closed
%end
%hook YTEngagementPanelContainerViewController
// Engagement panel about to dismiss
- (void)notifyEngagementPanelContainerControllerWillHideFinalPanel { // Called in time but crashes if plays new video while in full screen causing engagement panel dismissal
// Must check if engagement panel was dismissed because new video played
// (i.e. if -(void)removeEngagementPanelViewControllerWithIdentifier:(id) was called prior)
if (![self isPeekingSupported] && !removeEngagementPanelViewControllerWithIdentifierCalled) {
engagementPanelIsVisible = false;
if ([self isLandscapeEngagementPanel] && !zoomedToFill) {
DEMC_activate();
}
}
%orig;
}
- (void)removeEngagementPanelViewControllerWithIdentifier:(id)identifier {
// Usually called when engagement panel is open & new video is played or mini bar is dismissed
removeEngagementPanelViewControllerWithIdentifierCalled = true;
%orig(identifier);
}
%end
%end// group gDontEatMyContent
BOOL DEMC_deviceIsSupported() {
// Get device model identifier (e.g. iPhone14,4)
// https://stackoverflow.com/a/11197770/19227228
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceModelID = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
NSArray *unsupportedModelIDs = DEMC_UNSUPPORTED_DEVICES;
for (NSString *identifier in unsupportedModelIDs) {
if ([deviceModelID isEqualToString:identifier]) {
return NO;
}
}
if ([deviceModelID containsString:@"iPhone"]) {
if ([deviceModelID isEqualToString:@"iPhone13,1"]) {
// iPhone 12 mini
return YES;
}
NSString *modelNumber = [[deviceModelID stringByReplacingOccurrencesOfString:@"iPhone" withString:@""] stringByReplacingOccurrencesOfString:@"," withString:@"."];
if ([modelNumber floatValue] >= 14.0) {
// iPhone 13 series and newer
return YES;
} else return NO;
} else return NO;
}
void DEMC_activate() {
if (videoAspectRatio < DEMC_THRESHOLD) {
DEMC_deactivate();
return;
}
// NSLog(@"activate");
DEMC_centerRenderingView();
renderingView.translatesAutoresizingMaskIntoConstraints = NO;
widthConstraint.active = YES;
heightConstraint.active = YES;
}
void DEMC_deactivate() {
// NSLog(@"deactivate");
DEMC_centerRenderingView();
renderingView.translatesAutoresizingMaskIntoConstraints = YES;
widthConstraint.active = NO;
heightConstraint.active = NO;
}
void DEMC_centerRenderingView() {
centerXConstraint.active = YES;
centerYConstraint.active = YES;
}
// YTSpeed - https://github.com/Lyvendia/YTSpeed
%group gYTSpeed
%hook YTVarispeedSwitchController
- (id)init {
id result = %orig;
const int size = 12;
float speeds[] = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0};
const int size = 17;
float speeds[] = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 5.0};
id varispeedSwitchControllerOptions[size];
for (int i = 0; i < size; ++i) {
@ -817,11 +761,12 @@ void DEMC_centerRenderingView() {
%end
%hook YTPlayerViewController
%property float playbackRate;
%property (nonatomic, assign) float playbackRate;
- (void)singleVideo:(id)video playbackRateDidChange:(float)rate {
%orig;
}
%end
%end
# pragma mark - uYouPlus
// Video Player Options
@ -847,8 +792,23 @@ void DEMC_centerRenderingView() {
}
%end
// YTStockVolumeHUD - https://github.com/lilacvibes/YTStockVolumeHUD
%group gStockVolumeHUD
%hook YTVolumeBarView
- (void)volumeChanged:(id)arg1 {
%orig(nil);
}
%end
%hook UIApplication
- (void)setSystemVolumeHUDEnabled:(BOOL)arg1 forAudioCategory:(id)arg2 {
%orig(true, arg2);
}
%end
%end
// Video Controls Overlay Options
// Hide CC / Autoplay switch
// Hide CC / Autoplay switch / Enable Share Button / Enable Save to Playlist Button
%hook YTMainAppControlsOverlayView
- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { // hide CC button
return IsEnabled(@"hideCC_enabled") ? %orig(NO) : %orig;
@ -857,6 +817,20 @@ void DEMC_centerRenderingView() {
if (IsEnabled(@"hideAutoplaySwitch_enabled")) {}
else { return %orig; }
}
- (void)setShareButtonAvailable:(BOOL)arg1 {
if (IsEnabled(@"enableShareButton_enabled")) {
%orig(YES);
} else {
%orig(NO);
}
}
- (void)setAddToButtonAvailable:(BOOL)arg1 {
if (IsEnabled(@"enableSaveToButton_enabled")) {
%orig(YES);
} else {
%orig(NO);
}
}
%end
// Hide HUD Messages
@ -880,6 +854,18 @@ void DEMC_centerRenderingView() {
- (BOOL)removeNextPaddleForSingletonVideos { return YES; }
- (BOOL)removePreviousPaddleForSingletonVideos { return YES; }
%end
%hook YTMainAppControlsOverlayView // this is only used for v16.42.3 (incompatible with YouTube v17.22.3-newer)
- (void)layoutSubviews { // hide Next & Previous legacy buttons
%orig;
if (IsEnabled(@"hidePreviousAndNextButton_enabled")) {
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_nextButton").hidden = YES;
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_previousButton").hidden = YES;
MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").hidden = YES;
MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").hidden = YES;
}
}
%end
%end
// Replace Next & Previous button with Fast forward & Rewind button
@ -890,6 +876,25 @@ void DEMC_centerRenderingView() {
%end
%end
%group gHideOverlayDarkBackground
%hook YTMainAppVideoPlayerOverlayView
- (void)setBackgroundVisible:(BOOL)arg1 {
%orig(NO);
}
%end
%end
%group gHideVideoPlayerShadowOverlayButtons
%hook YTMainAppControlsOverlayView
- (void)layoutSubviews {
%orig();
MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").backgroundColor = nil;
MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").backgroundColor = nil;
MSHookIvar<YTPlaybackButton *>(self, "_playPauseButton").backgroundColor = nil;
}
%end
%end
// Bring back the red progress bar
%hook YTColdConfig
- (BOOL)segmentablePlayerBarUpdateColors {
@ -910,6 +915,10 @@ void DEMC_centerRenderingView() {
if (IsEnabled(@"hideShortsChannelAvatar_enabled")) {}
else { return %orig; }
}
- (void)setReelLikeButton:(id)arg1 {
if (IsEnabled(@"hideShortsLikeButton_enabled")) {}
else { return %orig; }
}
- (void)setReelDislikeButton:(id)arg1 {
if (IsEnabled(@"hideShortsDislikeButton_enabled")) {}
else { return %orig; }
@ -940,6 +949,15 @@ void DEMC_centerRenderingView() {
if ((IsEnabled(@"hideBuySuperThanks_enabled")) && ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"])) {
self.hidden = YES;
}
// YTNoChannelLinks - crash fix for v16.42.3
if ([self.accessibilityIdentifier isEqualToString:@"eml.channel_header_links"]) {
self.hidden = YES;
self.opaque = YES;
self.userInteractionEnabled = NO;
[self setNeedsLayout];
[self layoutIfNeeded];
}
}
%end
@ -950,40 +968,18 @@ void DEMC_centerRenderingView() {
%end
// Theme Options
// Old dark theme (gray)
%group gOldDarkTheme
%hook YTColdConfig
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteTextColorForNative { return NO; }
- (BOOL)enableCinematicContainerOnClient { return NO; }
%end
%group gDefaultDarkTheme // 16.42.3 Dark Theme Patch
%hook _ASDisplayView
- (void)didMoveToWindow {
%orig;
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor clearColor]; }
}
%end
%hook ASCollectionView
- (void)didMoveToWindow {
%orig;
self.superview.backgroundColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:1.0];
}
%end
%hook YTFullscreenEngagementOverlayView
- (void)didMoveToWindow {
%orig;
self.subviews[0].backgroundColor = [UIColor clearColor];
}
%end
%hook YTRelatedVideosView
- (void)didMoveToWindow {
%orig;
self.subviews[0].backgroundColor = [UIColor clearColor];
if (isDarkMode()) {
if ([self.accessibilityIdentifier isEqualToString:@"brand.promo_view"]) self.superview.backgroundColor = [UIColor colorWithRed: 0.13 green: 0.13 blue: 0.13 alpha: 1.00];
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) self.backgroundColor = [UIColor colorWithRed: 0.09 green: 0.09 blue: 0.09 alpha: 1.00];
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) self.backgroundColor = [UIColor colorWithRed: 0.09 green: 0.09 blue: 0.09 alpha: 1.00];
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) self.superview.backgroundColor = [UIColor colorWithRed: 0.09 green: 0.09 blue: 0.09 alpha: 1.00];
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) self.backgroundColor = [UIColor colorWithRed: 0.09 green: 0.09 blue: 0.09 alpha: 1.00];
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) self.backgroundColor = [UIColor colorWithRed: 0.09 green: 0.09 blue: 0.09 alpha: 1.00];
}
}
%end
%end
@ -991,7 +987,7 @@ void DEMC_centerRenderingView() {
// OLED dark mode by BandarHL
UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:1.0];
%group gOLED
%hook YTCommonColorPalette
%hook YTColorPalette
- (UIColor *)brandBackgroundSolid {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
@ -1012,6 +1008,12 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
}
%end
%hook YTInnerTubeCollectionViewController
- (UIColor *)backgroundColor:(NSInteger)pageStyle {
return pageStyle == 1 ? [UIColor blackColor] : %orig;
}
%end
// Explore
%hook ASScrollView
- (void)didMoveToWindow {
@ -1153,18 +1155,18 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; }
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.nextResponder isKindOfClass:%c(ASScrollView)]) self.backgroundColor = [UIColor clearColor];
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) self.backgroundColor = [UIColor blackColor];
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]; }
}
}
%end
@ -1291,12 +1293,12 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
%end
%hook UIKBTree
- (long long)nativeIdiom {
return YES;
return NO;
}
%end
%hook UIKBRenderer
- (long long)assetIdiom {
return YES;
return NO;
}
%end
%end
@ -1323,20 +1325,26 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
if (IsEnabled(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
%init(Main);
}
if (IsEnabled(@"dontEatMyContent_enabled") && DEMC_deviceIsSupported()) {
%init(gDontEatMyContent);
}
if (IsEnabled(@"hidePreviousAndNextButton_enabled")) {
%init(gHidePreviousAndNextButton);
}
if (IsEnabled(@"replacePreviousAndNextButton_enabled")) {
%init(gReplacePreviousAndNextButton);
}
if (oledDarkTheme()) {
%init(gOLED);
if (IsEnabled(@"hideOverlayDarkBackground_enabled")) {
%init(gHideOverlayDarkBackground);
}
if (oldDarkTheme()) {
%init(gOldDarkTheme)
if (IsEnabled(@"hideVideoPlayerShadowOverlayButtons_enabled")) {
%init(gHideVideoPlayerShadowOverlayButtons);
}
if (IsEnabled(@"disableWifiRelatedSettings_enabled")) {
%init(gDisableWifiRelatedSettings);
}
if (defaultDarkTheme()) {
%init(gDefaultDarkTheme);
}
if (oledDarkTheme()) {
%init(gOLED);
}
if (IsEnabled(@"oledKeyBoard_enabled")) {
%init(gOLEDKB);
@ -1347,9 +1355,30 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
if (IsEnabled(@"hideChipBar_enabled")) {
%init(gHideChipBar);
}
if (IsEnabled(@"ytSpeed_enabled")) {
%init(gYTSpeed);
}
if (IsEnabled(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) {
%init(giPhoneLayout);
}
if (IsEnabled(@"stockVolumeHUD_enabled")) {
%init(gStockVolumeHUD);
}
if (IsEnabled(@"hideYouTubeLogo_enabled")) {
%init(gHideYouTubeLogo);
}
if (IsEnabled(@"hideuYouTab_enabled")) {
%init(gHideuYouTab);
}
if (IsEnabled(@"hideHeatwaves_enabled")) {
%init(gHideHeatwaves);
}
if (IsEnabled(@"ytNoModernUI_enabled")) {
%init(gYTNoModernUI);
}
if (IsEnabled(@"ytAppPatcher_enabled")) {
%init(gYouTubeAppPatcher);
}
// Disable updates
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"automaticallyCheckForUpdates"];
@ -1358,6 +1387,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"removeYouTubeAds"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"showedWelcomeVC"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"removeShortsSection"];
// Change the default value of some options
NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];