Merge branch 'arichornlover:main' into main

This commit is contained in:
Aaron Liu 2025-09-07 13:48:37 -04:00 committed by GitHub
commit 57f948abd8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
50 changed files with 2021 additions and 3637 deletions

View file

@ -8,7 +8,7 @@ on:
inputs:
sdk_version:
description: "iOS SDK Version"
default: "16.5"
default: "17.5"
required: true
type: string
uyou_version:
@ -81,7 +81,7 @@ jobs:
THEOS: ${{ github.workspace }}/theos
YOUTUBE_URL: ${{ env.URL_YT }}
- name: Checkout Main
uses: actions/checkout@v4.2.1
uses: actions/checkout@v5
with:
path: main
ref: ${{ github.event.inputs.commit_id || github.ref }}
@ -94,16 +94,16 @@ jobs:
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Setup Theos
uses: actions/checkout@v4.2.1
uses: actions/checkout@v5
with:
repository: theos/theos
ref: 5bfdc3cb7133ec1cab43182115d902e2b57c9eac
ref: master
path: theos
submodules: recursive
- name: SDK Caching
id: SDK
uses: actions/cache@v4.1.1
uses: actions/cache@v4.2.4
env:
cache-name: iOS-${{ inputs.sdk_version }}-SDK
with:
@ -114,7 +114,7 @@ jobs:
- name: Download iOS SDK
if: steps.SDK.outputs.cache-hit != 'true'
run: |
git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/theos/sdks/
git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/aricloverALT/sdks/
cd sdks
git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk
git checkout
@ -123,7 +123,7 @@ jobs:
THEOS: ${{ github.workspace }}/theos
- name: Setup Theos Jailed
uses: actions/checkout@v4.2.1
uses: actions/checkout@v5
with:
repository: qnblackcat/theos-jailed
ref: master
@ -140,8 +140,8 @@ jobs:
id: build_package
run: |
cd ${{ github.workspace }}/main
sed -i '' "27s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile # Modify the bundle ID
sed -i '' "26s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile # Modify the app name
sed -i '' "30s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile # Modify the bundle ID
sed -i '' "29s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile # Modify the app name
sed -i '' "1s#.*#export TARGET = iphone:clang:${{ inputs.sdk_version }}:14.0#g" Makefile # Modify the SDK version
make package THEOS_PACKAGE_SCHEME=rootless IPA=Payload/YouTube.app FINALPACKAGE=1
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
@ -156,7 +156,7 @@ jobs:
- name: Upload Artifact
if: ${{ inputs.upload_artifact }}
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.6.2
env:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }}
@ -168,7 +168,7 @@ jobs:
- name: Create Release
if: ${{ inputs.create_release }}
id: create_release
uses: softprops/action-gh-release@v2.0.8
uses: softprops/action-gh-release@v2.3.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
UYOU_VERSION: ${{ inputs.uyou_version }}

View file

@ -9,7 +9,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.2.1
uses: actions/checkout@v4.2.2
- name: Set up Git
run: |
@ -22,21 +22,19 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/DontEatMyContent
git add .
git submodule update --init --recursive --remote Tweaks/YTHoldForSpeed
git submodule update --init --recursive --remote Tweaks/iSponsorBlock
git add .
git submodule update --init --recursive --remote Tweaks/YTSpeed
git submodule update --init --recursive --remote Tweaks/protobuf
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/uYouLocalization
git add .
git submodule update --init --recursive --remote Tweaks/YTABConfig
git submodule update --init --recursive --remote Tweaks/YouGroupSettings
git add .
git submodule update --init --recursive --remote Tweaks/YTClassicVideoQuality
git add .
git submodule update --init --recursive --remote Tweaks/YTUHD
git add .
git submodule update --init --recursive --remote Tweaks/YTVideoOverlay
git submodule update --init --recursive --remote Tweaks/YouLoop
git add .
git submodule update --init --recursive --remote Tweaks/YouMute
git add .
@ -44,15 +42,25 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/YouQuality
git add .
git submodule update --init --recursive --remote Tweaks/YouTimeStamp
git submodule update --init --recursive --remote Tweaks/YouSlider
git add .
git submodule update --init --recursive --remote Tweaks/YouGroupSettings
git submodule update --init --recursive --remote Tweaks/YouSpeed
git add .
git submodule update --init --recursive --remote Tweaks/YouTimeStamp
git add .
git submodule update --init --recursive --remote Tweaks/YouTubeHeader
git add .
git submodule update --init --recursive --remote Tweaks/iSponsorBlock
git submodule update --init --recursive --remote Tweaks/YTABConfig
git add .
git submodule update --init --recursive --remote Tweaks/protobuf
git submodule update --init --recursive --remote Tweaks/YTClassicVideoQuality
git add .
git submodule update --init --recursive --remote Tweaks/YTHoldForSpeed
git add .
git submodule update --init --recursive --remote Tweaks/YTIcons
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
git commit -m "updated submodules"

171
.gitmodules vendored
View file

@ -1,89 +1,94 @@
[submodule "Tweaks/YTUHD"]
path = Tweaks/YTUHD
url = https://github.com/arichornloverALT/YTUHD.git
branch = master
[submodule "Tweaks/YouPiP"]
path = Tweaks/YouPiP
url = https://github.com/arichornloverALT/YouPiP.git
branch = main
[submodule "Tweaks/YouMute"]
path = Tweaks/YouMute
url = https://github.com/PoomSmart/YouMute.git
branch = main
[submodule "Tweaks/YouQuality"]
path = Tweaks/YouQuality
url = https://github.com/arichornloverALT/YouQuality.git
branch = main
[submodule "Tweaks/YTVideoOverlay"]
path = Tweaks/YTVideoOverlay
url = https://github.com/arichornloverALT/YTVideoOverlay.git
branch = main
[submodule "Tweaks/Return-YouTube-Dislikes"]
path = Tweaks/Return-YouTube-Dislikes
url = https://github.com/PoomSmart/Return-YouTube-Dislikes.git
[submodule "Tweaks/YouTubeHeader"]
path = Tweaks/YouTubeHeader
url = https://github.com/arichornloverALT/YouTubeHeader.git
branch = main
[submodule "Extensions"]
path = Extensions
url = https://github.com/CokePokes/YoutubeExtensions.git
branch = main
[submodule "Tweaks/YTABConfig"]
path = Tweaks/YTABConfig
url = https://github.com/PoomSmart/YTABConfig.git
branch = main
[submodule "Tweaks/FLEXing"]
path = Tweaks/FLEXing
url = https://github.com/PoomSmart/FLEXing
branch = rootless
path = Extensions
url = https://github.com/CrossiDev-Studio/OpenYoutubeAndShorts.git
branch = main
[submodule "Tweaks/Alderis"]
path = Tweaks/Alderis
url = https://github.com/hbang/Alderis.git
[submodule "Tweaks/RemoteLog"]
path = Tweaks/RemoteLog
url = https://github.com/Muirey03/RemoteLog
path = Tweaks/Alderis
url = https://github.com/hbang/Alderis.git
[submodule "Tweaks/DontEatMyContent"]
path = Tweaks/DontEatMyContent
url = https://github.com/arichornloverALT/DontEatMyContent
[submodule "Tweaks/iSponsorBlock"]
path = Tweaks/iSponsorBlock
url = https://github.com/Galactic-Dev/iSponsorBlock.git
branch = master
[submodule "Tweaks/YTClassicVideoQuality"]
path = Tweaks/YTClassicVideoQuality
url = https://github.com/PoomSmart/YTClassicVideoQuality.git
[submodule "Tweaks/NoYTPremium"]
path = Tweaks/NoYTPremium
url = https://github.com/PoomSmart/NoYTPremium.git
[submodule "Tweaks/YTSpeed"]
path = Tweaks/YTSpeed
url = https://github.com/arichornloverALT/YTSpeed.git
[submodule "Tweaks/YouTube-X"]
path = Tweaks/YouTube-X
url = https://github.com/PoomSmart/YouTube-X/
path = Tweaks/DontEatMyContent
url = https://github.com/aricloverEXTRA/DontEatMyContent.git
[submodule "Tweaks/FLEXing"]
path = Tweaks/FLEXing
url = https://github.com/PoomSmart/FLEXing.git
branch = rootless
[submodule "Tweaks/IAmYouTube"]
path = Tweaks/IAmYouTube
url = https://github.com/PoomSmart/IAmYouTube.git
[submodule "Tweaks/YTHoldForSpeed"]
path = Tweaks/YTHoldForSpeed
url = https://github.com/arichornloverALT/YTHoldForSpeed.git
[submodule "Tweaks/MrBeastify"]
path = Tweaks/MrBeastify
url = https://github.com/arichornloverALT/MrBeastify.git
branch = main
[submodule "Tweaks/uYouLocalization"]
path = Tweaks/uYouLocalization
url = https://github.com/dayanch96/uYouLocalization.git
path = Tweaks/IAmYouTube
url = https://github.com/PoomSmart/IAmYouTube.git
[submodule "Tweaks/NoYTPremium"]
path = Tweaks/NoYTPremium
url = https://github.com/PoomSmart/NoYTPremium.git
[submodule "Tweaks/PSHeader"]
path = Tweaks/PSHeader
url = https://github.com/PoomSmart/PSHeader.git
[submodule "Tweaks/RemoteLog"]
path = Tweaks/RemoteLog
url = https://github.com/Muirey03/RemoteLog.git
[submodule "Tweaks/Return-YouTube-Dislikes"]
path = Tweaks/Return-YouTube-Dislikes
url = https://github.com/aricloverEXTRA/Return-YouTube-Dislikes.git
[submodule "Tweaks/YouGroupSettings"]
path = Tweaks/YouGroupSettings
url = https://github.com/arichornloverALT/YouGroupSettings.git
[submodule "Tweaks/YouTimeStamp"]
path = Tweaks/YouTimeStamp
url = https://github.com/arichornloverALT/YouTimeStamp.git
[submodule "Tweaks/protobuf"]
path = Tweaks/protobuf
url = https://github.com/protocolbuffers/protobuf.git
path = Tweaks/YouGroupSettings
url = https://github.com/PoomSmart/YouGroupSettings.git
[submodule "Tweaks/YouLoop"]
path = Tweaks/YouLoop
url = https://github.com/bhackel/YouLoop.git
path = Tweaks/YouLoop
url = https://github.com/aricloverEXALT/YouLoop.git
[submodule "Tweaks/YouMute"]
path = Tweaks/YouMute
url = https://github.com/PoomSmart/YouMute.git
branch = main
[submodule "Tweaks/YouPiP"]
path = Tweaks/YouPiP
url = https://github.com/PoomSmart/YouPiP.git
branch = main
[submodule "Tweaks/YouQuality"]
path = Tweaks/YouQuality
url = https://github.com/PoomSmart/YouQuality.git
branch = main
[submodule "Tweaks/YouSlider"]
path = Tweaks/YouSlider
url = https://github.com/PoomSmart/YouSlider.git
[submodule "Tweaks/YouSpeed"]
path = Tweaks/YouSpeed
url = https://github.com/PoomSmart/YouSpeed.git
[submodule "Tweaks/YouTimeStamp"]
path = Tweaks/YouTimeStamp
url = https://github.com/aricloverEXTRA/YouTimeStamp.git
[submodule "Tweaks/YouTube-X"]
path = Tweaks/YouTube-X
url = https://github.com/PoomSmart/YouTube-X.git
[submodule "Tweaks/YouTubeHeader"]
path = Tweaks/YouTubeHeader
url = https://github.com/aricloverEXTRA/YouTubeHeader.git
branch = main
[submodule "Tweaks/YTABConfig"]
path = Tweaks/YTABConfig
url = https://github.com/PoomSmart/YTABConfig.git
branch = main
[submodule "Tweaks/YTClassicVideoQuality"]
path = Tweaks/YTClassicVideoQuality
url = https://github.com/PoomSmart/YTClassicVideoQuality.git
[submodule "Tweaks/YTHoldForSpeed"]
path = Tweaks/YTHoldForSpeed
url = https://github.com/aricloverEXTRA/YTHoldForSpeed.git
[submodule "Tweaks/YTIcons"]
path = Tweaks/YTIcons
url = https://github.com/PoomSmart/YTIcons.git
[submodule "Tweaks/YTUHD"]
path = Tweaks/YTUHD
url = https://github.com/aricloverEXTRA/YTUHD.git
branch = master
[submodule "Tweaks/YTVideoOverlay"]
path = Tweaks/YTVideoOverlay
url = https://github.com/PoomSmart/YTVideoOverlay.git
branch = main
[submodule "Tweaks/iSponsorBlock"]
path = Tweaks/iSponsorBlock
url = https://github.com/Galactic-Dev/iSponsorBlock.git
branch = master
[submodule "Tweaks/protobuf"]
path = Tweaks/protobuf
url = https://github.com/protocolbuffers/protobuf.git
[submodule "Tweaks/uYouLocalization"]
path = Tweaks/uYouLocalization
url = https://github.com/dayanch96/uYouLocalization.git

1
Bundles/YouSlider.bundle Symbolic link
View file

@ -0,0 +1 @@
../Tweaks/YouSlider/layout/Library/Application Support/YouSlider.bundle

1
Bundles/YouSpeed.bundle Symbolic link
View file

@ -0,0 +1 @@
../Tweaks/YouSpeed/layout/Library/Application Support/YouSpeed.bundle

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -60,6 +60,9 @@
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
"REPLACE_YT_DOWNLOAD_WITH_UYOU" = "Replace YouTube's download with uYou's";
"REPLACE_YT_DOWNLOAD_WITH_UYOU_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 Video controls overlay options";
@ -167,6 +170,8 @@
"ENABLE_PORTRAIT_FULLSCREEN" = "Enable Portrait Fullscreen";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "Enables Portrait Fullscreen on the YouTube App. App restart is required.";
"FULLSCREEN_TO_THE_RIGHT" = "Fullscreen to the Right";
"FULLSCREEN_TO_THE_RIGHT_DESC" = "Force the video to always go to landscape right. App restart is required.";
"ENABLE_TAP_TO_SEEK" = "Enable Tap To Seek";
"ENABLE_TAP_TO_SEEK_DESC" = "Jump to anywhere in a video by single-tapping the seek bar";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Disable pull-to-fullscreen gesture";
@ -254,7 +259,9 @@
"LOW_CONTRAST_MODE_SELECTOR" = "Low Contrast Mode Selector";
"LOW_CONTRAST_MODE_ERROR_1" = "You are using v%@ which is a discontinued version of YouTube that no longer works. Please use v17.33.2-17.38.10 in order to use LowContrastMode.";
"LOW_CONTRAST_MODE_ERROR_2" = "LowContrastMode is only available for app versions v17.33.2-v17.38.10. \nYou are currently using v%@. \nWorkaround: if you want to use this then I recommend enabling \"Fix LowContrastMode\" Option.";
"FIX_LOWCONTRASTMODE" = "Fix LowContrastMode";
"CLASSIC_VIDEO_PLAYER" = "Classic Video Player";
"CLASSIC_VIDEO_PLAYER_DESC" = "Restores the classic video player features from v16.xx.x, including pinch-to-fullscreen.";
"FIX_LOWCONTRASTMODE" = "Fix LowContrastMode (Deprecated)";
"FIX_LOWCONTRASTMODE_DESC" = "This will fix and enable the LowContrastMode functionality by Spoofing to YouTube v17.38.10. App restart is required.";
"DISABLE_MODERN_BUTTONS" = "Disable Modern Buttons";
"DISABLE_MODERN_BUTTONS_DESC" = "This will remove the some of the new Modern/Chip Buttons in the YouTube App. App restart is required.";

View file

@ -1,15 +1,15 @@
// About
"ABOUT" = "アプリについて";
"ABOUT" = "情報";
"VERSION" = "バージョン";
"VERSION_CHECK" = "ここをタップしてアップデートを確認";
"VERSION_CHECK" = "ここをタップしてアップデートを確認";
"REPORT_AN_ISSUE" = "不具合を報告";
"ADD_TITLE" = "タイトルをここに追加...";
"ADD_TITLE" = "タイトルをここに追加";
"QUIT_YOUTUBE" = "YouTubeを終了";
"QUIT_YOUTUBE" = "YouTube を終了";
"RESTART_YOUTUBE" = "変更を適用するためにYouTubeを再起動";
"RESTART_YOUTUBE" = "変更を適用するために YouTube を再起動します";
// App appearance
"APP_THEME" = "🎨 アプリのテーマ";
@ -18,16 +18,16 @@
"DARK_THEME" = "ダークテーマ";
"DEFAULT_THEME" = "デフォルト";
"DEFAULT_THEME_DESC" = "";
"DEFAULT_THEME_DESC" = "デフォルトのテーマ";
"OLD_DARK_THEME" = "明るいグレー";
"OLD_DARK_THEME_DESC" = "以前のダークテーマ";
"OLD_DARK_THEME_DESC" = "古いダークテーマ";
"OLED_DARK_THEME" = "OLED (実験的)";
"OLED_DARK_THEME_2" = "OLED";
"OLED_DARK_THEME_DESC" = "純粋な黒のダークテーマ";
"OLED_KEYBOARD" = "OLEDキーボード (実験的)";
"OLED_KEYBOARD" = "OLED キーボード (実験的)";
"OLED_KEYBOARD_DESC" = "";
// Video player options
@ -37,29 +37,32 @@
"SLIDE_TO_SEEK_DESC" = "スライドシークジェスチャーを有効にします。";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "ダブルタップシークを無効化";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "ダブルタップシークを無効にします。";
"SNAP_TO_CHAPTER" = "チャプターに合わせてのスクラブを無効化";
"SNAP_TO_CHAPTER_DESC" = "動画を飛ばす際にチャプターに沿ってスクラブされるのを無効にします。";
"PINCH_TO_ZOOM" = "ピンチで拡大を無効化";
"PINCH_TO_ZOOM_DESC" = "";
"PINCH_TO_ZOOM_DESC" = "動画をピンチして拡大する機能を無効化します。";
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効にする";
"YT_MINIPLAYER_DESC" = "ミニプレーヤーが使えない動画(子ども向けの動画など)がありますが、このオプションでバイパスできます。";
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効";
"YT_MINIPLAYER_DESC" = "ミニプレーヤーで再生できない動画(子ども向けの動画など)を再生できるようにします。";
"HIDE_REMIX_BUTTON" = "リミックスボタンを非表示";
"HIDE_REMIX_BUTTON" = "[リミックス] ボタンを非表示";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "クリップボタンを非表示";
"HIDE_CLIP_BUTTON" = "[クリップ] ボタンを非表示";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "オフラインボタンを非表示";
"HIDE_DOWNLOAD_BUTTON" = "[オフライン] ボタンを非表示";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "標準の音量HUDを利用する";
"STOCK_VOLUME_HUD" = "iOS 標準の音量 HUD を使用";
"STOCK_VOLUME_HUD_DESC" = "";
"REPLACE_YT_DOWNLOAD_WITH_UYOU" = "YouTube のダウンロード機能を置換";
"REPLACE_YT_DOWNLOAD_WITH_UYOU_DESC" = "YouTube のダウンロード機能を uYou のものに置き換えます。";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 動画コントロールのオーバーレイ設定";
@ -69,230 +72,237 @@
"HIDE_SUBTITLES_BUTTON" = "字幕ボタンを非表示";
"HIDE_SUBTITLES_BUTTON_DESC" = "";
"HIDE_HUD_MESSAGES" = "HUDメッセージを非表示";
"HIDE_HUD_MESSAGES_DESC" = "特定のアクション後に表示されるスナックバーを非表示にします(例: 字幕がオン/オフになりました など)";
"HIDE_HUD_MESSAGES" = "HUD メッセージを非表示";
"HIDE_HUD_MESSAGES_DESC" = "特定のアクション後に表示されるスナックバーを非表示にします(例: [字幕がオン/オフになりました] など)";
"HIDE_PAID_PROMOTION_CARDS" = "有料プロモーションカードを非表示";
"HIDE_PAID_PROMOTION_CARDS" = "有料プロモーションバナーを非表示";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "";
"HIDE_CHANNEL_WATERMARK" = "チャンネルのウォーターマークを非表示";
"HIDE_CHANNEL_WATERMARK_DESC" = "";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "前へ/次へボタンを非表示";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "前の動画に戻る / 次の動画に進むボタンを非表示";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "プレイリストを含む全ての動画から非表示にします。";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "前へ/次へボタンを置き換える";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "前へ/次へボタンを早送り/巻き戻しボタンに置き換えます。";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "早送り/巻き戻しボタンに置換";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "前の動画に戻る/次の動画に進むボタンを早送り/巻き戻しボタンに置き換えます。";
"RED_PROGRESS_BAR" = "赤いプログレスバー";
"RED_PROGRESS_BAR_DESC" = "";
"RED_PROGRESS_BAR_DESC" = "プログレスバーの色を赤に変更します。";
"HIDE_HOVER_CARD" = "YTNoHoverCards";
"HIDE_HOVER_CARD_DESC" = "動画のエンドスクリーンを非表示にします。";
"HIDE_RIGHT_PANEL" = "フルスクリーン時の右側パネルを非表示";
"HIDE_RIGHT_PANEL_DESC" = "横向きの時、右パネル(チャットなど)を非表示にします。";
"HIDE_RIGHT_PANEL" = "全画面表示時の右側パネルを非表示";
"HIDE_RIGHT_PANEL_DESC" = "全画面表示で、右パネル(概要欄やチャットなど)を非表示にします。";
// Shorts controls overlay options
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 ショート動画のオーバーレイ設定";
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 ショートのオーバーレイ設定";
"HIDE_SUPER_THANKS" = "「Super Thanksを購入」バナーを非表示";
"HIDE_SUPER_THANKS_DESC" = "";
"HIDE_SUPER_THANKS" = "[Super Thanks を購入] バナーを非表示";
"HIDE_SUPER_THANKS_DESC" = "[Super Thanks を購入] バナーを非表示にします";
"HIDE_SUBCRIPTIONS" = "チャンネル登録ボタンを非表示";
"HIDE_SUBCRIPTIONS_DESC" = "";
"HIDE_SUBCRIPTIONS" = "[チャンネル登録] ボタンを非表示";
"HIDE_SUBCRIPTIONS_DESC" = "[チャンネル登録] ボタンを非表示にします";
"DISABLE_RESUME_TO_SHORTS" = "ショート動画からの再開を無効化";
"DISABLE_RESUME_TO_SHORTS_DESC" = "ショート動画を視聴中にアプリを終了し、再度開いた際にショートから再開されるのを防ぎます。";
"DISABLE_RESUME_TO_SHORTS" = "ショートの再開を無効化";
"DISABLE_RESUME_TO_SHORTS_DESC" = "ショートを視聴中にアプリを終了し、再度開いた際にショート再開されるのを防ぎます。";
// Miscellaneous
"MISCELLANEOUS" = "🔎 その他";
"HIDE_UYOU" = "uYouタブを非表示";
"HIDE_ISPONSORBLOCK" = "iSponsorBlockボタンを非表示";
"HIDE_UYOU" = "uYou タブを非表示";
"HIDE_ISPONSORBLOCK" = "iSponsorBlock ボタンを非表示";
"CAST_CONFIRM" = "YTCastConfirm";
"CAST_CONFIRM_DESC" = "キャスト前に確認の警告を表示します。";
"CAST_CONFIRM_DESC" = "キャストを開始する前に確認の警告を表示します。";
"CASTING" = "キャスト";
"MSG_ARE_YOU_SURE" = "本当にキャストを開始しますか?";
"MSG_ARE_YOU_SURE" = "キャストを開始しますか?";
"MSG_YES" = "はい";
"MSG_CANCEL" = "いいえ";
"MSG_CANCEL" = "キャンセル";
"DISABLE_HINTS" = "ヒントを非表示";
"DISABLE_HINTS_DESC" = "アプリ初回起動時に表示されるYouTubeのヒントを非表示にします。";
"DISABLE_HINTS_DESC" = "アプリ初回起動時に表示される YouTube のヒントを非表示にします。";
"ENABLE_YT_STARTUP_ANIMATION" = "YouTube起動時にアニメーションを表示";
"ENABLE_YT_STARTUP_ANIMATION" = "YouTube 起動時にアニメーションを表示";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"HIDE_CHIP_BAR" = "トップバーを非表示";
"HIDE_CHIP_BAR_DESC" = "ホームと登録チャンネルのトップバー(すべて,音楽,ゲーム,続きを見る など)を非表示にします。";
"HIDE_CHIP_BAR_DESC" = "ホームと登録チャンネルのトップバー([すべて]、[音楽]、[ゲーム]、[続きを見る] など)を非表示にします。";
"HIDE_PLAY_NEXT_IN_QUEUE" = "「キューの最初に追加」を非表示";
"HIDE_PLAY_NEXT_IN_QUEUE" = "[キューの最初に追加] を非表示";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "";
"IPHONE_LAYOUT" = "iPhoneのレイアウトを強制";
"IPHONE_LAYOUT" = "iPhone のレイアウトを強制";
"IPHONE_LAYOUT_DESC" = "";
"NEW_MINIPLAYER_STYLE" = "BigYTMiniPlayer";
"NEW_MINIPLAYER_STYLE_DESC" = "新しいミニプレーヤーバー";
"NEW_MINIPLAYER_STYLE_DESC" = "新しいミニプレーヤーバーのスタイル";
"YT_RE_EXPLORE" = "YTReExplore";
"YT_RE_EXPLORE_DESC" = "ショートタブを探索タブに置き換えます。";
"YT_RE_EXPLORE_DESC" = "[ショート] タブを [探索] タブに置き換えます。";
"ENABLE_FLEX" = "FLEXを有効化";
"ENABLE_FLEX_DESC" = "デバッグ用のFLEXを有効にします。";
"ENABLE_FLEX" = "FLEX を有効化";
"ENABLE_FLEX_DESC" = "デバッグ用の FLEX を有効にします。";
"FIX_GOOGLE_SIGNIN" = "Googleのサインインを修正 (TrollStoreユーザーのみ)";
"FIX_GOOGLE_SIGNIN_DESC" = "Googleアカウントでサインインできない場合で、アプリがTrollStore経由でインストールされている場合のみ、このオプションをオンにしてください。通常通りサインインできる場合はオフのままにしてください。アプリの再起動が必要です。";
"FIX_GOOGLE_SIGNIN" = "Google のログインを修正 (TrollStoreユーザーのみ)";
"FIX_GOOGLE_SIGNIN_DESC" = "Google アカウントでログインできず、かつアプリが TrollStore 経由でインストールした場合にのみ、このオプションを有効にしてください。正常にログインできる場合は、無効のままにしてください。アプリの再起動が必要です。";
// uYouEnhanced Localization
"SUPPORT_THE_DEVELOPERS" = "開発者を支援する";
"SUPPORT_THE_DEVELOPERS" = "開発者を支援";
"COPY_SETTINGS" = "設定をコピー";
"COPY_SETTINGS_DESC" = "現在のすべての設定をクリップボードにコピーします";
"COPY_SETTINGS_DESC" = "現在のすべての設定をクリップボードにコピーします";
"PASTE_SETTINGS" = "設定を貼り付け";
"PASTE_SETTINGS_DESC" = "クリップボードから設定を貼り付けて適用します";
"EXPORT_SETTINGS" = "Export Settings";
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
"IMPORT_SETTINGS" = "Import Settings";
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
"PASTE_SETTINGS_DESC" = "クリップボードから設定を貼り付けて適用します";
"EXPORT_SETTINGS" = "設定をエクスポート";
"EXPORT_SETTINGS_DESC" = "現在のすべての設定を「.txt」ファイルにエクスポートします。";
"IMPORT_SETTINGS" = "設定をインポート";
"IMPORT_SETTINGS_DESC" = "タップして設定 (.txt) をインポートします";
"REPLACE_COPY_AND_PASTE_BUTTONS" = "[設定をコピー] と [設定を貼り付け] ボタンを置換";
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "[設定をコピー] と [設定を貼り付け] ボタンを置き換えます。";
"UYOUENHANCED_ESSENTIAL_MENU" = "uYouEnhanced エクストラメニュー";
"CHANGE_APP_ICON" = "アプリアイコンを変更";
"CLEAR_NOTIFICATIONS" = "通知をクリア";
"CLEAR_NOTIFICATIONS_DESC" = "すべてのアプリ通知を強制的にクリアします(サイドロード時に推奨)";
"CLEAR_NOTIFICATIONS" = "通知を削除";
"CLEAR_NOTIFICATIONS_DESC" = "すべてのアプリ通知を強制的に削除します(サイドロード時に推奨)";
"CUSTOM_DARK_THEME" = "カスタムダークテーマ";
"ENABLE_PORTRAIT_FULLSCREEN" = "縦向きフルスクリーンを有効化";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "YouTubeアプリで縦向きフルスクリーンを有効にします。アプリの再起動が必要です。";
"ENABLE_PORTRAIT_FULLSCREEN" = "縦向きの全画面表示を有効化";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "縦向きの全画面表示を有効にします。アプリの再起動が必要です。";
"FULLSCREEN_TO_THE_RIGHT" = "右向きに全画面表示";
"FULLSCREEN_TO_THE_RIGHT_DESC" = "動画を常に右横向きで再生するように強制します。アプリの再起動が必要です";
"ENABLE_TAP_TO_SEEK" = "タップしてシークを有効化";
"ENABLE_TAP_TO_SEEK_DESC" = "シークバーを1回タップするだけでビデオ内の任意の場所にジャンプします。";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "フルスクリーンへの引っ張りジェスチャーを無効化";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "縦のフルスクリーンへ入るドラッグジェスチャーを無効にします。横向きのビデオにのみ適用されます。";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER" = "ダブルタップでチャプタースキップを無効化";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC" = "前方/後方にチャプターをスキップする2本指のダブルタップジェスチャーを無効にします。";
"ENABLE_TAP_TO_SEEK_DESC" = "シークバーを 1 回タップして動画内の任意の場所にジャンプします。";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "全画面表示への引っ張りジェスチャーを無効化";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "縦の全画面表示へ入る引っ張りジェスチャーを無効にします。横向きの動画にのみ適用されます。";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER" = "ダブルタップでチャプタースキップを無効化";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC" = "チャプターごとにスキップする 2 本指ダブルタップジェスチャーを無効にします。";
"ALWAYS_USE_REMAINING_TIME" = "常に残り時間形式を使用";
"ALWAYS_USE_REMAINING_TIME_DESC" = "プレーヤーバーに表示される時間表示のデフォルトを残り時間形式に変更します。";
"ALWAYS_USE_REMAINING_TIME_DESC" = "プレーヤーバーに表示される時間表示を残り時間形式に変更します。";
"DISABLE_TOGGLE_TIME_REMAINING" = "残り時間の切り替えを無効化";
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "経過時間から残り時間への切り替えを無効にします。「常に残り時間形式を使用」オプションと一緒に使用してください。";
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "経過時間から残り時間への切り替えを無効にします。[常に残り時間形式を使用] オプションと一緒に使用してください。";
"ENABLE_SHARE_BUTTON" = "共有ボタンを有効化";
"ENABLE_SHARE_BUTTON_DESC" = "ビデオコントロールオーバーレイに共有ボタンを追加します。";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "再生リストに保存ボタンを有効化";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "ビデオコントロールオーバーレイに再生リストに保存ボタンを追加します。";
"HIDE_YTMUSIC_BUTTON" = "Youtube Musicボタンを隠す";
"HIDE_YTMUSIC_BUTTON_DESC" = "Youtubeプレミアムで表示されるYoutube Musicボタンを非表示にします。";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN" = "フルスクリーンでビデオタイトルを隠す";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC" = "フルスクリーン時に、プレーヤー左上にある各種ボタンや動画タイトルを非表示にします。";
"HIDE_COLLAPSE_BUTTON" = "折りたたみボタンを隠す";
"HIDE_COLLAPSE_BUTTON_DESC" = "プレーヤー左上の折りたたみボタンを非表示にします。";
"HIDE_FULLSCREEN_BUTTON" = "フルスクリーンボタンを隠す";
"HIDE_FULLSCREEN_BUTTON_DESC" = "プレーヤー右下のフルスクリーンボタンを隠す。";
"HIDE_SHADOW_OVERLAY_BUTTONS" = "シャドウオーバーレイボタンを隠す";
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "再生/一時停止,前へ,次へ,早送り/巻き戻しボタンのシャドウオーバーレイを非表示にします。";
"HIDE_FULLSCREEN_ACTION_BUTTONS" = "フルスクリーンアクションボタンを隠す";
"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC" = "フルスクリーン時に、画面下部にあるボタンを非表示にします。";
"HIDE_SUGGESTED_VIDEO" = "おすすめ動画を隠す";
"HIDE_SUGGESTED_VIDEO_DESC" = "動画終了時に出現するおすすめ動画のポップアップを非表示にします。自動再生が機能しなくなります。";
"HIDE_HEATWAVES_BAR" = "ヒートウェーブバーを隠す";
"ENABLE_SHARE_BUTTON" = "[共有] ボタンを有効化";
"ENABLE_SHARE_BUTTON_DESC" = "動画コントロールオーバーレイに [共有] ボタンを追加します。";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "[再生リストに保存] ボタンを有効化";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "動画コントロールオーバーレイに [再生リストに保存] ボタンを追加します。";
"HIDE_YTMUSIC_BUTTON" = "[YouTube Music] ボタンを非表示";
"HIDE_YTMUSIC_BUTTON_DESC" = "[YouTube Music] ボタンを非表示にします。";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN" = "全画面表示状態で動画のタイトルを非表示";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC" = "全画面表示時に、プレーヤー左上にある各種ボタンや動画タイトルを非表示にします。";
"HIDE_COLLAPSE_BUTTON" = "最小化ボタンを非表示";
"HIDE_COLLAPSE_BUTTON_DESC" = "プレーヤー左上の最小化ボタンを非表示にします。";
"HIDE_FULLSCREEN_BUTTON" = "全画面表示のボタンを非表示";
"HIDE_FULLSCREEN_BUTTON_DESC" = "プレーヤー右下の全画面動画のボタンを非表示にします。";
"HIDE_SHADOW_OVERLAY_BUTTONS" = "シャドウオーバーレイボタンを非表示";
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "再生/一時停止、前へ/次へ、早送り/巻き戻しボタンのシャドウオーバーレイを非表示にします。";
"HIDE_FULLSCREEN_ACTION_BUTTONS" = "全画面アクションボタンを非表示";
"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC" = "全画面表示時に、プレーヤー下部にあるボタンを非表示にします。";
"HIDE_SUGGESTED_VIDEO" = "おすすめ動画を非表示";
"HIDE_SUGGESTED_VIDEO_DESC" = "動画終了時に出現するおすすめ動画のポップアップを非表示にします。\n\n注意: 自動再生が機能しなくなります。";
"HIDE_HEATWAVES_BAR" = "ヒートウェーブバーを非表示";
"HIDE_HEATWAVES_BAR_DESC" = "プレーヤーのプログレスバーに表示されるヒートウェーブバーを非表示にします。アプリの再起動が必要です。";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY" = "ダブルタップしてシークオーバーレイを隠す";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY" = "ダブルタップのシークオーバーレイを非表示";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC" = "プレーヤーでダブルタップした際のアニメーション付きオーバーレイを非表示にします。アプリの再起動が必要です。";
"HIDE_DARK_OVERLAY_BACKGROUND" = "ダークオーバーレイ背景を隠す";
"HIDE_DARK_OVERLAY_BACKGROUND_DESC" = "プレーヤーのダークオーバーレイ背景を非表示にします。アプリの再起動が必要です。";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN" = "フルスクリーンでのアンビエントモードを防ぐ";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC" = "フルスクリーンのプレーヤーでアンビエントモードの使用を防ぎます。アプリの再起動が必要です。";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN" = "フルスクリーンでおすすめ動画を隠す";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC" = "フルスクリーン時にプレーヤーのおすすめ動画を非表示にします。アプリの再起動が必要です。";
"HIDE_ALL_VIDEOS_UNDER_PLAYER" = "プレーヤー下のすべてのビデオを隠す";
"HIDE_DARK_OVERLAY_BACKGROUND" = "ダークオーバーレイの背景を非表示";
"HIDE_DARK_OVERLAY_BACKGROUND_DESC" = "プレーヤーのダークオーバーレイ背景を非表示にします。アプリの再起動が必要です。";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN" = "全画面表示時のアンビエントモードを無効化";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC" = "全画面表示時のプレーヤーでのアンビエントモードの使用を防ぎます。アプリの再起動が必要です。";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN" = "全画面表示時におすすめ動画を非表示";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC" = "全画面表示時にプレーヤーのおすすめ動画を非表示にします。アプリの再起動が必要です。";
"HIDE_ALL_VIDEOS_UNDER_PLAYER" = "プレーヤー下のすべての動画を非表示";
"HIDE_ALL_VIDEOS_UNDER_PLAYER_DESC" = "プレーヤーの下にあるすべての動画を非表示にします。端末の向きに依存します。";
"SHORTS_QUALITY_PICKER" = "ショートの画質を選択";
"SHORTS_QUALITY_PICKER_DESC" = "YouTubeショートの画質選択を有効にします。";
"SHORTS_QUALITY_PICKER_DESC" = "YouTube ショートの画質選択を有効にします。";
"VIDEO_PLAYER_BUTTON_OPTIONS" = "プレーヤーのボタンの設定";
"RED_SUBSCRIBE_BUTTON" = "赤いチャンネル登録ボタン";
"RED_SUBSCRIBE_BUTTON_DESC" = "ボタンの色を赤に戻します。";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER" = "プレーヤー下のボタンコンテナを隠す";
"RED_SUBSCRIBE_BUTTON_DESC" = "[チャンネル登録] ボタンの色を赤に戻します。";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER" = "ボタンコンテナを非表示";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC" = "プレーヤーの下にあるボタンコンテナを非表示にします。";
"HIDE_CONNECT_BUTTON" = "プレーヤー下の接続ボタンを隠す";
"HIDE_CONNECT_BUTTON_DESC" = "プレーヤーの下にある接続ボタンを非表示にします。";
"HIDE_SHARE_BUTTON" = "プレーヤー下の共有ボタンを隠す";
"HIDE_SHARE_BUTTON_DESC" = "プレーヤーの下にある共有ボタンを非表示にします。";
"HIDE_THANKS_BUTTON" = "プレーヤー下のThanksボタンを隠す";
"HIDE_THANKS_BUTTON_DESC" = "プレーヤーの下にあるThanksボタンを非表示にします。";
"HIDE_SAVE_BUTTON" = "プレーヤー下の保存ボタンを隠す";
"HIDE_SAVE_BUTTON_DESC" = "プレーヤーの下にある保存ボタンを非表示にします。";
"HIDE_REPORT_BUTTON" = "プレーヤー下の報告ボタンを隠す";
"HIDE_REPORT_BUTTON_DESC" = "プレーヤーの下にある報告ボタンを非表示にします。";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "プレーヤー下のコメントプレビューを隠す";
"HIDE_CONNECT_BUTTON" = "[接続] ボタンを非表示";
"HIDE_CONNECT_BUTTON_DESC" = "プレーヤーの下にある [接続] ボタンを非表示にします。";
"HIDE_SHARE_BUTTON" = "[共有] ボタンを非表示";
"HIDE_SHARE_BUTTON_DESC" = "プレーヤーの下にある [共有] ボタンを非表示にします。";
"HIDE_THANKS_BUTTON" = "[Thanks] ボタンを非表示";
"HIDE_THANKS_BUTTON_DESC" = "プレーヤーの下にある [Thanks] ボタンを非表示にします。";
"HIDE_SAVE_BUTTON" = "[保存] ボタンを非表示";
"HIDE_SAVE_BUTTON_DESC" = "プレーヤーの下にある [保存] ボタンを非表示にします。";
"HIDE_REPORT_BUTTON" = "[報告] ボタンを非表示";
"HIDE_REPORT_BUTTON_DESC" = "プレーヤーの下にある [報告] ボタンを非表示にします。";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "コメントプレビューを非表示";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "プレーヤーの下にあるコメントのプレビューを非表示にします。";
"HIDE_COMMENT_SECTION_BUTTON" = "プレーヤー下のコメント欄を隠す";
"HIDE_COMMENT_SECTION_BUTTON" = "コメント欄を非表示";
"HIDE_COMMENT_SECTION_BUTTON_DESC" = "プレーヤーの下にあるコメント欄を非表示にします。";
"APP_SETTINGS_OVERLAY_OPTIONS" = "アプリ設定のオーバーレイの設定";
"APP_SETTINGS_OVERLAY_OPTIONS" = "YouTube 設定メニューの表示/非表示";
"HIDE_ACCOUNT_SECTION" = "「アカウント」を非表示にする";
"HIDE_AUTOPLAY_SECTION" = "「自動再生」を非表示にする";
"HIDE_TRY_NEW_FEATURES_SECTION" = "「試験運用版の新機能を試す」を非表示にする";
"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION" = "「動画の画質設定」を非表示にする";
"HIDE_NOTIFICATIONS_SECTION" = "「通知」を非表示にする";
"HIDE_MANAGE_ALL_HISTORY_SECTION" = "「すべての履歴を管理」を非表示にする";
"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION" = "「YouTubeでのデータ」を非表示にする";
"HIDE_PRIVACY_SECTION" = "「プライバシー」を非表示にする";
"HIDE_LIVE_CHAT_SECTION" = "「チャット」を非表示にする";
"HIDE_GET_YOUTUBE_PREMIUM_SECTION" = "「YouTubeプレミアムを入手」を非表示にする";
"HIDE_ACCOUNT_SECTION" = "[アカウント] メニューを非表示";
"HIDE_AUTOPLAY_SECTION" = "[自動再生] メニューを非表示";
"HIDE_TRY_NEW_FEATURES_SECTION" = "[試験運用版の新機能を試す] メニューを非表示";
"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION" = "[動画の画質設定] メニューを非表示";
"HIDE_NOTIFICATIONS_SECTION" = "[通知] メニューを非表示";
"HIDE_MANAGE_ALL_HISTORY_SECTION" = "[すべての履歴を管理] メニューを非表示";
"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION" = "[YouTube でのデータ] メニューを非表示";
"HIDE_PRIVACY_SECTION" = "[プライバシー] メニューを非表示";
"HIDE_LIVE_CHAT_SECTION" = "[チャット] メニューを非表示";
"HIDE_GET_YOUTUBE_PREMIUM_SECTION" = "[YouTube Premium を入手] メニューを非表示";
"UI_INTERFACE_OPTIONS" = "UIインターフェースの設定";
"UI_INTERFACE_OPTIONS" = "UI インターフェースの設定";
"HIDE_HOME_TAB" = "ホームタブを隠す";
"HIDE_HOME_TAB" = "ホームタブを非表示";
"LOW_CONTRAST_MODE" = "低コントラストモード";
"LOW_CONTRAST_MODE_DESC" = "テキストとボタンの色のコントラストを下げ、2020年以前のYouTubeアプリインターフェースに近づけます。";
"LOW_CONTRAST_MODE_DESC" = "テキストとボタンの色のコントラストを下げ、2020 年以前の YouTube アプリインターフェースに近づけます。";
"LOW_CONTRAST_MODE_SELECTOR" = "低コントラストモードを選択";
"LOW_CONTRAST_MODE_ERROR_1" = "あなたは、もはや動作しないYouTubeの廃止されたバージョンv%@を使用しています。低コントラストモードを使用するには、v17.33.2-17.38.10を使用してください。";
"LOW_CONTRAST_MODE_ERROR_2" = "低コントラストモードはv17.33.2-v17.38.10でのみ利用可能です。\nあなたは現在、v%@を使用しています。\n回避策: これを使用したい場合は「低コントラストモードを修正」を有効にするのがおすすめです。";
"FIX_LOWCONTRASTMODE" = "低コントラストモードを修正";
"FIX_LOWCONTRASTMODE_DESC" = "YouTube v17.38.10に偽装することにより、低コントラストモードの機能を修正して有効化します。アプリの再起動が必要です。";
"DISABLE_MODERN_BUTTONS" = "モダンなボタンを無効化";
"DISABLE_MODERN_BUTTONS_DESC" = "YouTubeアプリの新しいモダン/チップボタンの一部を削除します。アプリの再起動が必要です。";
"LOW_CONTRAST_MODE_ERROR_1" = "現在使用中のバージョン v%@ はサポートが終了している YouTube バージョンです。低コントラストモードを使用するには v17.33.2 ~ 17.38.10 を使用してください。";
"LOW_CONTRAST_MODE_ERROR_2" = "低コントラストモードは v17.33.2 ~ v17.38.10 でのみ利用可能です。\n現在使用中のバージョンは v%@ です。\n回避策: この機能を使用したい場合は「低コントラストモードを修正」オプションを有効にすることを推奨します。";
"CLASSIC_VIDEO_PLAYER" = "古い動画プレーヤー";
"CLASSIC_VIDEO_PLAYER_DESC" = "v16.xx.x のクラシック動画プレーヤー機能(ピンチ操作による全画面表示を含む)を復元します。";
"FIX_LOWCONTRASTMODE" = "低コントラストモードを修正 (非推奨)";
"FIX_LOWCONTRASTMODE_DESC" = "YouTube v17.38.10 に偽装することにより、低コントラストモードの機能を修正して有効化します。アプリの再起動が必要です。";
"DISABLE_MODERN_BUTTONS" = "新しいボタンを無効化";
"DISABLE_MODERN_BUTTONS_DESC" = "YouTube アプリの新しいモダン/チップボタンの一部を削除します。アプリの再起動が必要です。";
"DISABLE_ROUNDED_CORNERS_ON_HINTS" = "ヒントの角丸を無効化";
"DISABLE_ROUNDED_CORNERS_ON_HINTS_DESC" = "アプリのヒントに角丸を含まないようにします。アプリの再起動が必要です。";
"DISABLE_MODERN_FLAGS" = "モダンなA/Bフラグを無効化";
"DISABLE_MODERN_FLAGS_DESC" = "デフォルトで有効にされたモダンなフラグをすべてオフにします。アプリの再起動が必要です。";
"YTNOMODERNUI" = "特定のUI関連オプションを有効化YTNoModernUI";
"YTNOMODERNUI_DESC" = "アプリの外観や操作感をクラシックな雰囲気にすることができます。アプリの再起動が必要です。";
"ENABLE_APP_VERSION_SPOOFER" = "アプリバージョン偽装を有効にする";
"ENABLE_APP_VERSION_SPOOFER_DESC" = "バージョン偽装を使用し、以下から好みのバージョンを選択します。アプリの再起動が必要です。";
"VERSION_SPOOFER_SELECTOR" = "偽装バージョンセレクター";
"DISABLE_ROUNDED_CORNERS_ON_HINTS_DESC" = "これにより、アプリ内のヒントに丸い角が含まれなくなります。アプリの再起動が必要です。";
"DISABLE_MODERN_FLAGS" = "新しい A/B フラグを無効化";
"DISABLE_MODERN_FLAGS_DESC" = "これにより、デフォルトで有効になっている新しいフラグをすべてオフにします。アプリの再起動が必要です。";
"YTNOMODERNUI" = "特定の UI 関連オプションを有効化 (YTNoModernUI)";
"YTNOMODERNUI_DESC" = "アプリの外観や操作感を昔の雰囲気にすることができます。アプリの再起動が必要です。";
"ENABLE_APP_VERSION_SPOOFER" = "アプリのバージョン偽装を有効化";
"ENABLE_APP_VERSION_SPOOFER_DESC" = "バージョン偽装を使用し、以下から偽装したいバージョンを選択します。アプリの再起動が必要です。";
"VERSION_SPOOFER_SELECTOR" = "偽装するバージョンを選択";
"ADBLOCK_WORKAROUND_LITE" = "AdBlock回避Lite";
"ADBLOCK_WORKAROUND_LITE_DESC" = "弱い広告ブロックコードを使用します。uYouの広告ブロックオプションを無効にします。";
"ADBLOCK_WORKAROUND" = "AdBlock回避";
"ADBLOCK_WORKAROUND_LITE" = "AdBlock 回避策 (Lite)";
"ADBLOCK_WORKAROUND_LITE_DESC" = "弱い広告ブロックコードを使用します。uYou の広告ブロックオプションを無効にします。";
"ADBLOCK_WORKAROUND" = "AdBlock 回避";
"ADBLOCK_WORKAROUND_DESC" = "より強力な広告ブロックコードを使用します。";
"FAKE_PREMIUM" = "偽のYoutubeプレミアム";
"FAKE_PREMIUM_DESC" = "Youtubeプレミアムロゴを使用し、Youタブに偽のボタンを作成します。";
"FAKE_PREMIUM_WARNING" = "*v%@にYou*タブは存在しないため、偽のボタンは作成されません。\nしかし、*偽のプレミアムロゴ*は引き続き機能します。";
"FAKE_PREMIUM" = "偽の YouTube Premium";
"FAKE_PREMIUM_DESC" = "YouTube プレミアムロゴを使用し、[マイページ] タブに偽のボタンを作成します。";
"FAKE_PREMIUM_WARNING" = "YouTube v%@ には [マイページ] タブが存在しないため、偽の YouTube Premium ボタンは作成されません。\nただし、「偽の YouTube Premium ロゴ」は引き続き機能します。";
"FAKE_YOUR_PREMIUM_BENEFITS" = "あなたのプレミアム特典";
"FAKE_DOWNLOADS" = "ダウンロード";
"CENTER_YOUTUBE_LOGO" = "YouTubeロゴを中央に";
"CENTER_YOUTUBE_LOGO_DESC" = "公式YouTubeロゴを中央に配置します。アプリの再起動が必要です。";
"HIDE_YOUTUBE_LOGO" = "YouTubeロゴを非表示に";
"HIDE_YOUTUBE_LOGO_DESC" = "YouTubeアプリ内のYouTubeロゴを非表示にします。";
"DISABLE_ANIMATED_YOUTUBE_LOGO" = "アニメーション YouTube ロゴを無効化";
"CENTER_YOUTUBE_LOGO" = "YouTube のロゴを中央に表示";
"CENTER_YOUTUBE_LOGO_DESC" = "公式の YouTube ロゴを中央に配置します。アプリの再起動が必要です。";
"HIDE_YOUTUBE_LOGO" = "YouTube ロゴを非表示";
"HIDE_YOUTUBE_LOGO_DESC" = "YouTube アプリ内の YouTube ロゴを非表示にします。";
"STICK_NAVIGATION_BAR" = "ナビゲーションバーを固定";
"STICK_NAVIGATION_BAR_DESC" = "アプリ内をスクロールしてもナビゲーションバーが表示され続けます。";
"HIDE_COMMUNITY_POSTS" = "コミュニティ投稿を非表示にする";
"HIDE_COMMUNITY_POSTS_DESC" = "コミュニティ投稿を非表示にします。アプリの再起動が必要です。";
"HIDE_HEADER_LINKS_UNDER_PROFILE" = "プロフィール下のヘッダーリンクを非表示にする";
"STICK_NAVIGATION_BAR_DESC" = "アプリ内をスクロールしてもナビゲーションバーが表示されたままにします。";
"HIDE_COMMUNITY_POSTS" = "コミュニティ投稿を非表示";
"HIDE_COMMUNITY_POSTS_DESC" = "コミュニティ投稿を非表示にします。アプリの再起動が必要です。";
"HIDE_HEADER_LINKS_UNDER_PROFILE" = "プロフィール下のヘッダーリンクを非表示";
"HIDE_HEADER_LINKS_UNDER_PROFILE_DESC" = "チャンネルプロフィールの下にあるヘッダーリンクを非表示にします。";
"AUTO_HIDE_HOME_INDICATOR" = "自動でホームインジケーターを非表示";
"AUTO_HIDE_HOME_INDICATOR_DESC" = "アプリとのインタラクションがない時に、iOSのホームインジケーターを自動的に非表示にします。";
"HIDE_INDICATORS" = "インジケーターを非表示";
"AUTO_HIDE_HOME_INDICATOR" = "自動でホームインジケーターを非表示";
"AUTO_HIDE_HOME_INDICATOR_DESC" = "アプリを操作していない場合に、iOS のホームインジケーター(画面下部のホームバー)を自動的に非表示にします。";
"HIDE_INDICATORS" = "インジケーターを非表示";
"HIDE_INDICATORS_DESC" = "アプリ内の現在のインジケーターをすべて非表示にします。";
"FIX_CASTING" = "キャストを修正";
"FIX_CASTING_DESC" = "キャストを修正するために、特定のA/Bテストフラグを変更します。";
"FIX_CASTING_DESC" = "キャストを修正するために、特定の A/B テストフラグを変更します。";
"NEW_SETTINGS_UI" = "新しい設定 UI を使用";
"NEW_SETTINGS_UI_DESC" = "カテゴリを備えた新しい設定 UI を有効にします。";
"DEFAULT" = "デフォルト";
"CUSTOM_COLOR" = "カスタムカラー";

View file

@ -75,6 +75,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD";
"STOCK_VOLUME_HUD_DESC" = "";
"REPLACE_YT_DOWNLOAD_WITH_UYOU" = "Replace YouTube's download with uYou's";
"REPLACE_YT_DOWNLOAD_WITH_UYOU_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 Video controls overlay options";
@ -182,6 +185,8 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"ENABLE_PORTRAIT_FULLSCREEN" = "Enable Portrait Fullscreen";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "Enables Portrait Fullscreen on the YouTube App. App restart is required.";
"FULLSCREEN_TO_THE_RIGHT" = "Fullscreen to the Right";
"FULLSCREEN_TO_THE_RIGHT_DESC" = "FULLSCREEN_TO_THE_RIGHT_DESC" = "Force the video to always go to landscape right. App restart is required.";
"ENABLE_TAP_TO_SEEK" = "Enable Tap To Seek";
"ENABLE_TAP_TO_SEEK_DESC" = "Jump to anywhere in a video by single-tapping the seek bar";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Disable pull-to-fullscreen gesture";
@ -269,7 +274,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"LOW_CONTRAST_MODE_SELECTOR" = "Low Contrast Mode Selector";
"LOW_CONTRAST_MODE_ERROR_1" = "You are using v%@ which is a discontinued version of YouTube that no longer works. Please use v17.33.2-17.38.10 in order to use LowContrastMode.";
"LOW_CONTRAST_MODE_ERROR_2" = "LowContrastMode is only available for app versions v17.33.2-v17.38.10. \nYou are currently using v%@. \nWorkaround: if you want to use this then I recommend enabling \"Fix LowContrastMode\" Option.";
"FIX_LOWCONTRASTMODE" = "Fix LowContrastMode";
"CLASSIC_VIDEO_PLAYER" = "Classic Video Player";
"CLASSIC_VIDEO_PLAYER_DESC" = "Restores the classic video player features from v16.xx.x, including pinch-to-fullscreen.";
"FIX_LOWCONTRASTMODE" = "Fix LowContrastMode (Deprecated)";
"FIX_LOWCONTRASTMODE_DESC" = "This will fix and enable the LowContrastMode functionality by Spoofing to YouTube v17.38.10. App restart is required.";
"DISABLE_MODERN_BUTTONS" = "Disable Modern Buttons";
"DISABLE_MODERN_BUTTONS_DESC" = "This will remove the some of the new Modern/Chip Buttons in the YouTube App. App restart is required.";
@ -288,7 +295,7 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"ADBLOCK_WORKAROUND" = "AdBlock Workaround";
"ADBLOCK_WORKAROUND_DESC" = "Uses stronger adblocking code.";
"FAKE_PREMIUM" = "Fake Premium";
"FAKE_PREMIUM_DESC" = "Uses Premium logo and creates fake buttons in the You tab.";
"FAKE_PREMIUM_DESC" = "Uses Premium logo and creates fake buttons in the You tab. Will disable animated YouTube logo.";
"FAKE_PREMIUM_WARNING" = "The *You* Tab doesn't exist in v%@, fake buttons will not be created.\nBut the *Fake Premium Logo* will still work.";
"FAKE_YOUR_PREMIUM_BENEFITS" = "Your Premium benefits";
"FAKE_DOWNLOADS" = "Downloads";
@ -309,6 +316,8 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"HIDE_INDICATORS_DESC" = "Hides all Indicators that are currently in the App.";
"FIX_CASTING" = "Fix Casting";
"FIX_CASTING_DESC" = "Changes certain A/B flags to fix casting.";
"NEW_SETTINGS_UI" = "Use New Settings UI";
"NEW_SETTINGS_UI_DESC" = "Enables the new Settings UI with tweak categories.";
"DEFAULT" = "Default";
"CUSTOM_COLOR" = "Custom Color";

View file

@ -1,302 +1,306 @@
// About
// เกี่ยวกับ
"ABOUT" = "เกี่ยวกับ";
"VERSION" = "เวอร์ชัน uYouPlus คือ: %@";
"VERSION_CHECK" = "ดูเวอร์ชันล่าสุด";
"VERSION" = "เวอร์ชัน";
"VERSION_CHECK" = "แตะเพื่อตรวจสอบการอัปเดต!";
"REPORT_AN_ISSUE" = "รายงานปัญหา";
"ADD_TITLE" = "เพิ่มชื่อเรื่องของคุณที่นี่...";
"QUIT_YOUTUBE" = "ออกจาก YouTube";
"RESTART_YOUTUBE" = "รีสตาร์ท YouTube เพื่อให้การเปลี่ยนแปลงมีผล";
"RESTART_YOUTUBE" = "รีสตาร์ท YouTube เพื่อใช้การเปลี่ยนแปลง";
// ลักษณะของแอป
"APP_THEME" = "🎨 ลักษณะของแอป";
"THEME_OPTIONS" = "ตัวเลือกธีม";
//รูปลักษณ์ของแอป
"APP_THEME" = "ลักษณะที่ปรากฏของแอป";
"THEME_OPTIONS" = "ตัวเลือกลักษณะธีม";
"DARK_THEME" = "Dark theme";
"DARK_THEME" = "ธีมมืด";
"DEFAULT_THEME" = "ค่าเริ่มต้น";
"DEFAULT_THEME_DESC" = "YouTube มีค่าเริ่มต้นเป็นโหมดมืด ต้องรีสตาร์ทแอป";
"DEFAULT_THEME_DESC" = "";
"OLD_DARK_THEME" = "โหมดมืดแบบดั้งเดิม";
"OLD_DARK_THEME_DESC" = "โหมดมืดของ YouTube (รูปแบบสีเทา) ต้องรีสตาร์ทแอป";
"OLD_DARK_THEME" = "เทาอ่อน";
"OLD_DARK_THEME_DESC" = "ธีมมืดเก่าของ YouTube";
"OLED_DARK_THEME" = "โหมดมืด OLED (ทดลอง)";
"OLED_DARK_THEME_2" = "โหมดมืด OLED";
"OLED_DARK_THEME_DESC" = "ทำงานไม่ถูกต้องในบางกรณี การเปลี่ยนตัวเลือกนี้จำเป็นต้องรีสตาร์ทแอปพลิเคชั่น";
"OLED_DARK_THEME" = "OLED (ทดลอง)";
"OLED_DARK_THEME_2" = "OLED";
"OLED_DARK_THEME_DESC" = "ธีมมืดสีดำสนิท";
"OLED_KEYBOARD" = "แป้นพิมพ์ OLED (ทดลอง)";
"OLED_KEYBOARD_DESC" = "อาจทำงานไม่ถูกต้องในบางกรณี จำเป็นต้องรีสตาร์ทแอปพลิเคชัน";
"OLED_KEYBOARD_DESC" = "";
// Video player options
"VIDEO_PLAYER_OPTIONS" = "⏯️ ตัวเลือกผู้เล่น";
// ตัวเลือกของเครื่องเล่นวิดีโอ
"VIDEO_PLAYER_OPTIONS" = "⏯️ ตัวเลือกของเครื่องเล่นวิดีโอ";
"SLIDE_TO_SEEK" = "เปิดใช้งานสไลด์เพื่อค้นหา";
"SLIDE_TO_SEEK_DESC" = "นำสไลด์กลับมาเพื่อค้นหาท่าทาง";
"SLIDE_TO_SEEK" = "เปิดใช้งาน Slide to seek";
"SLIDE_TO_SEEK_DESC" = "นำท่าทาง Slide to seek กลับมา";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "ปิดใช้งานการแตะสองครั้งเพื่อค้นหา";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "ปิดใช้งาน double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "ปิดใช้งานการข้ามบท";
"SNAP_TO_CHAPTER_DESC" = "ปิดใช้งานการข้ามไปยังบทอัตโนมัติเมื่อวิดีโอส่งต่ออย่างรวดเร็ว ต้องรีสตาร์ทแอปพลิเคชัน";
"SNAP_TO_CHAPTER" = "ปิดใช้งาน snap to chapter";
"SNAP_TO_CHAPTER_DESC" = "ปิดการจับยึดอัตโนมัติที่บทเมื่อเลื่อนผ่านวิดีโอ";
"PINCH_TO_ZOOM" = "ปิดใช้งานการซูมด้วยท่าทาง";
"PINCH_TO_ZOOM_DESC" = "ต้องรีสตาร์ทแอปพลิเคชัน";
"PINCH_TO_ZOOM" = "ปิดใช้งาน pinch to zoom";
"PINCH_TO_ZOOM_DESC" = "";
"YT_MINIPLAYER" = "เปิดใช้งานเครื่องเล่นขนาดเล็กสำหรับวิดีโอ YouTube ทั้งหมด";
"YT_MINIPLAYER_DESC" = "ตัวอย่างเช่น ภาพยนตร์สำหรับเด็ก";
"YT_MINIPLAYER" = "เปิดใช้งาน miniplayer สำหรับทุกวิดีโอ";
"YT_MINIPLAYER_DESC" = "ไม่สามารถเปิดใช้งาน miniplayer สำหรับบางวิดีโอ (เช่น วิดีโอสำหรับเด็ก) ตัวเลือกนี้จะข้ามข้อจำกัดนี้";
"HIDE_REMIX_BUTTON" = "Hides Remix button";
"HIDE_REMIX_BUTTON" = "ซ่อนปุ่ม Remix";
"HIDE_REMIX_BUTTON_DESC" = "";
"HIDE_CLIP_BUTTON" = "Hide Clip button";
"HIDE_CLIP_BUTTON" = "ซ่อนปุ่ม Clip";
"HIDE_CLIP_BUTTON_DESC" = "";
"HIDE_DOWNLOAD_BUTTON" = "Hide Download button";
"HIDE_DOWNLOAD_BUTTON" = "ซ่อนปุ่มดาวน์โหลด";
"HIDE_DOWNLOAD_BUTTON_DESC" = "";
"STOCK_VOLUME_HUD" = "ใช้ HUD โวลุ่ม iOS ในตัว";
"STOCK_VOLUME_HUD" = "ใช้ HUD ระดับเสียง iOS ต้นฉบับ";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 ตัวเลือกการควบคุมการซ้อนทับวิดีโอ";
"REPLACE_YT_DOWNLOAD_WITH_UYOU" = "แทนที่การดาวน์โหลดของ YouTube ด้วย uYou";
"REPLACE_YT_DOWNLOAD_WITH_UYOU_DESC" = "";
"HIDE_AUTOPLAY_SWITCH" = "ซ่อนสวิตช์เล่นอัตโนมัติ";
"HIDE_AUTOPLAY_SWITCH_DESC" = "ซ่อนสวิตช์เล่นอัตโนมัติในตัวควบคุมภาพยนตร์";
// ตัวเลือกของวิดีโอควบคุมบนหน้าจอ
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "📹 ตัวเลือกการควบคุมวิดีโอบนหน้าจอ";
"HIDE_YTMUSIC_BUTTON" = "ซ่อนปุ่มเพลง YouTube";
"HIDE_YTMUSIC_BUTTON_DESC" = "ซ่อนปุ่ม Youtube Music ที่ปรากฏพร้อมกับพรีเมียม";
"HIDE_AUTOPLAY_SWITCH" = "ซ่อนสวิตช์ autoplay";
"HIDE_AUTOPLAY_SWITCH_DESC" = "";
"HIDE_SUBTITLES_BUTTON" = "ปุ่มซ่อนคำบรรยาย";
"HIDE_SUBTITLES_BUTTON_DESC" = "ซ่อนปุ่มคำบรรยายในเลเยอร์ควบคุมวิดีโอ";
"HIDE_SUBTITLES_BUTTON" = "ซ่อนปุ่มคำบรรยาย";
"HIDE_SUBTITLES_BUTTON_DESC" = "";
"HIDE_HUD_MESSAGES" = "ซ่อนข้อความ HUD";
"HIDE_HUD_MESSAGES_DESC" = "ตัวอย่างเช่น: คำบรรยาย CC, เปิด/ปิด, เปิดการวนซ้ำวิดีโอ ฯลฯ...";
"HIDE_HUD_MESSAGES_DESC" = "ซ่อนข้อความ snackbars ที่แสดงในบางการกระทำ (เช่น CC เปิด/ปิด)";
"HIDE_PAID_PROMOTION_CARDS" = "ซ่อนแบนเนอร์ที่ต้องชำระเงิน (YTNoPaidPromo)";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "ซ่อนแบนเนอร์ "รวมการโปรโมตแบบชำระเงิน" ในบางวิดีโอ ";
"HIDE_PAID_PROMOTION_CARDS" = "ซ่อนแบนเนอร์โปรโมชันที่จ่ายเงิน";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "";
"HIDE_CHANNEL_WATERMARK" = "ซ่อนลายน้ำของช่อง";
"HIDE_CHANNEL_WATERMARK_DESC" = "ซ่อนลายน้ำช่องของการควบคุมโฮเวอร์ ต้องรีสตาร์ทแอปพลิเคชัน";
"HIDE_CHANNEL_WATERMARK" = "ซ่อนวอเตอร์มาร์คช่อง";
"HIDE_CHANNEL_WATERMARK_DESC" = "";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "ซ่อนปุ่มก่อนหน้าและปุ่มถัดไป";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "ซ่อนปุ่มก่อนหน้าและถัดไปในเลเยอร์ควบคุมภาพยนตร์";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "ซ่อนปุ่มก่อนหน้าและถัดไป";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "ซ่อนในทุกวิดีโอรวมถึงเพลย์ลิสต์";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "แทนที่ปุ่มก่อนหน้า/ถัดไป";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "แทนที่ปุ่มก่อนหน้า/ถัดไปบนอินเทอร์เฟซการควบคุมเครื่องเล่นวิดีโอด้วยปุ่มกรอไปข้างหน้า/ย้อนกลับ รีสตาร์ทแอปพลิเคชัน";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "ใช้ปุ่มข้ามไปข้างหน้าและย้อนกลับ";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "แทนที่ปุ่มก่อนหน้าและถัดไปด้วยปุ่มข้ามไปข้างหน้าและย้อนกลับ";
"RED_PROGRESS_BAR" = "แถบความคืบหน้าสีแดง";
"RED_PROGRESS_BAR_DESC" = "กู้คืนแถบความคืบหน้าสีแดง ต้องรีสตาร์ทแอปพลิเคชัน";
"RED_PROGRESS_BAR" = "แถบความคืบหน้าแดง";
"RED_PROGRESS_BAR_DESC" = "";
"HIDE_HOVER_CARD" = "ซ่อนการ์ดโฮเวอร์ตอนท้าย (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "ซ่อนตอนท้ายของผู้สร้างที่ตอนท้ายของวิดีโอ";
"HIDE_HOVER_CARD" = "YTNoHoverCards";
"HIDE_HOVER_CARD_DESC" = "ซ่อนหน้าจอสุดท้ายของวิดีโอ";
"HIDE_RIGHT_PANEL" = "ซ่อนแผงด้านขวาแบบเต็มหน้าจอ";
"HIDE_RIGHT_PANEL_DESC" = "แอปพลิเคชันจำเป็นต้องรีสตาร์ท";
"HIDE_RIGHT_PANEL" = "ซ่อนแผงการมีส่วนร่วมในโหมดเต็มหน้าจอ";
"HIDE_RIGHT_PANEL_DESC" = "ซ่อนแผงด้านขวา (เช่น ความคิดเห็น, แชทสด, ฯลฯ) ในโหมดแนวนอน";
// Shorts ควบคุมตัวเลือกการซ้อนทับ
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 ตัวเลือกการควบคุมการวางเมาส์เหนือกางเกงขาสั้น";
// ตัวเลือกควบคุมของ Shorts
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 ตัวเลือกควบคุมของ Shorts";
"HIDE_SUPER_THANKS" = "ซ่อนแบนเนอร์ 'ขอบคุณมากสำหรับการซื้อ'";
"HIDE_SUPER_THANKS_DESC" = "ซ่อนแบนเนอร์ 'ขอบคุณสำหรับการซื้อ' ใน Shorts";
"HIDE_SUPER_THANKS" = "ซ่อนแบนเนอร์ 'ซื้อ Super Thanks'";
"HIDE_SUPER_THANKS_DESC" = "";
"HIDE_SUBCRIPTIONS" = "ซ่อนปุ่มสมัครสมาชิก";
"HIDE_SUBCRIPTIONS_DESC" = "ซ่อนปุ่มสมัครสมาชิกที่ปรากฏขึ้นเมื่อหยุดชั่วคราว";
"HIDE_SUBCRIPTIONS" = "ซ่อนปุ่มการสมัครสมาชิก";
"HIDE_SUBCRIPTIONS_DESC" = "";
"DISABLE_RESUME_TO_SHORTS" = "ปิดใช้งานการเล่นสั้นต่อ";
"DISABLE_RESUME_TO_SHORTS_DESC" = "หากคุณปิดโปรแกรมขณะรับชมวิดีโอสั้น วิดีโอสั้นจะไม่เล่นโดยอัตโนมัติอีกต่อไปในครั้งถัดไปที่คุณเปิดโปรแกรม";
"DISABLE_RESUME_TO_SHORTS" = "ปิดใช้งานการกลับไปยัง Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "หากคุณปิดแอป YouTube ขณะดู Shorts ตัวเลือกนี้จะป้องกันไม่ให้แอปเริ่มเล่นต่อในครั้งถัดไป";
//เบ็ดเตล็ด
"เบ็ดเตล็ด" = "🔎เบ็ดเตล็ด";
// อื่นๆ
"MISCELLANEOUS" = "🔎 อื่นๆ";
"HIDE_UYOU" = "ซ่อนแท็บคุณ";
"HIDE_UYOU" = "ซ่อนแท็บ uYou";
"HIDE_ISPONSORBLOCK" = "ซ่อนปุ่ม iSponsorBlock";
"CAST_CONFIRM" = "การยืนยันก่อนส่งมอบ (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "แสดงข้อความยืนยันก่อนให้บริการเพื่อป้องกันไม่ให้สมาชิกในครอบครัวดำเนินการดังกล่าว";
"การคัดเลือกนักแสดง" = "การคัดเลือกนักแสดง";
"MSG_ARE_YOU_SURE" = "เริ่มการจัดส่ง";
"MSG_YES" = "ตกลง";
"MSG_CANCEL" = "ยกเลิก";
"CAST_CONFIRM" = "YTCastConfirm";
"CAST_CONFIRM_DESC" = "แสดงการแจ้งเตือนยืนยันก่อนการแคสต์";
"CASTING" = "กำลังแคสต์";
"MSG_ARE_YOU_SURE" = "คุณแน่ใจหรือไม่ว่าต้องการเริ่มการแคสต์?";
"MSG_YES" = "ใช่"; "MSG_CANCEL" = "ยกเลิก";
"DISABLE_HINTS" = "ปิดใช้งานคำแนะนำ";
"DISABLE_HINTS_DESC" = "ปิดใช้งานคำแนะนำคุณลักษณะที่แสดงเมื่อติดตั้งแอปพลิเคชันครั้งแรก";
"DISABLE_HINTS_DESC" = "ปิดคำแนะนำฟีเจอร์ YouTube ที่แสดงเมื่อแอปเพิ่งติดตั้ง";
"ENABLE_YT_STARTUP_ANIMATION" = "เปิดใช้งานภาพเคลื่อนไหวต้อนรับของ YouTube";
"ENABLE_YT_STARTUP_ANIMATION" = "เปิดใช้งานแอนิเมชันเริ่มต้นของ YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"HIDE_CHIP_BAR" = "ซ่อนฟิลด์ด้านบน";
"HIDE_CHIP_BAR_DESC" = "ซ่อนคอลัมน์ด้านบนของหน้าจอหลัก (หัวข้อ เพลง เกม...) และการอัปเดตสมาชิก (วิดีโอทั้งหมด ดูต่อ...) จำเป็นต้องรีสตาร์ทแอปพลิเคชัน";
"HIDE_CHIP_BAR" = "ซ่อนแถบด้านบน";
"HIDE_CHIP_BAR_DESC" = "ซ่อนแถบด้านบนในหน้าหลักและฟีดการสมัครสมาชิก (เช่น ทุกวิดีโอ, ต่อเนื่องการรับชม, ฯลฯ)";
"HIDE_PLAY_NEXT_IN_QUEUE" = "ซ่อน \"เล่นถัดไปในคิว\"";
"HIDE_PLAY_NEXT_IN_QUEUE" = "ซ่อน 'เล่นถัดไปในคิว'";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "";
"IPHONE_LAYOUT" = "เค้าโครง iPhone";
"IPHONE_LAYOUT_DESC" = "สลับไปใช้รูปแบบ iPhone ต้องรีสตาร์ทแอป";
"IPHONE_LAYOUT" = "บังคับรูปแบบ iPhone";
"IPHONE_LAYOUT_DESC" = "";
"NEW_MINIPLAYER_STYLE" = "เครื่องเล่นขนาดเล็ก (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "ต้องรีสตาร์ทแอปพลิเคชัน";
"NEW_MINIPLAYER_STYLE" = "BigYTMiniPlayer";
"NEW_MINIPLAYER_STYLE_DESC" = "สไตล์แถบ mini player ใหม่";
"YT_RE_EXPLORE" = "แทนที่การแบ่งหน้า Shorts ด้วยการแบ่งหน้าแบบสำรวจ (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "แอปพลิเคชันจำเป็นต้องรีสตาร์ท";
"YT_RE_EXPLORE" = "YTReExplore";
"YT_RE_EXPLORE_DESC" = "แทนที่แท็บ Shorts ด้วยแท็บ Explore";
"ENABLE_FLEX" = "เปิดใช้งาน FLEX";
"ENABLE_FLEX_DESC" = "เปิดใช้งาน FLEX สำหรับการดีบัก (ไม่แนะนำ) อย่าใช้หากคุณไม่รู้ว่ากำลังทำอะไรอยู่";
"ENABLE_FLEX_DESC" = "เปิดใช้งาน FLEX สำหรับการดีบัก";
"FIX_GOOGLE_SIGNIN" = "แก้ไขปัญหาการเข้าสู่ระบบบัญชี Google (ใช้ได้สำหรับผู้ใช้ TrollStore เท่านั้น)";
"FIX_GOOGLE_SIGNIN_DESC" = "ใช้ได้เฉพาะเมื่อใช้ TrollStore เพื่อติดตั้งแอปพลิเคชันนี้: หลังจากเปิดใช้งานการตั้งค่านี้ คุณสามารถเข้าสู่ระบบบัญชี Google ของคุณได้ตามปกติ และคุณต้องรีสตาร์ทแอปพลิเคชัน";
"FIX_GOOGLE_SIGNIN" = "แก้ไขการเข้าสู่ระบบ Google (เฉพาะผู้ใช้ TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "เปิดใช้งานตัวเลือกนี้เมื่อไม่สามารถเข้าสู่ระบบด้วยบัญชี Google และแอปติดตั้งผ่าน TrollStore หากสามารถเข้าสู่ระบบได้ปกติให้ปิดใช้งาน ฟังก์ชันนี้ต้องรีสตาร์ทแอป.";
// uYouEnhanced Localization
"SUPPORT_THE_DEVELOPERS" = "Support the Developers";
"COPY_SETTINGS" = "Copy Settings";
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
"PASTE_SETTINGS" = "Paste Settings";
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
"EXPORT_SETTINGS" = "Export Settings";
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
"IMPORT_SETTINGS" = "Import Settings";
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
"SUPPORT_THE_DEVELOPERS" = "สนับสนุนผู้พัฒนา";
"COPY_SETTINGS" = "คัดลอกการตั้งค่า";
"COPY_SETTINGS_DESC" = "คัดลอกการตั้งค่าทั้งหมดในปัจจุบันไปยังคลิปบอร์ด";
"PASTE_SETTINGS" = "วางการตั้งค่า";
"PASTE_SETTINGS_DESC" = "วางการตั้งค่าจากคลิปบอร์ดและใช้งาน";
"EXPORT_SETTINGS" = "ส่งออกการตั้งค่า";
"EXPORT_SETTINGS_DESC" = "ส่งออกการตั้งค่าทั้งหมดไปยังไฟล์ .txt";
"IMPORT_SETTINGS" = "นำเข้าการตั้งค่า";
"IMPORT_SETTINGS_DESC" = "กดเพื่อนำเข้าการตั้งค่า (.txt)";
"REPLACE_COPY_AND_PASTE_BUTTONS" = "แทนที่ปุ่ม 'คัดลอกการตั้งค่า' และ 'วางการตั้งค่า'";
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "แทนที่ปุ่มด้วย 'ส่งออกการตั้งค่า' และ 'นำเข้าการตั้งค่า'";
"UYOUENHANCED_ESSENTIAL_MENU" = "uYouEnhanced Essential Menu";
"CHANGE_APP_ICON" = "Change App Icon";
"CLEAR_NOTIFICATIONS" = "Clear Notifications";
"CLEAR_NOTIFICATIONS_DESC" = "Force clear all app notifications (Recommended when Sideloaded)";
"UYOUENHANCED_ESSENTIAL_MENU" = "เมนูสำคัญของ uYouEnhanced";
"CHANGE_APP_ICON" = "เปลี่ยนไอคอนแอป";
"CLEAR_NOTIFICATIONS" = "ล้างการแจ้งเตือน";
"CLEAR_NOTIFICATIONS_DESC" = "บังคับลบการแจ้งเตือนทั้งหมด (แนะนำเมื่อแอปถูกติดตั้งจากแหล่งที่ไม่ใช่ Play Store)";
"CUSTOM_DARK_THEME" = "Custom Dark Theme";
"CUSTOM_DARK_THEME" = "ธีมมืดที่กำหนดเอง";
"ENABLE_PORTRAIT_FULLSCREEN" = "Enable Portrait Fullscreen";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "Enables Portrait Fullscreen on the YouTube App. App restart is required.";
"ENABLE_TAP_TO_SEEK" = "Enable Tap To Seek";
"ENABLE_TAP_TO_SEEK_DESC" = "Jump to anywhere in a video by single-tapping the seek bar";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Disable pull-to-fullscreen gesture";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "Disable the drag gesture to enter vertical fullscreen. Only applies to landscape videos.";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER" = "Disable Double tap to skip chapter";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC" = "Disable the 2-finger double tap gesture that skips forward/backward by a chapter.";
"ALWAYS_USE_REMAINING_TIME" = "Always use remaining time";
"ALWAYS_USE_REMAINING_TIME_DESC" = "Change the default to show time remaining in the player bar.";
"DISABLE_TOGGLE_TIME_REMAINING" = "Disable toggle time remaining";
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "Disables changing time elapsed to time remaining. Use with other setting to always show remaining time.";
"ENABLE_PORTRAIT_FULLSCREEN" = "เปิดโหมดเต็มหน้าจอแนวตั้ง";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "เปิดโหมดเต็มหน้าจอแนวตั้งในแอป YouTube ต้องรีสตาร์ทแอป";
"FULLSCREEN_TO_THE_RIGHT" = "เต็มหน้าจอไปทางขวา";
"FULLSCREEN_TO_THE_RIGHT_DESC" = "บังคับให้วิดีโอแสดงผลเต็มหน้าจอในทิศทางแนวนอนขวา ต้องรีสตาร์ทแอป";
"ENABLE_TAP_TO_SEEK" = "เปิดใช้งานแตะเพื่อเลื่อน";
"ENABLE_TAP_TO_SEEK_DESC" = "กระโดดไปยังตำแหน่งในวิดีโอโดยการแตะที่แถบเลื่อน";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "ปิดการใช้งานการลากเพื่อเข้าสู่โหมดเต็มหน้าจอ";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "ปิดการใช้งานการลากเพื่อเข้าสู่โหมดเต็มหน้าจอในแนวตั้ง ใช้กับวิดีโอที่เป็นแนวนอนเท่านั้น";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER" = "ปิดการใช้งานการแตะสองครั้งเพื่อข้ามตอน";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC" = "ปิดการใช้งานท่าทางการแตะสองครั้งด้วยนิ้วสองเพื่อข้ามตอนวิดีโอ";
"ALWAYS_USE_REMAINING_TIME" = "ใช้เวลาที่เหลือเสมอ";
"ALWAYS_USE_REMAINING_TIME_DESC" = "เปลี่ยนค่าเริ่มต้นเพื่อแสดงเวลาที่เหลือในแถบเครื่องเล่น";
"DISABLE_TOGGLE_TIME_REMAINING" = "ปิดการใช้งานสลับเวลาที่เหลือ";
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "ปิดการใช้งานการเปลี่ยนเวลาแสดงเวลาที่ผ่านมาเป็นเวลาที่เหลือ ใช้ร่วมกับการตั้งค่าอื่นๆ เพื่อแสดงเวลาที่เหลือตลอด";
"ENABLE_SHARE_BUTTON" = "Enable Share Button";
"ENABLE_SHARE_BUTTON_DESC" = "Enable the Share Button in video controls overlay.";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "Enable Save To Playlist Button";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "Enable the Save To Playlist Button in video controls overlay.";
"HIDE_YTMUSIC_BUTTON" = "Hide Youtube Music button";
"HIDE_YTMUSIC_BUTTON_DESC" = "Hides Youtube Music button that appears with Premium";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN" = "Hide Video Title in Fullscreen";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC" = "Hides the Video Title along with the functionality in the Top Left of the Fullscreen Video Player.";
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
"HIDE_FULLSCREEN_BUTTON" = "Hide Fullscreen Button";
"HIDE_FULLSCREEN_BUTTON_DESC" = "Hides the Fullscreen Button that was shown at the Bottom Right of the Video Player.";
"HIDE_SHADOW_OVERLAY_BUTTONS" = "Hide Shadow Overlay Buttons";
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "Hide the Shadow Overlay on the Play/Pause, Previous, Next, Forward & Rewind Buttons.";
"HIDE_FULLSCREEN_ACTION_BUTTONS" = "Hide Fullscreen Action Buttons";
"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC" = "Hides the buttons at the bottom of the screen when in landscape.";
"HIDE_SUGGESTED_VIDEO" = "Hide Suggested Video";
"HIDE_SUGGESTED_VIDEO_DESC" = "Remove the suggested video popup when finishing a video. Note that this will prevent autoplay from working.";
"HIDE_HEATWAVES_BAR" = "Hide Heatwaves Bar";
"HIDE_HEATWAVES_BAR_DESC" = "Hides the Heatwaves Bar that is originally shown in the Progress Bar by Default in the video player. App restart is required.";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY" = "Hide Double Tap to Seek Overlay";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC" = "This hides the animated double tap to seek overlay in the video player. App restart is required.";
"HIDE_DARK_OVERLAY_BACKGROUND" = "Hide Dark Overlay Background";
"HIDE_DARK_OVERLAY_BACKGROUND_DESC" = "Hide the Dark Overlay Background in the video player. App restart is required.";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN" = "Hide Ambient Mode in Fullscreen";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC" = "Hides and Prevents Ambient Mode from being used in the Video Player when in Fullscreen. App restart is required.";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN" = "Hide Suggested Videos in Fullscreen";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC" = "Hide the suggested videos whenever in the Fullscreen Video Player. App restart is required.";
"HIDE_ALL_VIDEOS_UNDER_PLAYER" = "Hide all videos under player";
"HIDE_ALL_VIDEOS_UNDER_PLAYER_DESC" = "Remove all videos under the video player. Depends on which Device Orientation.";
"ENABLE_SHARE_BUTTON" = "เปิดใช้งานปุ่มแชร์";
"ENABLE_SHARE_BUTTON_DESC" = "เปิดใช้งานปุ่มแชร์ในแถบควบคุมวิดีโอ";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "เปิดใช้งานปุ่มบันทึกลงในเพลย์ลิสต์";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "เปิดใช้งานปุ่มบันทึกลงในเพลย์ลิสต์ในแถบควบคุมวิดีโอ";
"HIDE_YTMUSIC_BUTTON" = "ซ่อนปุ่ม YouTube Music";
"HIDE_YTMUSIC_BUTTON_DESC" = "ซ่อนปุ่ม YouTube Music ที่แสดงเมื่อมีบัญชี Premium";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN" = "ซ่อนชื่อวิดีโอในโหมดเต็มหน้าจอ";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC" = "ซ่อนชื่อวิดีโอและฟังก์ชันที่มุมซ้ายบนของผู้เล่นวิดีโอเต็มหน้าจอ";
"HIDE_COLLAPSE_BUTTON" = "ซ่อนปุ่มย่อ";
"HIDE_COLLAPSE_BUTTON_DESC" = "ซ่อนปุ่มลูกศรย่อที่แสดงที่มุมซ้ายบนของผู้เล่นวิดีโอ";
"HIDE_FULLSCREEN_BUTTON" = "ซ่อนปุ่มเต็มหน้าจอ";
"HIDE_FULLSCREEN_BUTTON_DESC" = "ซ่อนปุ่มเต็มหน้าจอที่แสดงที่มุมขวาล่างของผู้เล่นวิดีโอ";
"HIDE_SHADOW_OVERLAY_BUTTONS" = "ซ่อนปุ่ม Overlay เงา";
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "ซ่อนปุ่ม Overlay เงาในปุ่มเล่น/หยุดเล่น ปุ่มย้อนกลับ ปุ่มถัดไป ปุ่มข้างหน้า และปุ่มย้อน";
"HIDE_FULLSCREEN_ACTION_BUTTONS" = "ซ่อนปุ่มการกระทำในโหมดเต็มหน้าจอ";
"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC" = "ซ่อนปุ่มที่อยู่ด้านล่างของหน้าจอเมื่ออยู่ในโหมดแนวนอน";
"HIDE_SUGGESTED_VIDEO" = "ซ่อนวิดีโอที่แนะนำ";
"HIDE_SUGGESTED_VIDEO_DESC" = "ลบหน้าต่างป๊อปอัพวิดีโอที่แนะนำเมื่อวิดีโอเล่นจบ โปรดทราบว่าการตั้งค่านี้จะทำให้ฟังก์ชันการเล่นอัตโนมัติไม่ทำงาน";
"HIDE_HEATWAVES_BAR" = "ซ่อนแถบ Heatwaves";
"HIDE_HEATWAVES_BAR_DESC" = "ซ่อนแถบ Heatwaves ที่แสดงในแถบความคืบหน้าของผู้เล่นวิดีโอโดยเริ่มต้น ต้องรีสตาร์ทแอป";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY" = "ซ่อนป๊อปอัพการแตะสองครั้งเพื่อเลื่อน";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC" = "ซ่อนการแสดงผลอนิเมชั่นการแตะสองครั้งเพื่อเลื่อนในผู้เล่นวิดีโอ ต้องรีสตาร์ทแอป";
"HIDE_DARK_OVERLAY_BACKGROUND" = "ซ่อนพื้นหลัง Overlay มืด";
"HIDE_DARK_OVERLAY_BACKGROUND_DESC" = "ซ่อนพื้นหลัง Overlay มืดในผู้เล่นวิดีโอ ต้องรีสตาร์ทแอป";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN" = "ซ่อนโหมด Ambient ในโหมดเต็มหน้าจอ";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC" = "ซ่อนและป้องกันไม่ให้ใช้โหมด Ambient ในผู้เล่นวิดีโอเมื่ออยู่ในโหมดเต็มหน้าจอ ต้องรีสตาร์ทแอป";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN" = "ซ่อนวิดีโอที่แนะนำในโหมดเต็มหน้าจอ";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC" = "ซ่อนวิดีโอที่แนะนำเมื่ออยู่ในผู้เล่นวิดีโอเต็มหน้าจอ ต้องรีสตาร์ทแอป";
"HIDE_ALL_VIDEOS_UNDER_PLAYER" = "ซ่อนวิดีโอทั้งหมดใต้ผู้เล่น";
"HIDE_ALL_VIDEOS_UNDER_PLAYER_DESC" = "ลบวิดีโอทั้งหมดที่แสดงใต้ผู้เล่น ขึ้นอยู่กับทิศทางการหมุนของอุปกรณ์";
"SHORTS_QUALITY_PICKER" = "Shorts Quality Picker";
"SHORTS_QUALITY_PICKER_DESC" = "Enables the YouTube Shorts Quality Picker";
"SHORTS_QUALITY_PICKER" = "ตัวเลือกคุณภาพ Shorts";
"SHORTS_QUALITY_PICKER_DESC" = "เปิดใช้งานตัวเลือกคุณภาพสำหรับ YouTube Shorts";
"VIDEO_PLAYER_BUTTON_OPTIONS" = "Video Player Button Options";
"VIDEO_PLAYER_BUTTON_OPTIONS" = "ตัวเลือกปุ่มผู้เล่นวิดีโอ";
"RED_SUBSCRIBE_BUTTON" = "Red Subscribe Button";
"RED_SUBSCRIBE_BUTTON_DESC" = "Restores the Subscribe Button Color to be Red.";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER" = "Hide Button Containers under player";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC" = "Hides the Button Containers under the video player.";
"HIDE_CONNECT_BUTTON" = "Hide the Connect Button under player";
"HIDE_CONNECT_BUTTON_DESC" = "Hides the Connect Button under the video player.";
"HIDE_SHARE_BUTTON" = "Hide the Share Button under player";
"HIDE_SHARE_BUTTON_DESC" = "Hides the Share Button under the video player.";
"HIDE_THANKS_BUTTON" = "Hide the Thanks Button under player";
"HIDE_THANKS_BUTTON_DESC" = "Hides the Thanks Button under the video player.";
"HIDE_SAVE_BUTTON" = "Hide the Save Button under player";
"HIDE_SAVE_BUTTON_DESC" = "Hides the Save Button under the video player.";
"HIDE_REPORT_BUTTON" = "Hide the Report Button under player";
"HIDE_REPORT_BUTTON_DESC" = "Hides the Report Button under the video player.";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hides the comment previews under the video player.";
"HIDE_COMMENT_SECTION_BUTTON" = "Hide the comment section under player";
"HIDE_COMMENT_SECTION_BUTTON_DESC" = "Hides the Comment Section under the video player.";
"RED_SUBSCRIBE_BUTTON" = "ปุ่มสมัครสีแดง";
"RED_SUBSCRIBE_BUTTON_DESC" = "คืนค่าปุ่มสมัครสมาชิกให้เป็นสีแดง";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER" = "ซ่อนภาชนะปุ่มใต้ผู้เล่น";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC" = "ซ่อนภาชนะปุ่มใต้ผู้เล่นวิดีโอ";
"HIDE_CONNECT_BUTTON" = "ซ่อนปุ่มเชื่อมต่อใต้ผู้เล่น";
"HIDE_CONNECT_BUTTON_DESC" = "ซ่อนปุ่มเชื่อมต่อใต้ผู้เล่นวิดีโอ";
"HIDE_SHARE_BUTTON" = "ซ่อนปุ่มแชร์ใต้ผู้เล่น";
"HIDE_SHARE_BUTTON_DESC" = "ซ่อนปุ่มแชร์ใต้ผู้เล่นวิดีโอ";
"HIDE_THANKS_BUTTON" = "ซ่อนปุ่มขอบคุณใต้ผู้เล่น";
"HIDE_THANKS_BUTTON_DESC" = "ซ่อนปุ่มขอบคุณใต้ผู้เล่นวิดีโอ";
"HIDE_SAVE_BUTTON" = "ซ่อนปุ่มบันทึกใต้ผู้เล่น";
"HIDE_SAVE_BUTTON_DESC" = "ซ่อนปุ่มบันทึกใต้ผู้เล่นวิดีโอ";
"HIDE_REPORT_BUTTON" = "ซ่อนปุ่มรายงานใต้ผู้เล่น";
"HIDE_REPORT_BUTTON_DESC" = "ซ่อนปุ่มรายงานใต้ผู้เล่นวิดีโอ";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "ซ่อนตัวอย่างคอมเมนต์ใต้ผู้เล่น";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "ซ่อนตัวอย่างคอมเมนต์ใต้ผู้เล่นวิดีโอ";
"HIDE_COMMENT_SECTION_BUTTON" = "ซ่อนปุ่มส่วนคอมเมนต์ใต้ผู้เล่น";
"HIDE_COMMENT_SECTION_BUTTON_DESC" = "ซ่อนส่วนคอมเมนต์ใต้ผู้เล่นวิดีโอ";
"APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options";
"APP_SETTINGS_OVERLAY_OPTIONS" = "ตัวเลือกการตั้งค่าการทับซ้อนของแอป";
"HIDE_ACCOUNT_SECTION" = "Hide `Account` Section";
"HIDE_AUTOPLAY_SECTION" = "Hide `Autoplay` Section";
"HIDE_TRY_NEW_FEATURES_SECTION" = "Hide `Try New Features` Section";
"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION" = "Hide `Video quality preferences` Section";
"HIDE_NOTIFICATIONS_SECTION" = "Hide `Notifications` Section";
"HIDE_MANAGE_ALL_HISTORY_SECTION" = "Hide `Manage all history` Section";
"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION" = "Hide `Your data in YouTube` Section";
"HIDE_PRIVACY_SECTION" = "Hide `Privacy` Section";
"HIDE_LIVE_CHAT_SECTION" = "Hide `Live Chat` Section";
"HIDE_GET_YOUTUBE_PREMIUM_SECTION" = "Hide `Get Youtube Premium` Section";
"HIDE_ACCOUNT_SECTION" = "ซ่อนส่วน บัญชี";
"HIDE_AUTOPLAY_SECTION" = "ซ่อนส่วน เล่นอัตโนมัติ";
"HIDE_TRY_NEW_FEATURES_SECTION" = "ซ่อนส่วน ลองฟีเจอร์ใหม่";
"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION" = "ซ่อนส่วน การตั้งค่าคุณภาพวิดีโอ";
"HIDE_NOTIFICATIONS_SECTION" = "ซ่อนส่วน การแจ้งเตือน";
"HIDE_MANAGE_ALL_HISTORY_SECTION" = "ซ่อนส่วน จัดการประวัติทั้งหมด";
"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION" = "ซ่อนส่วน ข้อมูลของคุณใน YouTube";
"HIDE_PRIVACY_SECTION" = "ซ่อนส่วน ความเป็นส่วนตัว";
"HIDE_LIVE_CHAT_SECTION" = "ซ่อนส่วน แชทสด";
"HIDE_GET_YOUTUBE_PREMIUM_SECTION" = "ซ่อนส่วน สมัคร YouTube Premium";
"UI_INTERFACE_OPTIONS" = "UI Interface Options";
"UI_INTERFACE_OPTIONS" = "ตัวเลือกอินเตอร์เฟซ UI";
"HIDE_HOME_TAB" = "Hide Home Tab";
"LOW_CONTRAST_MODE" = "Low Contrast Mode";
"LOW_CONTRAST_MODE_DESC" = "This will lower the color contrast on texts and buttons, similar to YouTube's pre-2020 App Interface.";
"LOW_CONTRAST_MODE_SELECTOR" = "Low Contrast Mode Selector";
"LOW_CONTRAST_MODE_ERROR_1" = "You are using v%@ which is a discontinued version of YouTube that no longer works. Please use v17.33.2-17.38.10 in order to use LowContrastMode.";
"LOW_CONTRAST_MODE_ERROR_2" = "LowContrastMode is only available for app versions v17.33.2-v17.38.10. \nYou are currently using v%@. \nWorkaround: if you want to use this then I recommend enabling \"Fix LowContrastMode\" Option.";
"FIX_LOWCONTRASTMODE" = "Fix LowContrastMode";
"FIX_LOWCONTRASTMODE_DESC" = "This will fix and enable the LowContrastMode functionality by Spoofing to YouTube v17.38.10. App restart is required.";
"DISABLE_MODERN_BUTTONS" = "Disable Modern Buttons";
"DISABLE_MODERN_BUTTONS_DESC" = "This will remove the some of the new Modern/Chip Buttons in the YouTube App. App restart is required.";
"DISABLE_ROUNDED_CORNERS_ON_HINTS" = "Disable Rounded Corners on Hints";
"DISABLE_ROUNDED_CORNERS_ON_HINTS_DESC" = "This will make the Hints in the App to not include Rounded Corners. App restart is required.";
"DISABLE_MODERN_FLAGS" = "Disable Modern A/B Flags";
"DISABLE_MODERN_FLAGS_DESC" = "This will turn off any Modern Flag that was enabled by default. App restart is required.";
"YTNOMODERNUI" = "Enable Specific UI Related Options (YTNoModernUI)";
"YTNOMODERNUI_DESC" = "This will specifically enable other options to make the app look and feel less-modern. App restart is required.";
"ENABLE_APP_VERSION_SPOOFER" = "Enable App Version Spoofer";
"ENABLE_APP_VERSION_SPOOFER_DESC" = "Enable this to use the Version Spoofer and select your perferred version below. App restart is required.";
"VERSION_SPOOFER_SELECTOR" = "Version spoofer selector";
"HIDE_HOME_TAB" = "ซ่อนแท็บหน้าแรก";
"LOW_CONTRAST_MODE" = "โหมดคอนทราสต์ต่ำ";
"LOW_CONTRAST_MODE_DESC" = "จะลดความคมชัดของสีในข้อความและปุ่ม คล้ายกับอินเตอร์เฟซแอป YouTube ก่อนปี 2020";
"LOW_CONTRAST_MODE_SELECTOR" = "ตัวเลือกโหมดคอนทราสต์ต่ำ";
"LOW_CONTRAST_MODE_ERROR_1" = "คุณกำลังใช้ v%@ ซึ่งเป็นเวอร์ชันที่เลิกใช้งานของ YouTube ซึ่งไม่ทำงานแล้ว โปรดใช้ v17.33.2-17.38.10 เพื่อใช้โหมด LowContrastMode";
"LOW_CONTRAST_MODE_ERROR_2" = "โหมด LowContrastMode ใช้ได้เฉพาะกับเวอร์ชันแอป v17.33.2-v17.38.10 เท่านั้น \nคุณกำลังใช้ v%@ \nวิธีแก้ปัญหา: หากต้องการใช้โหมดนี้ ฉันแนะนำให้เปิดใช้งานตัวเลือก แก้ไข LowContrastMode";
"CLASSIC_VIDEO_PLAYER" = "ผู้เล่นวิดีโอคลาสสิค";
"CLASSIC_VIDEO_PLAYER_DESC" = "คืนค่าฟีเจอร์ผู้เล่นวิดีโอคลาสสิคจาก v16.xx.x รวมถึงการขยายหน้าจอด้วยการบีบ";
"FIX_LOWCONTRASTMODE" = "แก้ไข LowContrastMode (เลิกใช้)";
"FIX_LOWCONTRASTMODE_DESC" = "จะซ่อมแซมและเปิดใช้งานฟังก์ชัน LowContrastMode โดยการปลอมแปลงเป็น YouTube v17.38.10 ต้องรีสตาร์ทแอป";
"DISABLE_MODERN_BUTTONS" = "ปิดการใช้งานปุ่มสมัยใหม่";
"DISABLE_MODERN_BUTTONS_DESC" = "จะลบปุ่มสมัยใหม่/ปุ่มชิปบางปุ่มในแอป YouTube ต้องรีสตาร์ทแอป";
"DISABLE_ROUNDED_CORNERS_ON_HINTS" = "ปิดการใช้งานมุมมนในคำแนะนำ";
"DISABLE_ROUNDED_CORNERS_ON_HINTS_DESC" = "จะทำให้คำแนะนำในแอปไม่มีมุมมน ต้องรีสตาร์ทแอป";
"DISABLE_MODERN_FLAGS" = "ปิดการใช้งานธงโมเดิร์น A/B";
"DISABLE_MODERN_FLAGS_DESC" = "จะปิดการใช้งานธงโมเดิร์นที่เปิดใช้งานโดยดีฟอลต์ ต้องรีสตาร์ทแอป";
"YTNOMODERNUI" = "เปิดใช้งานตัวเลือก UI ที่เกี่ยวข้อง (YTNoModernUI)";
"YTNOMODERNUI_DESC" = "จะเปิดใช้งานตัวเลือกอื่นๆ ที่ทำให้แอปดูและรู้สึกน้อยลงในสไตล์โมเดิร์น ต้องรีสตาร์ทแอป";
"ENABLE_APP_VERSION_SPOOFER" = "เปิดใช้งานตัวปลอมแปลงเวอร์ชันแอป";
"ENABLE_APP_VERSION_SPOOFER_DESC" = "เปิดใช้งานเพื่อใช้ตัวปลอมแปลงเวอร์ชันและเลือกเวอร์ชันที่คุณต้องการด้านล่าง ต้องรีสตาร์ทแอป";
"VERSION_SPOOFER_SELECTOR" = "ตัวเลือกตัวปลอมแปลงเวอร์ชัน";
"ADBLOCK_WORKAROUND_LITE" = "AdBlock Workaround (Lite)";
"ADBLOCK_WORKAROUND_LITE_DESC" = "Uses weaker adblocking code, this will disable uYou's Adblocking Option.";
"ADBLOCK_WORKAROUND" = "AdBlock Workaround";
"ADBLOCK_WORKAROUND_DESC" = "Uses stronger adblocking code.";
"FAKE_PREMIUM" = "Fake Premium";
"FAKE_PREMIUM_DESC" = "Uses Premium logo and creates fake buttons in the You tab.";
"FAKE_PREMIUM_WARNING" = "The *You* Tab doesn't exist in v%@, fake buttons will not be created.\nBut the *Fake Premium Logo* will still work.";
"FAKE_YOUR_PREMIUM_BENEFITS" = "Your Premium benefits";
"FAKE_DOWNLOADS" = "Downloads";
"DISABLE_ANIMATED_YOUTUBE_LOGO" = "Disable Animated YouTube Logo";
"CENTER_YOUTUBE_LOGO" = "Center YouTube Logo";
"CENTER_YOUTUBE_LOGO_DESC" = "Toggle this to reposition the official YouTube Logo to the Center. App restart is required.";
"HIDE_YOUTUBE_LOGO" = "Hide YouTube Logo";
"HIDE_YOUTUBE_LOGO_DESC" = "Toggle this to hide the YouTube Logo in the YouTube App.";
"STICK_NAVIGATION_BAR" = "Stick Navigation Bar";
"STICK_NAVIGATION_BAR_DESC" = "This will make the Navigation Bar stay when scrolling throughout the App.";
"HIDE_COMMUNITY_POSTS" = "Hide Community Posts";
"HIDE_COMMUNITY_POSTS_DESC" = "Hides the Community Posts. App restart is required.";
"HIDE_HEADER_LINKS_UNDER_PROFILE" = "Hide Header Links under channel profile";
"HIDE_HEADER_LINKS_UNDER_PROFILE_DESC" = "Hides the Header Links under any channel profile.";
"AUTO_HIDE_HOME_INDICATOR" = "Auto-Hide Home Indicator";
"AUTO_HIDE_HOME_INDICATOR_DESC" = "Automatically Hides the iOS Home Indicator when not interacting with the App.";
"HIDE_INDICATORS" = "Hide Indicators";
"HIDE_INDICATORS_DESC" = "Hides all Indicators that are currently in the App.";
"FIX_CASTING" = "Fix Casting";
"FIX_CASTING_DESC" = "Changes certain A/B flags to fix casting.";
"ADBLOCK_WORKAROUND_LITE" = "ทางแก้ไข AdBlock (Lite)";
"ADBLOCK_WORKAROUND_LITE_DESC" = "ใช้โค้ดบล็อกโฆษณาที่อ่อนแอ เป็นการปิดใช้งานตัวเลือกการบล็อกโฆษณาของ uYou";
"ADBLOCK_WORKAROUND" = "ทางแก้ไข AdBlock";
"ADBLOCK_WORKAROUND_DESC" = "ใช้โค้ดบล็อกโฆษณาที่แข็งแกร่ง";
"FAKE_PREMIUM" = "Premium ปลอม"; "FAKE_PREMIUM_DESC" = "ใช้โลโก้ Premium และสร้างปุ่มปลอมในแท็บ You จะปิดการใช้งานโลโก้ YouTube อนิเมชั่น";
"FAKE_PREMIUM_WARNING" = "แท็บ You ไม่มีใน v%@, ปุ่มปลอมจะไม่ได้สร้างขึ้น \nแต่ โลโก้ Premium ปลอม จะยังคงทำงาน";
"FAKE_YOUR_PREMIUM_BENEFITS" = "สิทธิพิเศษ Premium ของคุณ";
"FAKE_DOWNLOADS" = "การดาวน์โหลด";
"DISABLE_ANIMATED_YOUTUBE_LOGO" = "ปิดการใช้งานโลโก้ YouTube อนิเมชั่น";
"CENTER_YOUTUBE_LOGO" = "จัดโลโก้ YouTube ให้อยู่กลาง";
"CENTER_YOUTUBE_LOGO_DESC" = "เปิดปิดตัวเลือกนี้เพื่อย้ายโลโก้ YouTube ไปยังกลางหน้าจอ ต้องรีสตาร์ทแอป";
"HIDE_YOUTUBE_LOGO" = "ซ่อนโลโก้ YouTube";
"HIDE_YOUTUBE_LOGO_DESC" = "เปิดปิดตัวเลือกนี้เพื่อซ่อนโลโก้ YouTube ในแอป YouTube";
"STICK_NAVIGATION_BAR" = "ยึดแถบการนำทาง";
"STICK_NAVIGATION_BAR_DESC" = "จะทำให้แถบการนำทางคงอยู่เมื่อเลื่อนผ่านแอป";
"HIDE_COMMUNITY_POSTS" = "ซ่อนโพสต์ชุมชน";
"HIDE_COMMUNITY_POSTS_DESC" = "ซ่อนโพสต์ชุมชน ต้องรีสตาร์ทแอป";
"HIDE_HEADER_LINKS_UNDER_PROFILE" = "ซ่อนลิงก์หัวข้อใต้โปรไฟล์ช่อง";
"HIDE_HEADER_LINKS_UNDER_PROFILE_DESC" = "ซ่อนลิงก์หัวข้อใต้โปรไฟล์ของช่อง";
"AUTO_HIDE_HOME_INDICATOR" = "ซ่อนตัวชี้วัดหน้าแรกอัตโนมัติ";
"AUTO_HIDE_HOME_INDICATOR_DESC" = "ซ่อนตัวชี้วัดหน้าแรกของ iOS เมื่อไม่ได้โต้ตอบกับแอป";
"HIDE_INDICATORS" = "ซ่อนตัวชี้วัด";
"HIDE_INDICATORS_DESC" = "ซ่อนตัวชี้วัดทั้งหมดในแอป";
"FIX_CASTING" = "แก้ไขการส่ง";
"FIX_CASTING_DESC" = "เปลี่ยนธงบางประการเพื่อแก้ไขการส่ง";
"NEW_SETTINGS_UI" = "ใช้ UI การตั้งค่าใหม่";
"NEW_SETTINGS_UI_DESC" = "เปิดใช้งาน UI การตั้งค่าใหม่พร้อมหมวดหมู่การปรับแต่ง";
"DEFAULT" = "Default";
"CUSTOM_COLOR" = "Custom Color";
"RESTART_REQUIRED" = "App restart is required.";
"DEFAULT" = "ค่าเริ่มต้น";
"CUSTOM_COLOR" = "สีที่กำหนดเอง";
"RESTART_REQUIRED" = "ต้องรีสตาร์ทแอป";

View file

@ -1,5 +1,5 @@
export TARGET = iphone:clang:16.5:15.0
export SDK_PATH = $(THEOS)/sdks/iPhoneOS16.5.sdk/
export TARGET = iphone:clang:17.5:15.0
export SDK_PATH = $(THEOS)/sdks/iPhoneOS17.5.sdk/
export SYSROOT = $(SDK_PATH)
export ARCHS = arm64
@ -16,7 +16,7 @@ MODULES = jailed
endif
ifndef YOUTUBE_VERSION
YOUTUBE_VERSION = 19.40.4
YOUTUBE_VERSION = 20.33.2
endif
ifndef UYOU_VERSION
UYOU_VERSION = 3.0.4
@ -34,7 +34,7 @@ $(TWEAK_NAME)_FRAMEWORKS = UIKit Foundation AVFoundation AVKit Photos Accelerate
$(TWEAK_NAME)_LIBRARIES = bz2 c++ iconv z
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -Wno-deprecated-declarations -Wno-unused-but-set-variable -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\"
#uYouLocalization $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/uYouLocalization.dylib
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YouGroupSettings.dylib $(THEOS_OBJ_DIR)/YouLoop.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib $(THEOS_OBJ_DIR)/YouTimeStamp.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/YTHoldForSpeed.dylib $(THEOS_OBJ_DIR)/YoutubeSpeed.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.dylib
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTIcons.dylib $(THEOS_OBJ_DIR)/YouGroupSettings.dylib $(THEOS_OBJ_DIR)/YouLoop.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib $(THEOS_OBJ_DIR)/YouSlider.dylib $(THEOS_OBJ_DIR)/YouSpeed.dylib $(THEOS_OBJ_DIR)/YouTimeStamp.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/YTHoldForSpeed.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.dylib
$(TWEAK_NAME)_EMBED_LIBRARIES = $(THEOS_OBJ_DIR)/libcolorpicker.dylib
$(TWEAK_NAME)_EMBED_FRAMEWORKS = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install_Alderis.xcarchive/Products/var/jb/Library/Frameworks/Alderis.framework
$(TWEAK_NAME)_EMBED_BUNDLES = $(wildcard Bundles/*.bundle)
@ -43,7 +43,7 @@ $(TWEAK_NAME)_EMBED_EXTENSIONS = $(wildcard Extensions/*.appex)
include $(THEOS)/makefiles/common.mk
ifneq ($(JAILBROKEN),1)
#uYouLocalization SUBPROJECTS += Tweaks/Alderis Tweaks/uYouLocalization
SUBPROJECTS += Tweaks/Alderis Tweaks/DontEatMyContent Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouGroupSettings Tweaks/YouLoop Tweaks/YouMute Tweaks/YouPiP Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YTHoldForSpeed Tweaks/YTSpeed Tweaks/YTUHD Tweaks/YTVideoOverlay
SUBPROJECTS += Tweaks/Alderis Tweaks/DontEatMyContent Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouGroupSettings Tweaks/YTIcons Tweaks/YouLoop Tweaks/YouMute Tweaks/YouPiP Tweaks/YouQuality Tweaks/YouSlider Tweaks/YouSpeed Tweaks/YouTimeStamp Tweaks/YTHoldForSpeed Tweaks/YTUHD Tweaks/YTVideoOverlay
include $(THEOS_MAKE_PATH)/aggregate.mk
endif
include $(THEOS_MAKE_PATH)/tweak.mk

127
README.md
View file

@ -1,3 +1,15 @@
## About the future of the uYouEnhanced Project (Updated, June 13, 2025)
Hey everyone,
Just wanted to give you an update about uYouEnhanced. Im not 100% leaving or anything, but I wont be maintaining this tweak much like before. Ill still drop some github commits now and then to try and improve uYouEnhanced, but theres just no way I can ever get through and solve the 300+ known existing issues in this github repository.
I do my best to fix stuff when some issues pop up, but it sometimes usually doesnt work out. I do even suggest workarounds, but they might not work perfectly or might mot even work, especially with the latest YouTube version changes.
But as of writing this, Id recommend using uYouEnhanced with YouTube version v20.05.4 (the ipa version I actually am still using personally).
Thanks for understanding!
And thanks to the developers qnblackcat, PoomSmart & other allowing me to expand this fork from where it is today!
<p align="center">
<a href="https://user-images.githubusercontent.com/78001398/271790092-006e81cc-715a-4fbc-aff6-15832e2da8c4.png">
<img src="https://user-images.githubusercontent.com/78001398/271790092-006e81cc-715a-4fbc-aff6-15832e2da8c4.png" alt="UYOUPLUS_LOGO" width="200" height="200">
@ -15,7 +27,7 @@
</p>
<p align="center">
<a href="https://github.com/arichornlover/uYouEnhanced/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/arichornlover/uYouEnhanced?logo=youtube&color=%23e81e8a&label=Latest%20Release" alt="Latest Release Badge"></a>
<a href="https://github.com/arichornlover/uYouEnhanced/releases/latest"><img src="https://img.shields.io/github/v/release/arichornlover/uYouEnhanced?logo=youtube&color=%23e81e8a&label=Latest%20Release" alt="Latest Release Badge"></a>
<a href="https://github.com/arichornlover/uYouEnhanced/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/arichornlover/uYouEnhanced?logo=history&logoColor=white&color=%23e81e8a&label=Last%20Commit" alt="Last Commit Badge"></a>
<a href="https://github.com/arichornlover/uYouEnhanced/issues"><img src="https://custom-icon-badges.demolab.com/github/issues-raw/arichornlover/uYouEnhanced?logo=issue-opened&logoColor=white&color=%23e81e8a&label=Issues" alt="Issues Badge"></a>
</p>
@ -30,14 +42,14 @@
# Table of Contents
[![Credits](https://img.shields.io/badge/Credits-blue?style=flat)](#credits)<br>
[![Features](https://img.shields.io/badge/Features-blue?style=flat)](#features)<br>
[![Known Issues](https://img.shields.io/badge/Known%20Issues-blue?style=flat)](#known-issues)<br>
[![Download](https://img.shields.io/badge/Download-blue?style=flat)](#download)<br>
[![Building](https://img.shields.io/badge/Building-blue?style=flat)](#building)<br>
[![Installation](https://img.shields.io/badge/Installation-blue?style=flat)](#installation)<br>
[![Support the Developers](https://img.shields.io/badge/Support%20the%20Developers-blue?style=flat)](#support-the-developers)<br>
[![Wiki](https://img.shields.io/badge/Wiki-blue?style=flat)](#wiki)<br>
<a href="#credits"><img src="https://img.shields.io/badge/Credits-C6005A?style=for-the-badge&labelColor=C6005A" alt="Credits Badge"></a><br>
<a href="#features"><img src="https://img.shields.io/badge/Features-C6005A?style=for-the-badge&labelColor=C6005A" alt="Features Badge"></a><br>
<a href="#known-issues"><img src="https://img.shields.io/badge/Known%20Issues-C6005A?style=for-the-badge&labelColor=C6005A" alt="Known Issues Badge"></a><br>
<a href="#download"><img src="https://img.shields.io/badge/Download-C6005A?style=for-the-badge&labelColor=C6005A" alt="Download Badge"></a><br>
<a href="#building"><img src="https://img.shields.io/badge/Building-C6005A?style=for-the-badge&labelColor=C6005A" alt="Building Badge"></a><br>
<a href="#installation"><img src="https://img.shields.io/badge/Installation-C6005A?style=for-the-badge&labelColor=C6005A" alt="Installation Badge"></a><br>
<a href="#support-the-developers"><img src="https://img.shields.io/badge/Support%20the%20Developers-C6005A?style=for-the-badge&labelColor=C6005A" alt="Support the Developers Badge"></a><br>
<a href="#wiki"><img src="https://img.shields.io/badge/Wiki-C6005A?style=for-the-badge&labelColor=C6005A" alt="Wiki Badge"></a>
# Credits
<table id='credit'>
@ -49,7 +61,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271811861-da79accc-095c-4cb3-b7b4-8d48b1449259.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/miro92'>MiRO92</a>
<a href='https://twitter.com/miro92'><img src="https://img.shields.io/badge/Twitter-MiRO92-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="MiRO92"></a>
</td>
<qnblackcat>
@ -58,7 +70,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812521-e52ebf96-7272-4ec0-a149-8e721c053508.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/qnblackcat'>qnblackcat</a>
<a href='https://twitter.com/qnblackcat'><img src="https://img.shields.io/badge/Twitter-qnblackcat-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="qnblackcat"></a>
</td>
<PoomSmart>
@ -67,7 +79,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271811615-96093202-4aec-4e50-a750-8c7b83f3862c.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/poomsmart'>PoomSmart</a>
<a href='https://twitter.com/poomsmart'><img src="https://img.shields.io/badge/Twitter-PoomSmart-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="PoomSmart"></a>
</td>
<level3tjg>
@ -76,7 +88,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812596-7854996a-3825-4971-a9ff-1001b4d153cb.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/level3tjg'>level3tjg</a>
<a href='https://twitter.com/level3tjg'><img src="https://img.shields.io/badge/Twitter-level3tjg-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="level3tjg"></a>
</td>
<BandarHL>
@ -85,7 +97,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812729-2bb63da0-5239-43a4-aa3e-e1daa67e8dc2.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/bandarhl'>BandarHelal</a>
<a href='https://twitter.com/bandarhl'><img src="https://img.shields.io/badge/Twitter-BandarHL-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="BandarHL"></a>
</td>
<Galactic-Dev>
@ -94,10 +106,10 @@
<img src='https://user-images.githubusercontent.com/78001398/271812231-5b7d5d9f-6d19-4174-8478-8f07379ee1ca.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/dev_galactic'>galactic</a>
<a href='https://twitter.com/dev_galactic'><img src="https://img.shields.io/badge/Twitter-dev_galactic-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="dev_galactic"></a>
</td>
</tr>
<tr>
<julioverne>
@ -106,7 +118,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812914-bf26d603-2d94-49f4-9702-f5e66af3f44a.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/ijulioverne'>julioverne</a>
<a href='https://twitter.com/ijulioverne'><img src="https://img.shields.io/badge/Twitter-ijulioverne-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="ijulioverne"></a>
</td>
<hbang>
@ -115,7 +127,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271813035-2e168ee5-fc47-43a6-9307-0fc20c7fca60.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/hashbang'>HASHBANG</a>
<a href='https://twitter.com/hashbang'><img src="https://img.shields.io/badge/Twitter-hashbang-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="hashbang"></a>
</td>
<Lyvendia>
@ -124,7 +136,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812187-1c0d5b24-caba-4616-b875-4c458d10ca55.png' width='110px'>
</a>
<br>
<a href='https://github.com/Lyvendia'>Lyvendia</a>
<a href='https://github.com/Lyvendia'><img src="https://img.shields.io/badge/GitHub-Lyvendia-181717?style=for-the-badge&logo=github&logoColor=white" alt="Lyvendia"></a>
</td>
<therealFoxster>
@ -133,7 +145,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812075-923038a7-5ffa-4ea4-9de4-fdf4e5d556c2.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/therealFoxster'>Foxster</a>
<a href='https://twitter.com/therealFoxster'><img src="https://img.shields.io/badge/Twitter-therealFoxster-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="therealFoxster"></a>
</td>
<ichitaso>
@ -142,7 +154,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271812398-c7e40fa3-4e0b-4be2-aa51-900444d59abd.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/ichitaso'>ichitaso</a>
<a href='https://twitter.com/ichitaso'><img src="https://img.shields.io/badge/Twitter-ichitaso-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="ichitaso"></a>
</td>
<AhmedBafkir>
@ -151,7 +163,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271813114-dcb005f7-b83b-40e6-a9cb-9b661dd6b33b.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/Peaceful_0'>Ahmed Bafkir</a>
<a href='https://twitter.com/Peaceful_0'><img src="https://img.shields.io/badge/Twitter-AhmedBafkir-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="Peaceful_0"></a>
</td>
</tr>
@ -163,7 +175,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271813228-d28471b4-cb67-442c-bd63-276f1641a14e.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/cokepokes'>CokePokes</a>
<a href='https://twitter.com/cokepokes'><img src="https://img.shields.io/badge/Twitter-cokepokes-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="cokepokes"></a>
</td>
<ISnackable>
@ -172,7 +184,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271813311-2027a8de-a08d-4f1b-97a4-167f4bcef497.png' width='110px'>
</a>
<br>
<a href='https://isnackable.me/'>Tommy Teo</a>
<a href='https://isnackable.me/'><img src="https://img.shields.io/badge/Website-isnackable-000000?style=for-the-badge&logo=internet-explorer&logoColor=white" alt="isnackable"></a>
</td>
<dayanch96>
@ -181,7 +193,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271853514-129334b3-498f-4804-aceb-392bf5e373e6.png' width='110px;'>
</a>
<br>
<a href='https://github.com/dayanch96'>dayanch96</a>
<a href='https://github.com/dayanch96'><img src="https://img.shields.io/badge/GitHub-dayanch96-181717?style=for-the-badge&logo=github&logoColor=white" alt="dayanch96"></a>
</td>
<ssuesskind>
@ -190,7 +202,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271853585-77271641-b825-43b1-af57-d9f5b12fe8ff.png' width='110px;'>
</a>
<br>
<a href='https://github.com/ssuesskind'>ssuesskind</a>
<a href='https://github.com/ssuesskind'><img src="https://img.shields.io/badge/GitHub-ssuesskind-181717?style=for-the-badge&logo=github&logoColor=white" alt="ssuesskind"></a>
</td>
<balackburn>
@ -199,7 +211,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271853318-3005deb3-b484-4b2b-a093-44c2af79b9af.png' width='110px;'>
</a>
<br>
<a href='https://github.com/balackburn'>balackburn</a>
<a href='https://github.com/balackburn'><img src="https://img.shields.io/badge/GitHub-balackburn-181717?style=for-the-badge&logo=github&logoColor=white" alt="balackburn"></a>
</td>
<dodieboy>
@ -208,7 +220,7 @@
<img src='https://github.com/arichornlover/YouTubeRebornPlus/assets/78001398/0d43912b-e561-4865-8312-5e241d34bf72' width='110px;'>
</a>
<br>
<a href='https://github.com/dodieboy'>dodieboy</a>
<a href='https://github.com/dodieboy'><img src="https://img.shields.io/badge/GitHub-dodieboy-181717?style=for-the-badge&logo=github&logoColor=white" alt="dodieboy"></a>
</td>
</tr>
@ -220,7 +232,7 @@
<img src='https://github.com/arichornlover/uYouEnhanced/assets/78001398/d1d46f69-d7b9-4e6a-82b6-e5629d26667b' width='110px;'>
</a>
<br>
<a href='https://github.com/bhackel'>bhackel</a>
<a href='https://github.com/bhackel'><img src="https://img.shields.io/badge/GitHub-bhackel-181717?style=for-the-badge&logo=github&logoColor=white" alt="bhackel"></a>
</td>
<theos>
@ -229,7 +241,7 @@
<img src='https://user-images.githubusercontent.com/78001398/271813393-56a63730-a56d-41ba-b473-4d37761526c9.png' width='110px'>
</a>
<br>
<a href='https://theos.dev'>theos</a>
<a href='https://theos.dev'><img src="https://img.shields.io/badge/Website-theos-000000?style=for-the-badge&logo=internet-explorer&logoColor=white" alt="theos"></a>
</td>
</tr>
</table>
@ -271,7 +283,11 @@
16. **YTVideoOverlay:** YTVideoOverlay adds buttons to overlay the video, providing quick access to features like captions, speed control, and quality settings.
17. **LowContrastMode:** LowContrastMode is a tweak that allows users to darken the text in the YouTube app, making it easier to read. **<-- uYouEnhanced Exclusive Feature (subject to change)**
17. **NotificationsTab:** This tweak recreates the Notifications Tab that was removed from the YouTube App back in 2020, also the tweak includes customization for the tab if you are feeling nostalgic.
18. **YTAppVersionSpoofer:** This tweak allows users to spoof the version of the YouTube app they are using, this is designed to spoof to older YouTube App versions. This can be useful for bypassing certain version checks or retaining features that may have been removed/disabled in newer updates. **<-- uYouEnhanced Exclusive Feature (subject to change)**
19. **LowContrastMode (17.33.2-18.34.5 OUTDATED):** LowContrastMode is a tweak that allows users to darken the text in the YouTube app, making it easier to read. which sadly suffers from incompatibility issues and doesn't work right now as of March 19th 2025. **<-- uYouEnhanced Exclusive Feature (subject to change)**
</details>
@ -287,20 +303,21 @@
- **Compatibility:** Requires iOS/iPadOS 15.0 or later.
- For AltStore user:
- My official AltStore repo (uYouEnhanced - iOS 15+): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornloverALT/arichornloverALT.github.io/main/apps.json
- My official AltStore repo (uYouEnhanced - **iOS 15+**): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornlover/arichornlover.github.io/main/apps.json
- My alternative AltStore repo (uYouEnhanced - iOS 14+ - mainly for Trollstore users): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornloverALT/arichornloverALT.github.io/main/apps-legacy.json - not sure if i can update this ipa. this IPA will be locked in YouTube Version **19.20.2**
- My alternative AltStore repo (uYouEnhanced - **iOS 14+ - mainly for Trollstore users**): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornlover/arichornlover.github.io/main/apps-legacy.json - not sure if i can update this ipa. this IPA will be locked in YouTube Version **19.20.2**
- [Open in AltStore (v19.40.4-3.0.4)](https://tinyurl.com/44zmcw8t) - It will take a while to install because AltStore needs to download the IPA first.
- [Open in AltStore (v20.05.4-3.0.4)](https://tinyurl.com/33wr56zm) - It will take a while to install because AltStore needs to download the IPA first.
- NEWS - Nov 27 2024: Please be aware that some of the **uYou** features aren't working in newer versions of YouTube.
<details>
<summary>Version information (last updated: Oct 10, 2024)</summary>
<summary>Version information (last updated: June 13, 2025)</summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 19.40.4 | ✖︎ |
| **YouTube** | Google Inc | 20.23.3 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.4 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
| **OpenYoutubeAndShorts** | [CrossiDev-Studio](https://github.com/CrossiDev-Studio) | 1.0 | [✔︎](https://github.com/CrossiDev-Studio/OpenYoutubeAndShorts) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.9 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
@ -308,22 +325,26 @@
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.1.8 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2 | [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.5 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.14 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.0 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouLoop** | [bhackel](https://github.com/bhackel) | 1.0.0 | [✔︎](https://github.com/bhackel/YouLoop) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.3 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.12.7 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.5 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YouSpeed** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YouSpeed) |
| **YouTimeStamp** | [arichornlover](https://github.com/arichornlover) | 1.0.2 | [✔︎](https://github.com/arichornlover/YouTimeStamp) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTIcons** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTIcons) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
| **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.12.7 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.3 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YouTube-X** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/YouTube-X) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.2.1 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
| **LowContrastMode** | [arichornlover](https://github.com/arichornlover) | 1.5.2 | [✔︎](https://github.com/arichornlover/YTLowContrastMode) |
| **YouTimeStamp** | [arichornlover](https://github.com/arichornlover) | 1.0.1 | [✔︎](https://github.com/arichornlover/YouTimeStamp) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.13.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouTube-X** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.11 | [✔︎](https://github.com/PoomSmart/YouTube-X) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.0 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YouGroupSettings** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YouGroupSettings) |
| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.2.3 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
| **LowContrastMode (Broken Tweak)** | [arichornlover](https://github.com/arichornlover) | 1.5.2 | [✔︎](https://github.com/arichornlover/YTLowContrastMode) |
</details>
@ -331,11 +352,11 @@
| Developer | Tweak Name and Version | App Version Compatibility | iOS Version Compatibility |
|-----------|-----------------------|--------------------------|--------------------------|
| MiRO92 | uYou 2.1 / 2.3~1 | ~v16.42.3~ v17.33.2 - 18.01.6 | iOS 13.0 - iOS 15.8.2 |
| MiRO92 | uYou 3.0 | v18.06.6 - v18.18.2 | iOS 14.0 - iOS 15.8.2 |
| MiRO92 | uYou 3.0.1 | v18.19.1 - v18.41.5 | iOS 14.0 - iOS 17.5.1 |
| MiRO92 | uYou 3.0.2 / 3.0.3 | v19.06.2 - v19.15.1 | iOS 14.0 - iOS 17.5.1 |
| MiRO92 | uYou 3.0.4 | v19.06.2 - v19.22.6 | iOS 14.0 - 17.5.1 |
| MiRO92 | uYou 2.1 / 2.3~1 | ~v16.42.3~ ~v17.33.2 - 18.01.6~ | iOS 13.0 - iOS 15.8.3 |
| MiRO92 | uYou 3.0 | ~v18.06.6 - v18.18.2~ | iOS 14.0 - iOS 15.8.3 |
| MiRO92 | uYou 3.0.1 | ~v18.19.1 - v18.41.5~ | iOS 14.0 - iOS 18.5.0 |
| MiRO92 | uYou 3.0.2 / 3.0.3 | v19.06.2 - v19.15.1 | iOS 15.0 - iOS 18.5.0 |
| MiRO92 | uYou 3.0.4 | v19.20.2 - v19.22.6 | iOS 15.0 - iOS 18.5.0 |
# Building
@ -381,7 +402,7 @@ See [arichornlover - Wiki](https://github.com/arichornlover/uYouEnhanced/wiki/)
<details>
<summary>Read more</summary><br>
# Switch from uYouEnhanced to YTLitePlus (optional)
# Switch from uYouEnhanced to YTLite or YTLitePlus (optional)
Hello, this is here to showcase this tweak. I have been seeing the posts about the YTLitePlus tweak on Reddit for quite some time now and decided to add it here. Before you download or check out the tweak, you should take a look at the pros and cons below to learn more about YTLitePlus.

View file

@ -14,14 +14,14 @@
self.title = @"Change App Icon";
self.selectedIconIndex = -1;
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
self.tableView.dataSource = self;
self.tableView.delegate = self;
[self.view addSubview:self.tableView];
self.backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.backButton setImage:[UIImage customBackButtonImage] forState:UIControlStateNormal];
[self.backButton setImage:[UIImage systemImageNamed:@"chevron.backward"] forState:UIControlStateNormal];
[self.backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithCustomView:self.backButton];
self.navigationItem.leftBarButtonItem = customBackButton;
@ -29,7 +29,7 @@
NSString *path = [[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
self.appIcons = [bundle pathsForResourcesOfType:@"png" inDirectory:@"AppIcons"];
if (![UIApplication sharedApplication].supportsAlternateIcons) {
NSLog(@"Alternate icons are not supported on this device.");
}
@ -40,13 +40,14 @@
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 60.0;
return 80.0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSString *iconPath = self.appIcons[indexPath.row];
@ -54,8 +55,9 @@
UIImage *iconImage = [UIImage imageWithContentsOfFile:iconPath];
cell.imageView.image = iconImage;
cell.imageView.layer.cornerRadius = 10.0;
cell.imageView.layer.cornerRadius = 16.0;
cell.imageView.clipsToBounds = YES;
cell.imageView.contentMode = UIViewContentModeScaleAspectFit;
cell.accessoryType = (indexPath.row == self.selectedIconIndex) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
@ -66,6 +68,7 @@
[tableView deselectRowAtIndexPath:indexPath animated:YES];
self.selectedIconIndex = indexPath.row;
[self saveIcon];
[self.tableView reloadData];
}

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,6 @@
@interface RootOptionsController ()
- (UIImage *)resizeImage:(UIImage *)image newSize:(CGSize)newSize;
@property (strong, nonatomic) UIButton *backButton;
@property (assign, nonatomic) UIUserInterfaceStyle pageStyle;
@ -18,36 +17,40 @@
self.title = @"uYouEnhanced Extras Menu";
[self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName: [UIFont fontWithName:@"YTSans-Bold" size:22], NSForegroundColorAttributeName: [UIColor whiteColor]}];
[self setupBackButton];
[self setupTableView];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.tableView.frame = self.view.bounds;
}
- (void)setupBackButton {
self.backButton = [UIButton buttonWithType:UIButtonTypeCustom];
NSBundle *backIcon = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"]];
UIImage *backImage = [UIImage imageNamed:@"Back.png" inBundle:backIcon compatibleWithTraitCollection:nil];
backImage = [self resizeImage:backImage newSize:CGSizeMake(24, 24)];
backImage = [backImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[self.backButton setTintColor:[UIColor whiteColor]];
[self.backButton setTintColor:[UIColor systemBlueColor]];
[self.backButton setImage:backImage forState:UIControlStateNormal];
[self.backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
[self.backButton setFrame:CGRectMake(0, 0, 24, 24)];
UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithCustomView:self.backButton];
self.navigationItem.leftBarButtonItem = customBackButton;
}
UITableViewStyle style;
if (@available(iOS 13, *)) {
style = UITableViewStyleInsetGrouped;
} else {
style = UITableViewStyleGrouped;
}
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:style];
- (void)setupTableView {
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleInsetGrouped];
self.tableView.translatesAutoresizingMaskIntoConstraints = NO;
self.tableView.dataSource = self;
self.tableView.delegate = self;
[self.view addSubview:self.tableView];
[NSLayoutConstraint activateConstraints:@[
[self.tableView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
[self.tableView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor],
[self.tableView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor],
[self.tableView.heightAnchor constraintEqualToAnchor:self.view.heightAnchor]
[self.tableView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],
[self.tableView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor],
[self.tableView.topAnchor constraintEqualToAnchor:self.view.topAnchor],
[self.tableView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor]
]];
}
@ -64,13 +67,7 @@
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == 0) {
return 2;
}
if (section == 1) {
return 1;
}
return 0;
return (section == 0) ? 2 : 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
@ -78,55 +75,67 @@
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.detailTextLabel.adjustsFontSizeToFitWidth = YES;
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight) {
cell.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
cell.textLabel.textColor = [UIColor blackColor];
cell.detailTextLabel.textColor = [UIColor blackColor];
} else {
cell.backgroundColor = [UIColor colorWithRed:0.110 green:0.110 blue:0.118 alpha:1.0];
cell.textLabel.textColor = [UIColor whiteColor];
cell.textLabel.shadowColor = [UIColor blackColor];
cell.textLabel.shadowOffset = CGSizeMake(1.0, 1.0);
cell.detailTextLabel.textColor = [UIColor whiteColor];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular];
cell.detailTextLabel.adjustsFontSizeToFitWidth = YES;
cell.detailTextLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular];
BOOL isPortrait = UIDevice.currentDevice.orientation == UIDeviceOrientationPortrait;
BOOL isPhone = UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPhone;
if (indexPath.section == 0) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if (indexPath.row == 0) {
cell.textLabel.text = @"Custom Theme Color";
cell.detailTextLabel.text = isPortrait && isPhone ? @"" : @"You must go to uYouEnhanced settings and then go to 'Dark Mode' and set it to 'Custom Dark Mode' for it to work.";
cell.imageView.image = [UIImage systemImageNamed:@"slider.horizontal.3"];
}
if (indexPath.section == 0) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if (indexPath.row == 0) {
cell.textLabel.text = @"Custom Theme Color";
cell.imageView.image = [UIImage systemImageNamed:@"slider.horizontal.3"];
cell.imageView.tintColor = cell.textLabel.textColor;
}
if (indexPath.row == 1) {
cell.textLabel.text = @"Custom Tint Color";
cell.imageView.image = [UIImage systemImageNamed:@"drop.fill"];
cell.imageView.tintColor = cell.textLabel.textColor;
}
if (indexPath.row == 1) {
cell.textLabel.text = @"Custom Tint Color";
cell.detailTextLabel.text = isPortrait && isPhone ? @"" : @"You must go to uYouEnhanced settings and have LowContrastMode enabled and then go to 'LowContrastMode Selector' and set it to 'Custom' for it to work.";
cell.imageView.image = [UIImage systemImageNamed:@"drop.fill"];
}
if (indexPath.section == 1) {
if (indexPath.row == 0) {
cell.textLabel.text = @"Clear Cache";
UILabel *cache = [[UILabel alloc] init];
cache.text = [self getCacheSize];
cache.textColor = [UIColor secondaryLabelColor];
cache.font = [UIFont systemFontOfSize:16];
cache.textAlignment = NSTextAlignmentRight;
[cache sizeToFit];
cell.accessoryView = cache;
cell.imageView.image = [UIImage systemImageNamed:@"trash"];
cell.imageView.tintColor = cell.textLabel.textColor;
}
} else if (indexPath.section == 1) {
if (indexPath.row == 0) {
cell.textLabel.text = @"Clear Cache";
UILabel *cache = [[UILabel alloc] init];
cache.text = [self getCacheSize];
cache.textColor = [UIColor secondaryLabelColor];
cache.font = [UIFont systemFontOfSize:16];
cache.textAlignment = NSTextAlignmentRight;
[cache sizeToFit];
cell.accessoryView = cache;
cell.imageView.image = [UIImage systemImageNamed:@"trash"];
}
}
return cell;
[self applyColorSchemeForCell:cell];
}
- (void)applyColorSchemeForCell:(UITableViewCell *)cell {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight) {
cell.backgroundColor = [UIColor whiteColor];
cell.textLabel.textColor = [UIColor blackColor];
cell.detailTextLabel.textColor = [UIColor blackColor];
} else {
cell.backgroundColor = [UIColor colorWithRed:0.110 green:0.110 blue:0.118 alpha:1.0];
cell.textLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.textColor = [UIColor whiteColor];
}
cell.imageView.tintColor = cell.textLabel.textColor;
}
- (NSString *)getCacheSize {
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:cachePath error:nil];
unsigned long long int folderSize = 0;
for (NSString *fileName in filesArray) {
NSString *filePath = [cachePath stringByAppendingPathComponent:fileName];

View file

@ -5,7 +5,7 @@
// In alphabetical order for tweaks after uYouEnhanced
NSArray *NSUserDefaultsCopyKeys = @[
// uYouEnhanced - gathered using get_keys.py
kReplaceCopyandPasteButtons, kAppTheme, kOLEDKeyboard, kPortraitFullscreen, kFullscreenToTheRight, kSlideToSeek, kYTTapToSeek, kDoubleTapToSeek, kSnapToChapter, kPinchToZoom, kYTMiniPlayer, kStockVolumeHUD, kReplaceYTDownloadWithuYou, kDisablePullToFull, kDisableChapterSkip, kAlwaysShowRemainingTime, kDisableRemainingTime, kEnableShareButton, kEnableSaveToButton, kHideYTMusicButton, kHideAutoplaySwitch, kHideCC, kHideVideoTitle, kDisableCollapseButton, kDisableFullscreenButton, kHideHUD, kHidePaidPromotionCard, kHideChannelWatermark, kHideVideoPlayerShadowOverlayButtons, kHidePreviousAndNextButton, kRedProgressBar, kHideHoverCards, kHideRightPanel, kHideFullscreenActions, kHideSuggestedVideo, kHideHeatwaves, kHideDoubleTapToSeekOverlay, kHideOverlayDarkBackground, kDisableAmbientMode, kHideVideosInFullscreen, kHideRelatedWatchNexts, kHideBuySuperThanks, kHideSubscriptions, kShortsQualityPicker, kRedSubscribeButton, kHideButtonContainers, kHideConnectButton, kHideShareButton, kHideRemixButton, kHideThanksButton, kHideDownloadButton, kHideClipButton, kHideSaveToPlaylistButton, kHideReportButton, kHidePreviewCommentSection, kHideCommentSection, kDisableAccountSection, kDisableAutoplaySection, kDisableTryNewFeaturesSection, kDisableVideoQualityPreferencesSection, kDisableNotificationsSection, kDisableManageAllHistorySection, kDisableYourDataInYouTubeSection, kDisablePrivacySection, kDisableLiveChatSection, kHidePremiumPromos, kHideHomeTab, kLowContrastMode, kClassicVideoPlayer, kFixLowContrastMode, kDisableModernButtons, kDisableRoundedHints, kDisableModernFlags, kYTNoModernUI, kEnableVersionSpoofer, kGoogleSignInPatch, kAdBlockWorkaroundLite, kAdBlockWorkaround, kYouTabFakePremium, kDisableAnimatedYouTubeLogo, kCenterYouTubeLogo, kHideYouTubeLogo, kYTStartupAnimation, kDisableHints, kStickNavigationBar, kHideiSponsorBlockButton, kHideChipBar, kHidePlayNextInQueue, kHideCommunityPosts, kHideChannelHeaderLinks, kiPhoneLayout, kBigYTMiniPlayer, kReExplore, kAutoHideHomeBar, kHideSubscriptionsNotificationBadge, kFixCasting, kNewSettingsUI, kFlex, kGoogleSigninFix,
kReplaceCopyandPasteButtons, kAppTheme, kOLEDKeyboard, kPortraitFullscreen, kFullscreenToTheRight, kSlideToSeek, kYTTapToSeek, kDoubleTapToSeek, kSnapToChapter, kPinchToZoom, kYTMiniPlayer, kStockVolumeHUD, kReplaceYTDownloadWithuYou, kDisablePullToFull, kDisableChapterSkip, kAlwaysShowRemainingTime, kDisableRemainingTime, kEnableShareButton, kEnableSaveToButton, kHideYTMusicButton, kHideAutoplaySwitch, kHideCC, kHideVideoTitle, kDisableCollapseButton, kDisableFullscreenButton, kHideHUD, kHidePaidPromotionCard, kHideChannelWatermark, kHideVideoPlayerShadowOverlayButtons, kHidePreviousAndNextButton, kRedProgressBar, kHideHoverCards, kHideRightPanel, kHideFullscreenActions, kHideSuggestedVideo, kHideHeatwaves, kHideDoubleTapToSeekOverlay, kHideOverlayDarkBackground, kDisableAmbientMode, kHideVideosInFullscreen, kHideRelatedWatchNexts, kHideBuySuperThanks, kHideSubscriptions, kShortsQualityPicker, kRedSubscribeButton, kHideButtonContainers, kHideConnectButton, kHideShareButton, kHideRemixButton, kHideThanksButton, kHideDownloadButton, kHideClipButton, kHideSaveToPlaylistButton, kHideReportButton, kHidePreviewCommentSection, kHideCommentSection, kDisableAccountSection, kDisableAutoplaySection, kDisableTryNewFeaturesSection, kDisableVideoQualityPreferencesSection, kDisableNotificationsSection, kDisableManageAllHistorySection, kDisableYourDataInYouTubeSection, kDisablePrivacySection, kDisableLiveChatSection, kHidePremiumPromos, kHideHomeTab, kLowContrastMode, kClassicVideoPlayer, kDisableModernButtons, kDisableRoundedHints, kDisableModernFlags, kYTNoModernUI, kEnableVersionSpoofer, kGoogleSignInPatch, kAdBlockWorkaroundLite, kAdBlockWorkaround, kYouTabFakePremium, kDisableAnimatedYouTubeLogo, kCenterYouTubeLogo, kHideYouTubeLogo, kYTStartupAnimation, kDisableHints, kStickNavigationBar, kHideiSponsorBlockButton, kHideChipBar, kShowNotificationsTab, kHidePlayNextInQueue, kHideCommunityPosts, kHideChannelHeaderLinks, kiPhoneLayout, kBigYTMiniPlayer, kReExplore, kAutoHideHomeBar, kHideSubscriptionsNotificationBadge, kFixCasting, kNewSettingsUI, kFlex, kGoogleSigninFix,
// uYou - https://github.com/MiRO92/uYou-for-YouTube
@"showedWelcomeVC", @"hideShortsTab", @"hideCreateTab", @"hideCastButton", @"relatedVideosAtTheEndOfYTVideos", @"removeYouTubeAds", @"backgroundPlayback", @"disableAgeRestriction", @"iPadLayout", @"noSuggestedVideoAtEnd", @"shortsProgressBar", @"hideShortsCells", @"removeShortsCell", @"startupPage",
// DEMC - https://github.com/therealFoxster/DontEatMyContent/blob/master/Tweak.h

View file

@ -35,6 +35,12 @@ static void replaceTab(YTIGuideResponse *response) {
%orig(response, error, completion);
}
%end
%hook YTAppGuideServiceCoordinator
- (void)handleResponse:(YTIGuideResponse *)response error:(id)error completion:(id)completion {
replaceTab(response);
%orig;
}
%end
%end
%ctor {

View file

@ -1,3 +1,4 @@
#import <ActivityKit/ActivityKit.h>
#import <UIKit/UIKit.h>
#import <HBLog.h>
#import <Foundation/Foundation.h>
@ -18,6 +19,7 @@
#import <YouTubeHeader/GPBMessage.h>
#import <YouTubeHeader/MLPlayerStickySettings.h>
#import <YouTubeHeader/YTAppDelegate.h>
#import <YouTubeHeader/YTAssetLoader.h>
#import <YouTubeHeader/YTCollectionViewCell.h>
#import <YouTubeHeader/YTIBrowseRequest.h>
#import <YouTubeHeader/YTIButtonRenderer.h>
@ -32,6 +34,8 @@
#import <YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h>
#import <YouTubeHeader/YTInnerTubeCollectionViewController.h>
#import <YouTubeHeader/YTInlinePlayerBarContainerView.h>
#import <YouTubeHeader/YTIShelfRenderer.h>
#import <YouTubeHeader/YTBrowseViewController.h>
#import <YouTubeHeader/YTIPivotBarItemRenderer.h>
#import <YouTubeHeader/YTIPivotBarRenderer.h>
#import <YouTubeHeader/YTIPivotBarSupportedRenderers.h>
@ -44,8 +48,8 @@
#import <YouTubeHeader/YTPlayerBarController.h>
#import <YouTubeHeader/YTPlayerBarRectangleDecorationView.h>
#import <YouTubeHeader/YTPlayerOverlay.h>
#import <YouTubeHeader/YTPlayerOverlayProvider.h>
#import <YouTubeHeader/YTPlayerOverlayManager.h>
#import <YouTubeHeader/YTPlayerOverlayProvider.h>
#import <YouTubeHeader/QTMIcon.h>
#import <YouTubeHeader/YTReelModel.h>
#import <YouTubeHeader/YTReelWatchPlaybackOverlayView.h>
#import <YouTubeHeader/YTResponder.h>
@ -143,7 +147,6 @@ static NSString *const kHidePremiumPromos = @"hidePremiumPromos_enabled";
static NSString *const kHideHomeTab = @"hideHomeTab_enabled";
static NSString *const kLowContrastMode = @"lowContrastMode_enabled";
static NSString *const kClassicVideoPlayer = @"classicVideoPlayer_enabled";
static NSString *const kFixLowContrastMode = @"fixLowContrastMode_enabled";
static NSString *const kDisableModernButtons = @"disableModernButtons_enabled";
static NSString *const kDisableRoundedHints = @"disableRoundedHints_enabled";
static NSString *const kDisableModernFlags = @"disableModernFlags_enabled";
@ -162,6 +165,7 @@ static NSString *const kDisableHints = @"disableHints_enabled";
static NSString *const kStickNavigationBar = @"stickNavigationBar_enabled";
static NSString *const kHideiSponsorBlockButton = @"hideiSponsorBlockButton_enabled";
static NSString *const kHideChipBar = @"hideChipBar_enabled";
static NSString *const kShowNotificationsTab = @"showNotificationsTab_enabled";
static NSString *const kHidePlayNextInQueue = @"hidePlayNextInQueue_enabled";
static NSString *const kHideCommunityPosts = @"hideCommunityPosts_enabled";
static NSString *const kHideChannelHeaderLinks = @"hideChannelHeaderLinks_enabled";
@ -303,11 +307,6 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
- (void)settingsAction;
@end
// YTSpeed
@interface YTVarispeedSwitchControllerOption : NSObject
- (id)initWithTitle:(id)title rate:(float)rate;
@end
@interface MLHAMQueuePlayer : NSObject
@property id playerEventCenter;
@property id delegate;
@ -316,10 +315,7 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
@end
// MLPlayerStickySettings Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/MLPlayerStickySettings.h
@interface MLPlayerEventCenter : NSObject
- (void)broadcastRateChange:(float)rate;
@end
// MLPlayerEventCenter Header has been moved to https://github.com/PoomSmart/YouTubeHeader/blob/main/MLPlayerEventCenter.h
@interface HAMPlayerInternal : NSObject
- (void)setRate:(float)rate;

View file

@ -17,6 +17,104 @@ NSBundle *uYouPlusBundle() {
NSBundle *tweakBundle = uYouPlusBundle();
//
// Notifications Tab appearance
UIImage *resizeImage(UIImage *image, CGSize newSize) {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
static int getNotificationIconStyle() {
return [[NSUserDefaults standardUserDefaults] integerForKey:@"notificationIconStyle"];
}
// Notifications Tab - @arichornlover & @dayanch96
%group gShowNotificationsTab
%hook YTAppPivotBarItemStyle
- (UIImage *)pivotBarItemIconImageWithIconType:(int)type color:(UIColor *)color useNewIcons:(BOOL)isNew selected:(BOOL)isSelected {
NSString *imageName;
UIColor *iconColor;
switch (getNotificationIconStyle()) {
case 1: // Thin outline style (2020+)
imageName = isSelected ? @"notifications_selected" : @"notifications_24pt";
iconColor = [%c(YTColor) white1];
break;
case 2: // Filled style (2018+)
imageName = @"notifications_selected";
iconColor = isSelected ? [%c(YTColor) white1] : [UIColor grayColor];
break;
case 3: // Inbox style (2014+)
imageName = @"inbox_selected";
iconColor = isSelected ? [%c(YTColor) white1] : [UIColor grayColor];
break;
default: // Default style
imageName = isSelected ? @"notifications_selected" : @"notifications_unselected";
iconColor = [%c(YTColor) white1];
break;
}
NSString *imagePath = [tweakBundle pathForResource:imageName ofType:@"png" inDirectory:@"UI"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
CGSize newSize = CGSizeMake(24, 24);
image = resizeImage(image, newSize);
image = [%c(QTMIcon) tintImage:image color:iconColor];
return type == YT_NOTIFICATIONS ? image : %orig;
}
%end
%hook YTPivotBarView
- (void)setRenderer:(YTIPivotBarRenderer *)renderer {
@try {
YTIBrowseEndpoint *endPoint = [[%c(YTIBrowseEndpoint) alloc] init];
[endPoint setBrowseId:@"FEnotifications_inbox"];
YTICommand *command = [[%c(YTICommand) alloc] init];
[command setBrowseEndpoint:endPoint];
YTIPivotBarItemRenderer *itemBar = [[%c(YTIPivotBarItemRenderer) alloc] init];
[itemBar setPivotIdentifier:@"FEnotifications_inbox"];
YTIIcon *icon = [itemBar icon];
[icon setIconType:YT_NOTIFICATIONS];
[itemBar setNavigationEndpoint:command];
YTIFormattedString *formatString;
if (getNotificationIconStyle() == 3) {
formatString = [%c(YTIFormattedString) formattedStringWithString:@"Inbox"];
} else {
formatString = [%c(YTIFormattedString) formattedStringWithString:@"Notifications"];
}
[itemBar setTitle:formatString];
YTIPivotBarSupportedRenderers *barSupport = [[%c(YTIPivotBarSupportedRenderers) alloc] init];
[barSupport setPivotBarItemRenderer:itemBar];
[renderer.itemsArray addObject:barSupport];
} @catch (NSException *exception) {
NSLog(@"Error setting renderer: %@", exception.reason);
}
%orig(renderer);
}
%end
%hook YTBrowseViewController
- (void)viewDidLoad {
%orig;
@try {
YTICommand *navEndpoint = [self valueForKey:@"_navEndpoint"];
if ([navEndpoint.browseEndpoint.browseId isEqualToString:@"FEnotifications_inbox"]) {
UIViewController *notificationsViewController = [[UIViewController alloc] init];
[self addChildViewController:notificationsViewController];
// FIXME: View issues
[notificationsViewController.view setFrame:CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:notificationsViewController.view];
[self.view endEditing:YES];
[notificationsViewController didMoveToParentViewController:self];
}
} @catch (NSException *exception) {
NSLog(@"Cannot show notifications view controller: %@", exception.reason);
}
}
%end
%end
// LEGACY VERSION ⚠️
// Hide the (Connect / Thanks / Save / Report) Buttons under the Video Player - 17.33.2 and up - @arichornlover (inspired by @PoomSmart's version)
%hook _ASDisplayView
@ -175,7 +273,7 @@ YTMainAppControlsOverlayView *controlsOverlayView;
}
%end
// Fixes uYou crash when trying to play video (qnblackcat/#1422) - @Dayanch96
// Fixes uYou crash when trying to play video (#1422)
%hook YTPlayerOverlayManager
%property (nonatomic, assign) float currentPlaybackRate;
@ -222,6 +320,23 @@ YTMainAppControlsOverlayView *controlsOverlayView;
%hook YTIPlayerResponse
- (BOOL)isMonetized { return NO; }
%new(@@:)
- (NSMutableArray *)playerAdsArray {
return [NSMutableArray array];
}
%new(@@:)
- (NSMutableArray *)adSlotsArray {
return [NSMutableArray array];
}
%end
%hook YTIClientMdxGlobalConfig
%new(B@:)
- (BOOL)enableSkippableAd { return YES; }
%end
%hook YTHotConfig
- (BOOL)clientInfraClientConfigIosEnableFillingEncodedHacksInnertubeContext { return NO; }
%end
%hook YTAdShieldUtils
@ -230,7 +345,7 @@ YTMainAppControlsOverlayView *controlsOverlayView;
%end
%hook YTDataUtils
+ (id)spamSignalsDictionary { return @{}; }
+ (id)spamSignalsDictionary { return @{ @"ms": @"" }; }
+ (id)spamSignalsDictionaryWithoutIDFA { return @{}; }
%end
@ -251,11 +366,11 @@ YTMainAppControlsOverlayView *controlsOverlayView;
%end
%hook YTReelInfinitePlaybackDataSource
- (void)setReels:(NSMutableOrderedSet <YTReelModel *> *)reels {
[reels removeObjectsAtIndexes:[reels indexesOfObjectsPassingTest:^BOOL(YTReelModel *obj, NSUInteger idx, BOOL *stop) {
return [obj respondsToSelector:@selector(videoType)] ? obj.videoType == 3 : NO;
}]];
%orig;
- (YTReelModel *)makeContentModelForEntry:(id)entry {
YTReelModel *model = %orig;
if ([model respondsToSelector:@selector(videoType)] && model.videoType == 3)
return nil;
return model;
}
%end
%end
@ -268,13 +383,28 @@ YTMainAppControlsOverlayView *controlsOverlayView;
%end
%hook YTIPlayerResponse
- (BOOL)isMonetized { return NO; }
%new(@@:)
- (NSMutableArray *)playerAdsArray {
return [NSMutableArray array];
}
%new(@@:)
- (NSMutableArray *)adSlotsArray {
return [NSMutableArray array];
}
%end
%hook YTIClientMdxGlobalConfig
%new(B@:)
- (BOOL)enableSkippableAd { return YES; }
%end
%hook YTHotConfig
- (BOOL)clientInfraClientConfigIosEnableFillingEncodedHacksInnertubeContext { return NO; }
%end
%hook YTAdShieldUtils
+ (id)spamSignalsDictionary { return @{}; }
+ (id)spamSignalsDictionaryWithoutIDFA { return @{}; }
%end
%hook YTDataUtils
+ (id)spamSignalsDictionary { return @{}; }
+ (id)spamSignalsDictionary { return @{ @"ms": @"" }; }
+ (id)spamSignalsDictionaryWithoutIDFA { return @{}; }
%end
%hook YTAdsInnerTubeContextDecorator
@ -289,7 +419,21 @@ YTMainAppControlsOverlayView *controlsOverlayView;
%hook MDXSession
- (void)adPlaying:(id)ad {}
%end
%hook YTReelDataSource
- (YTReelModel *)makeContentModelForEntry:(id)entry {
YTReelModel *model = %orig;
if ([model respondsToSelector:@selector(videoType)] && model.videoType == 3)
return nil;
return model;
}
%end
%hook YTReelInfinitePlaybackDataSource
- (YTReelModel *)makeContentModelForEntry:(id)entry {
YTReelModel *model = %orig;
if ([model respondsToSelector:@selector(videoType)] && model.videoType == 3)
return nil;
return model;
}
- (void)setReels:(NSMutableOrderedSet <YTReelModel *> *)reels {
[reels removeObjectsAtIndexes:[reels indexesOfObjectsPassingTest:^BOOL(YTReelModel *obj, NSUInteger idx, BOOL *stop) {
return [obj respondsToSelector:@selector(videoType)] ? obj.videoType == 3 : NO;
@ -298,42 +442,29 @@ YTMainAppControlsOverlayView *controlsOverlayView;
}
%end
NSString *getAdString(NSString *description) {
if ([description containsString:@"brand_promo"])
return @"brand_promo";
if ([description containsString:@"carousel_footered_layout"])
return @"carousel_footered_layout";
if ([description containsString:@"carousel_headered_layout"])
return @"carousel_headered_layout";
if ([description containsString:@"feed_ad_metadata"])
return @"feed_ad_metadata";
if ([description containsString:@"full_width_portrait_image_layout"])
return @"full_width_portrait_image_layout";
if ([description containsString:@"full_width_square_image_layout"])
return @"full_width_square_image_layout";
if ([description containsString:@"landscape_image_wide_button_layout"])
return @"landscape_image_wide_button_layout";
if ([description containsString:@"post_shelf"])
return @"post_shelf";
if ([description containsString:@"product_carousel"])
return @"product_carousel";
if ([description containsString:@"product_engagement_panel"])
return @"product_engagement_panel";
if ([description containsString:@"product_item"])
return @"product_item";
if ([description containsString:@"shopping_carousel"])
return @"shopping_carousel";
if ([description containsString:@"statement_banner"])
return @"statement_banner";
if ([description containsString:@"square_image_layout"])
return @"square_image_layout";
if ([description containsString:@"text_image_button_layout"])
return @"text_image_button_layout";
if ([description containsString:@"text_search_ad"])
return @"text_search_ad";
if ([description containsString:@"video_display_full_layout"])
return @"video_display_full_layout";
if ([description containsString:@"video_display_full_buttoned_layout"])
return @"video_display_full_buttoned_layout";
for (NSString *str in @[ @"brand_promo",
@"carousel_footered_layout",
@"carousel_headered_layout",
@"eml.expandable_metadata",
@"feed_ad_metadata",
@"full_width_portrait_image_layout",
@"full_width_square_image_layout",
@"landscape_image_wide_button_layout",
@"post_shelf",
@"product_carousel",
@"product_engagement_panel",
@"product_item",
@"shopping_carousel",
@"shopping_item_card_list",
@"statement_banner",
@"square_image_layout",
@"text_image_button_layout",
@"text_search_ad",
@"video_display_full_layout",
@"video_display_full_buttoned_layout"
])
if ([description containsString:str]) return str;
return nil;
}
static BOOL isAdRenderer(YTIElementRenderer *elementRenderer, int kind) {
@ -352,6 +483,16 @@ static BOOL isAdRenderer(YTIElementRenderer *elementRenderer, int kind) {
static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItemSectionRenderer *> *array) {
NSMutableArray <YTIItemSectionRenderer *> *newArray = [array mutableCopy];
NSIndexSet *removeIndexes = [newArray indexesOfObjectsPassingTest:^BOOL(YTIItemSectionRenderer *sectionRenderer, NSUInteger idx, BOOL *stop) {
if ([sectionRenderer isKindOfClass:%c(YTIShelfRenderer)]) {
YTIShelfSupportedRenderers *content = ((YTIShelfRenderer *)sectionRenderer).content;
YTIHorizontalListRenderer *horizontalListRenderer = content.horizontalListRenderer;
NSMutableArray <YTIHorizontalListSupportedRenderers *> *itemsArray = horizontalListRenderer.itemsArray;
NSIndexSet *removeItemsArrayIndexes = [itemsArray indexesOfObjectsPassingTest:^BOOL(YTIHorizontalListSupportedRenderers *horizontalListSupportedRenderers, NSUInteger idx2, BOOL *stop2) {
YTIElementRenderer *elementRenderer = horizontalListSupportedRenderers.elementRenderer;
return isAdRenderer(elementRenderer, 4);
}];
[itemsArray removeObjectsAtIndexes:removeItemsArrayIndexes];
}
if (![sectionRenderer isKindOfClass:%c(YTIItemSectionRenderer)])
return NO;
NSMutableArray <YTIItemSectionSupportedRenderers *> *contentsArray = sectionRenderer.contentsArray;
@ -369,6 +510,13 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
[newArray removeObjectsAtIndexes:removeIndexes];
return newArray;
}
%hook _ASDisplayView
- (void)didMoveToWindow {
%orig;
if (([self.accessibilityIdentifier isEqualToString:@"eml.expandable_metadata.vpp"]))
[self removeFromSuperview];
}
%end
%hook YTInnerTubeCollectionViewController
- (void)displaySectionsWithReloadingSectionControllerByRenderer:(id)renderer {
NSMutableArray *sectionRenderers = [self valueForKey:@"_sectionRenderers"];
@ -423,20 +571,13 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
%group gCenterYouTubeLogo
%hook YTNavigationBarTitleView
- (void)setShouldCenterNavBarTitleView:(BOOL)center {
center = YES;
%orig(center);
if (center) {
[self alignCustomViewToCenterOfWindow];
}
[self alignCustomViewToCenterOfWindow];
}
- (BOOL)shouldCenterNavBarTitleView {
return YES;
}
%new;
- (void)alignCustomViewToCenterOfWindow {
CGRect frame = self.customView.frame;
frame.origin.x = (self.window.frame.size.width - frame.size.width) / 2;
self.customView.frame = frame;
}
%end
%end
@ -585,11 +726,13 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
// Fake premium - @bhackel
%group gFakePremium
// YouTube Premium Logo - @arichornlover & bhackel
%hook YTHeaderLogoController
%hook YTHeaderLogoControllerImpl // originally was "YTHeaderLogoController"
- (void)setTopbarLogoRenderer:(YTITopbarLogoRenderer *)renderer {
// Modify the type of the icon before setting the renderer
YTIIcon *iconImage = renderer.iconImage;
iconImage.iconType = 537; // magic number for Premium icon, hopefully it doesnt change. 158 is default logo.
YTIIcon *icon = renderer.iconImage;
if (icon) {
icon.iconType = YT_PREMIUM_LOGO; // magic number (537) for Premium icon, hopefully it doesnt change. 158 (YT_DEFAULT_LOGO) is default logo.
}
// Use this modified renderer
%orig;
}
@ -637,7 +780,7 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
// Check if the icon is for the premium advertisement - 117 is magic number for the icon
if ([icon hasIconType] && icon.iconType == 117) {
// Modify the icon type to be Premium
icon.iconType = 741; // Magic number for premium icon
icon.iconType = YT_PREMIUM_STANDALONE; // Magic number (741) for premium icon
// Modify the text
((YTIStringRun *)(compactLinkRenderer.title.runsArray.firstObject)).text = LOC(@"FAKE_YOUR_PREMIUM_BENEFITS");
}
@ -667,7 +810,7 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
// TODO Link this to the uYou downloads page
YTIItemSectionSupportedRenderers *newItemSectionSupportedRenderers = [subContentsArray[yourVideosCellIndex] copy];
((YTIStringRun *)(newItemSectionSupportedRenderers.compactListItemRenderer.title.runsArray.firstObject)).text = LOC(@"FAKE_DOWNLOADS");
newItemSectionSupportedRenderers.compactListItemRenderer.thumbnail.iconThumbnailRenderer.icon.iconType = 147;
newItemSectionSupportedRenderers.compactListItemRenderer.thumbnail.iconThumbnailRenderer.icon.iconType = YT_DOWNLOADS_OUTLINE; // original icon number was 147
// Insert this cell after the Your Videos cell
[subContentsArray insertObject:newItemSectionSupportedRenderers atIndex:yourVideosCellIndex + 1];
// Inject a note to not modify this again
@ -690,7 +833,7 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
%end
// Disable animated YouTube Logo - @bhackel
%hook YTHeaderLogoController
%hook YTHeaderLogoControllerImpl // originally was "YTHeaderLogoController"
- (void)configureYoodleNitrateController {
if (IS_ENABLED(kDisableAnimatedYouTubeLogo)) {
return;
@ -699,43 +842,6 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
}
%end
// Shorts Quality Picker - @arichornlover
%group gShortsQualityPicker
%hook YTHotConfig
- (BOOL)enableOmitAdvancedMenuInShortsVideoQualityPicker { return YES; }
- (BOOL)enableShortsVideoQualityPicker { return YES; }
- (BOOL)iosEnableImmersiveLivePlayerVideoQuality { return YES; }
- (BOOL)iosEnableShortsPlayerVideoQuality { return YES; }
- (BOOL)iosEnableShortsPlayerVideoQualityRestartVideo { return YES; }
- (BOOL)iosEnableSimplerTitleInShortsVideoQualityPicker { return YES; }
%end
%end
// YTShortsProgress - https://github.com/PoomSmart/YTShortsProgress/
%hook YTShortsPlayerViewController
- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end
%hook YTReelPlayerViewController
- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end
%hook YTReelPlayerViewControllerSub
- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end
%hook YTColdConfig
- (BOOL)iosEnableVideoPlayerScrubber { return YES; }
- (BOOL)mobileShortsTablnlinedExpandWatchOnDismiss { return YES; }
%end
%hook YTHotConfig
- (BOOL)enablePlayerBarForVerticalVideoWhenControlsHiddenInFullscreen { return YES; }
%end
// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo
%hook YTMainAppVideoPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
@ -767,58 +873,6 @@ static NSMutableArray <YTIItemSectionRenderer *> *filteredArray(NSArray <YTIItem
%end
%end
// Fix LowContrastMode - @arichornlover
static int contrastMode() {
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSComparisonResult result1 = [appVersion compare:@"17.33.2" options:NSNumericSearch];
NSComparisonResult result2 = [appVersion compare:@"17.38.10" options:NSNumericSearch];
if (result1 != NSOrderedAscending && result2 != NSOrderedDescending) {
return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"];
} else {
return 0;
}
}
%group gFixLowContrastMode
%hook NSUserDefaults
- (NSInteger)integerForKey:(NSString *)defaultName {
if ([defaultName isEqualToString:@"lcm"]) {
return contrastMode();
}
return %orig;
}
%end
%hook NSBundle
- (id)objectForInfoDictionaryKey:(NSString *)key {
if ([key isEqualToString:@"CFBundleShortVersionString"]) {
return @"17.38.10";
}
return %orig;
}
%end
%hook YTVersionUtils
+ (NSString *)appVersion {
return @"17.38.10";
}
%end
/*
%hook YTSettingsCell // Remove v17.38.10 Version Number - @Dayanch96
- (void)setDetailText:(id)arg1 {
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appVersion = infoDictionary[@"CFBundleShortVersionString"];
if ([arg1 isEqualToString:@"17.38.10"]) {
arg1 = appVersion;
} %orig(arg1);
}
%end
*/
%end
// Disable Modern/Rounded Buttons (_ASDisplayView Version's not supported) - @arichornlover
%group gDisableModernButtons
%hook YTQTMButton // Disable Modern/Rounded Buttons
@ -982,7 +1036,7 @@ static int contrastMode() {
if (IS_ENABLED(@"hideNotificationButton_enabled")) {
self.notificationButton.hidden = YES;
}
if (IS_ENABLED(@"hideSponsorBlockButton_enabled")) {
if (IS_ENABLED(kHideiSponsorBlockButton)) {
self.sponsorBlockButton.hidden = YES;
self.sponsorBlockButton.frame = CGRectZero;
}
@ -1033,7 +1087,10 @@ static int contrastMode() {
%group gFullscreenToTheRight
%hook YTWatchViewController
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
return UIInterfaceOrientationMaskLandscapeRight;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeRight;
}
%end
%end
@ -1070,7 +1127,7 @@ static int contrastMode() {
%group gStockVolumeHUD
%hook YTColdConfig
- (BOOL)iosUseSystemVolumeControlInFullscreen {
return IS_ENABLED(kStockVolumeHUD) ? YES : %orig;
return IS_ENABLED(kStockVolumeHUD) ? YES : NO;
}
%end
%hook UIApplication
@ -1404,6 +1461,61 @@ static int contrastMode() {
}
%end
// Shorts Quality Picker - @arichornlover
%group gShortsQualityPicker
%hook YTHotConfig
- (BOOL)enableOmitAdvancedMenuInShortsVideoQualityPicker { return YES; }
- (BOOL)enableShortsVideoQualityPicker { return YES; }
- (BOOL)iosEnableImmersiveLivePlayerVideoQuality { return YES; }
- (BOOL)iosEnableShortsPlayerVideoQuality { return YES; }
- (BOOL)iosEnableShortsPlayerVideoQualityRestartVideo { return YES; }
- (BOOL)iosEnableSimplerTitleInShortsVideoQualityPicker { return YES; }
%end
%end
// YTShortsProgress - https://github.com/PoomSmart/YTShortsProgress/
%hook YTShortsPlayerViewController
- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end
%hook YTReelPlayerViewController
- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end
%hook YTReelPlayerViewControllerSub
- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end
%hook YTColdConfig
- (BOOL)iosEnableVideoPlayerScrubber { return YES; }
- (BOOL)mobileShortsTablnlinedExpandWatchOnDismiss { return YES; }
%end
%hook YTHotConfig
- (BOOL)enablePlayerBarForVerticalVideoWhenControlsHiddenInFullscreen { return YES; }
%end
// Hide Shorts Cells - for uYou 3.0.4+ (PoomSmart/YTUnShorts)
%hook YTIElementRenderer
- (NSData *)elementData {
// Check if hideShortsCells is enabled
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"hideShortsCells"]) {
NSString *description = [self description];
BOOL hasShorts = ([description containsString:@"shorts_shelf"] || [description containsString:@"shorts_video_cell"] || [description containsString:@"shorts_grid_shelf_footer"] || [description containsString:@"youtube_shorts_24"]);
BOOL hasShortsInHistory = [description containsString:@"compact_video.eml"] && [description containsString:@"youtube_shorts_"];
if (hasShorts || hasShortsInHistory) {
return [NSData data];
}
}
return %orig;
}
%end
// Shorts Controls Overlay Options
%hook _ASDisplayView
- (void)didMoveToWindow {
@ -1479,10 +1591,10 @@ static int contrastMode() {
// Red Subscribe Button - 17.33.2 and up - @arichornlover
%hook ELMContainerNode
- (void)setBackgroundColor:(id)color {
- (void)setBackgroundColor:(UIColor *)color {
NSString *description = [self description];
if (IS_ENABLED(kRedSubscribeButton)) {
if ([description containsString:@"eml.compact_subscribe_button"]) {
if ([description containsString:@"eml.compact_subscribe_button"]) {
if (IS_ENABLED(@"kRedSubscribeButton")) {
color = [UIColor redColor];
}
}
@ -1654,10 +1766,16 @@ static int contrastMode() {
// %end
%end
// Remove “Play next in queue” from the menu (@PoomSmart) - qnblackcat/uYouPlus#1138
// Hide "Play next in queue" - qnblackcat/uYouPlus#1138
%hook YTMenuItemVisibilityHandler
- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer {
return IS_ENABLED(kHidePlayNextInQueue) && renderer.icon.iconType == 251 && renderer.secondaryIcon.iconType == 741 ? NO : %orig;
return IS_ENABLED(kHidePlayNextInQueue) && renderer.icon.iconType == YT_QUEUE_PLAY_NEXT ? NO : %orig;
}
%end
%hook YTMenuItemVisibilityHandlerImpl
- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer {
return IS_ENABLED(kHidePlayNextInQueue) && renderer.icon.iconType == YT_QUEUE_PLAY_NEXT ? NO : %orig;
}
%end
@ -1792,6 +1910,9 @@ static int contrastMode() {
if (IS_ENABLED(kHideChipBar)) {
%init(gHideChipBar);
}
if (IS_ENABLED(kShowNotificationsTab)) {
%init(gShowNotificationsTab);
}
if (IS_ENABLED(kPortraitFullscreen)) {
%init(gPortraitFullscreen);
}
@ -1822,9 +1943,6 @@ static int contrastMode() {
if (IS_ENABLED(kClassicVideoPlayer)) {
%init(gClassicVideoPlayer);
}
if (IS_ENABLED(kFixLowContrastMode)) {
%init(gFixLowContrastMode);
}
if (IS_ENABLED(kDisableModernButtons)) {
%init(gDisableModernButtons);
}
@ -1910,7 +2028,6 @@ static int contrastMode() {
[userDefaults setBool:enableVersionSpooferEnabled forKey:kEnableVersionSpoofer];
}
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kFixLowContrastMode] forKey:kFixLowContrastMode];
[userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableModernButtons] forKey:kDisableModernButtons];
[userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableRoundedHints] forKey:kDisableRoundedHints];
[userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableModernFlags] forKey:kDisableModernFlags];

View file

@ -3,6 +3,7 @@
#import <YouTubeHeader/YTCommonUtils.h>
#import <YouTubeHeader/YTColorPalette.h>
#import <YouTubeHeader/YTCommonColorPalette.h>
#import <YouTubeHeader/YTSingleVideoController.h>
#import <YouTubeHeader/GOODialogView.h>
#import <YouTubeHeader/GPBDescriptor.h>
#import <YouTubeHeader/GPBUnknownField.h>

View file

@ -99,7 +99,8 @@ typedef NS_ENUM(NSInteger, ShareEntityType) {
ShareEntityFieldPlaylist = 2,
ShareEntityFieldChannel = 3,
ShareEntityFieldPost = 6,
ShareEntityFieldClip = 8
ShareEntityFieldClip = 8,
ShareEntityFieldShortFlag = 10
};
static inline NSString* extractIdWithFormat(GPBUnknownFields *fields, NSInteger fieldNumber, NSString *format) {
@ -137,8 +138,12 @@ static BOOL showNativeShareSheet(NSString *serializedShareEntity, UIView *source
}
}
if (!shareUrl)
shareUrl = extractIdWithFormat(fields, ShareEntityFieldVideo, @"https://youtube.com/watch?v=%@");
if (!shareUrl) {
NSString *format = @"https://youtube.com/watch?v=%@";
if ([fields fields:ShareEntityFieldShortFlag])
format = @"https://youtube.com/shorts/%@";
shareUrl = extractIdWithFormat(fields, ShareEntityFieldVideo, format);
}
if (!shareUrl)
shareUrl = extractIdWithFormat(fields, ShareEntityFieldPost, @"https://youtube.com/post/%@");
@ -390,6 +395,17 @@ static void refreshUYouAppearance() {
}
%end
%hook YTPlayerViewController
- (id)varispeedController {
id controller = %orig;
if (controller == nil && [self respondsToSelector:@selector(overlayManager)])
controller = [self.overlayManager varispeedController];
return controller;
}
%end
%ctor {
%init;
if (IS_ENABLED(kGoogleSignInPatch)) {

View file

@ -4,8 +4,15 @@
#import <YouTubeHeader/YTSettingsSectionItemManager.h>
#import <YouTubeHeader/YTUIUtils.h>
#import <YouTubeHeader/YTSettingsPickerViewController.h>
#import <YouTubeHeader/YTToastResponderEvent.h>
#import "uYouPlus.h"
// custom
@interface YTSettingsCell ()
- (void)setIndicatorIcon:(int)icon;
- (void)setTitleDescription:(id)titleDescription;
@end
// For displaying snackbars
@interface YTHUDMessage : NSObject
+ (id)messageWithText:(id)text;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -11,7 +11,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.1.7
uses: actions/checkout@v4.2.2
- name: Set up Git
run: |
@ -20,11 +20,12 @@ jobs:
- name: Add uYouEnhanced submodules
run: |
git submodule add https://github.com/dayanch96/uYouLocalization.git Tweaks/uYouLocalization
git submodule add https://github.com/arichornloverALT/YTHoldForSpeed.git Tweaks/YTHoldForSpeed
git submodule add https://github.com/arichornloverALT/YouGroupSettings.git Tweaks/YouGroupSettings
git submodule add https://github.com/arichornloverALT/YouTimeStamp.git Tweaks/YouTimeStamp
git submodule add https://github.com/bhackel/YouLoop.git Tweaks/YouLoop
git submodule add https://github.com/dayanch96/uYouLocalization.git Tweaks/uYouLocalization
git submodule add https://github.com/PoomSmart/YTIcons Tweaks/YTIcons
git submodule add https://github.com/protocolbuffers/protobuf.git Tweaks/protobuf
git add .
git commit -m "added uYouEnhanced submodules"
@ -60,6 +61,8 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/YTClassicVideoQuality
git add .
git submodule update --init --recursive --remote Tweaks/YTIcons
git add .
git submodule update --init --recursive --remote Tweaks/YTUHD
git add .
git submodule update --init --recursive --remote Tweaks/YTVideoOverlay

@ -1 +1 @@
Subproject commit 15b061bf414cf29fd0d4e0e124e9e2ccb99326b0
Subproject commit 92cfde8ee6e76fa28378c644b9be81a5dcf233b0

@ -1 +1 @@
Subproject commit a9134c82b032b145541f3c06a3c4950487f01474
Subproject commit b9b0cd5784ef63922b9424c9c32b0e7f10898d49

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

1
Tweaks/PSHeader Submodule

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

@ -1 +1 @@
Subproject commit 9ef7bbb3b7d7cd2218a9884d8680625db0d898f3
Subproject commit f840113b3820fe5b90a8b614c1a0876c5c9cc5cb

@ -1 +1 @@
Subproject commit a22ef4deb929c6622069290bb340d21b280f300e
Subproject commit 634443f699950a1dbc2a4a4a1730a788c8683ae2

@ -1 +1 @@
Subproject commit d66bc3db70b0193db22174764c564f2017593a53
Subproject commit 959174f6464da71a5088371759d6659c8f9c3ecf

@ -1 +1 @@
Subproject commit 5af54ea6bf3aed6a615094fa285669a0e46ece51
Subproject commit ba20df7ad8d0dfdb024688f3d92735f887fe5908

1
Tweaks/YTIcons Submodule

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

@ -1 +0,0 @@
Subproject commit 96508bf22012d588a6ad29bfff3f694800a3a525

@ -1 +1 @@
Subproject commit 12b4991ade6d3edd1e4fb28fe19bb32b6dc93206
Subproject commit 0f59b38817d554ab692a0053456319847a6ab1a1

@ -1 +1 @@
Subproject commit 40b974fb33677f1c066536277d7bee68f6fa5e23
Subproject commit 3060d66bfd86a85ab446ff9b04a1b6a2ddcb4d6f

@ -1 +1 @@
Subproject commit f5af14fc258cd84d7534bc55c51717f30172c79c
Subproject commit 96c2a82845acc43f8473b6ef46c2385301fda04e

@ -1 +1 @@
Subproject commit 58f76b1271c1ec05d6513e054f46e4080780a0d9
Subproject commit eb33ec3b685a2e974272b971a559da795a1f6972

@ -1 +1 @@
Subproject commit 63fe2c05fd23a517191645cd450115dc6965e0d8
Subproject commit 0548225b0abd354f55d6b2e7f436504e6ce7bca8

@ -1 +1 @@
Subproject commit a308e3eeb6eb60cb8f118cf7fdced0015e584ad4
Subproject commit 041f95f3bf795cbcf4c197a511821b2c574eb66c

@ -1 +1 @@
Subproject commit 7f9831e57ae8e2d37d56068c2ddcfb32bfe8d902
Subproject commit 08e9ff49cfda6513d9f8823773692355902da944

1
Tweaks/YouSlider Submodule

@ -0,0 +1 @@
Subproject commit 20eab9638b4c19b6e9fa507ee3df5dbcec9303ee

1
Tweaks/YouSpeed Submodule

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

@ -1 +1 @@
Subproject commit e89ffe8be85564fe2bfc04345a186c4a02ef456a
Subproject commit 2d03eb904e7e6e60cbc56718710b494b7400043e

@ -1 +1 @@
Subproject commit 6809d9d789b27351a74ac19c48ca5ce53952a1e4
Subproject commit d7253fd7fe9bc2d5c900b156aa0d613de3b867e8

@ -1 +1 @@
Subproject commit b4e1bc798149d68029c89510948600be2986968b
Subproject commit 3e4157c2a84576d175fc73ae422927e3d2531055

@ -1 +1 @@
Subproject commit 44660b306aa17a0bbc346cc14d5da20f05167ac9
Subproject commit 8efdbbb991b27bbf49b425a98be9db45dd3c3b8c