Compare commits
90 commits
main
...
main-16.42
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f08053c53 | ||
|
|
555ae56d4b | ||
|
|
e09ee6ddc6 | ||
|
|
4789ae1738 | ||
|
|
da2843d783 | ||
|
|
dccd9774c1 | ||
|
|
5a4692d437 | ||
|
|
c665199953 | ||
|
|
e5766b17ad | ||
|
|
178155d00e | ||
|
|
28770a92c0 | ||
|
|
583fe1a0b6 | ||
|
|
403feee43e | ||
|
|
ecfecdada6 | ||
|
|
5483628f83 | ||
|
|
424b019d47 | ||
|
|
a813cc19e3 | ||
|
|
a30dc51dbf | ||
|
|
fc401adfc6 | ||
|
|
e10b1d62ad | ||
|
|
0a1966cd41 | ||
|
|
9fa1d89ca0 | ||
|
|
ded048d0c6 | ||
|
|
a7c53286ab | ||
|
|
1986066e06 | ||
|
|
fd1f0cbe00 | ||
|
|
5a7146710e | ||
|
|
cfdb350255 | ||
|
|
c79bc496e4 | ||
|
|
d5f1ddebdb | ||
|
|
66276dcea0 | ||
|
|
d261475659 | ||
|
|
b0678ca526 | ||
|
|
e464bea592 | ||
|
|
9e742093c3 | ||
|
|
1d78420840 | ||
|
|
01500dee04 | ||
|
|
d125e09ea3 | ||
|
|
cac13be185 | ||
|
|
5d1aeda416 | ||
|
|
aab450a6d3 | ||
|
|
d88165f2a5 | ||
|
|
546f1f3603 | ||
|
|
0d3ab04bc5 | ||
|
|
6ba4426180 | ||
|
|
eedb0670d0 | ||
|
|
6cb24ab1c8 | ||
|
|
2f5680513d | ||
|
|
6688de6214 | ||
|
|
7b7e86f853 | ||
|
|
ffa3f33ac7 | ||
|
|
056e803e6d | ||
|
|
4fdbdeccfd | ||
|
|
9f4c737bff | ||
|
|
a05d1b9d5a | ||
|
|
38d92e5aae | ||
|
|
e15d2d1d37 | ||
|
|
a4e3978182 | ||
|
|
af2a84173e | ||
|
|
a14bab860f | ||
|
|
6e31be103d | ||
|
|
089417e152 | ||
|
|
bede8d8844 | ||
|
|
63880797b9 | ||
|
|
6fecd1f060 | ||
|
|
68f8731322 | ||
|
|
482788870e | ||
|
|
526523ff56 | ||
|
|
4fa727e671 | ||
|
|
0a30141c49 | ||
|
|
d5c3e6d37e | ||
|
|
276358b913 | ||
|
|
76c65e1016 | ||
|
|
b04407e420 | ||
|
|
46d0ade95d | ||
|
|
e2e90d053a | ||
|
|
67bc83167a | ||
|
|
74b69b4dd0 | ||
|
|
1e608bd7b3 | ||
|
|
bf914d9c21 | ||
|
|
c388b6fcf4 | ||
|
|
be8c68e317 | ||
|
|
9527c2fc2b | ||
|
|
891c9045da | ||
|
|
93a4664b1e | ||
|
|
e66bc8fe7a | ||
|
|
79b387f89f | ||
|
|
79cebe6d79 | ||
|
|
1b433fd107 | ||
|
|
2591664bba |
47 changed files with 4580 additions and 535 deletions
77
.github/workflows/buildapp.yml
vendored
77
.github/workflows/buildapp.yml
vendored
|
|
@ -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
57
.github/workflows/update-submodules.yml
vendored
Normal 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
46
.gitmodules
vendored
|
|
@ -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
|
||||
|
|
|
|||
17
Makefile
17
Makefile
|
|
@ -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"
|
||||
|
|
|
|||
38
README.md
38
README.md
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
590
Settings.xm
590
Settings.xm
|
|
@ -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
2651
Source/LowContrastMode.xm
Normal file
File diff suppressed because it is too large
Load diff
547
Source/VersionSpoofer.xm
Normal file
547
Source/VersionSpoofer.xm
Normal 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
|
||||
1
Tweaks/YTNoCommunityPosts
Submodule
1
Tweaks/YTNoCommunityPosts
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit e08c3dc9ac3b0e7b4c83a3280b7d31c9ce385066
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit ac6829e27c9871b7948afbe903281b11ab6dfa98
|
||||
Subproject commit 31e218b2725bdcbc1e85d52e87f9167080708914
|
||||
1
Tweaks/YTVideoOverlay
Submodule
1
Tweaks/YTVideoOverlay
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0f9f33f52d1a51efb7e13c66231b6ec0652999a8
|
||||
1
Tweaks/YouMute
Submodule
1
Tweaks/YouMute
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 7f36c985716839fa9398186cd33ef7e638ed1d5c
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit eddc0ba7f3227935fc8a1330f05fe740023ea8df
|
||||
Subproject commit a310cefd7832194757e62f926d097d52421c0bc1
|
||||
1
Tweaks/YouQuality
Submodule
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
|
||||
1
Tweaks/uYouLocalization
Submodule
1
Tweaks/uYouLocalization
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 3e14f0280c3a183dbcfc3b7903be0522cfb1b6c6
|
||||
12
buildapp.sh
12
buildapp.sh
|
|
@ -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"
|
||||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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 を購入のバナーを非表示にします。";
|
||||
|
||||
|
|
|
|||
|
|
@ -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 구매' 배너를 숨깁니다.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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 won‘t 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.";
|
||||
|
|
|
|||
|
|
@ -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.";
|
||||
|
||||
|
|
|
|||
|
|
@ -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。";
|
||||
|
|
|
|||
|
|
@ -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 won‘t 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佈局. 需要重新啟動應用程式。";
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
610
uYouPlus.xm
610
uYouPlus.xm
|
|
@ -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];
|
||||
|
|
|
|||
Loading…
Reference in a new issue