Compare commits
21
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fbafccf1bd | ||
|
|
029ab22b9f | ||
|
|
f4215a7b0b | ||
|
|
0d1e7bad8e | ||
|
|
e97ada36c1 | ||
|
|
4d1b478606 | ||
|
|
24c2f5594f | ||
|
|
c1e3976200 | ||
|
|
0fc9032979 | ||
|
|
b4c70ee668 | ||
|
|
f966182c15 | ||
|
|
1b20c07f03 | ||
|
|
7ad8f9409b | ||
|
|
122d5b8280 | ||
|
|
5744474710 | ||
|
|
faaecd51cb | ||
|
|
8250a1462e | ||
|
|
9371c72a42 | ||
|
|
1acf0a4eba | ||
|
|
1a63491af3 | ||
|
|
e912dc0bda |
@@ -9,6 +9,8 @@ assignees: ''
|
|||||||
|
|
||||||
## ⚠️ Have you read the [FAQ](https://github.com/qnblackcat/uYouPlus/wiki/FAQ)? Make sure you visit the FAQ page first!!! ⚠️
|
## ⚠️ Have you read the [FAQ](https://github.com/qnblackcat/uYouPlus/wiki/FAQ)? Make sure you visit the FAQ page first!!! ⚠️
|
||||||
|
|
||||||
|
_Make sure you complete the template. Otherwise, it will be closed without further explanation!_
|
||||||
|
|
||||||
### Device info
|
### Device info
|
||||||
- iOS/iPadOS version:
|
- iOS/iPadOS version:
|
||||||
- Device model:
|
- Device model:
|
||||||
@@ -27,3 +29,4 @@ _(The crash log can be found in the Settings app - Privacy - Analytics & Improv
|
|||||||
|
|
||||||
|
|
||||||
### Additional context:
|
### Additional context:
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
|
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
|
||||||
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
||||||
|
|
||||||
name: Build uYouPlus Artifact
|
name: Build and Release uYouPlus
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -21,6 +21,11 @@ on:
|
|||||||
default: ""
|
default: ""
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
create_release:
|
||||||
|
description: "Create a draft release"
|
||||||
|
default: false
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -30,6 +35,8 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
name: Build uYouPlus
|
name: Build uYouPlus
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Main
|
- name: Checkout Main
|
||||||
@@ -85,8 +92,8 @@ jobs:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
THEOS: ${{ github.workspace }}/theos
|
THEOS: ${{ github.workspace }}/theos
|
||||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
UYOU_VERSION: ${{ inputs.uyou_version }}
|
||||||
YOUTUBE_URL: ${{ github.event.inputs.decrypted_youtube_url }}
|
YOUTUBE_URL: ${{ inputs.decrypted_youtube_url }}
|
||||||
|
|
||||||
- name: Fix compiling && Build Package
|
- name: Fix compiling && Build Package
|
||||||
id: build_package
|
id: build_package
|
||||||
@@ -98,15 +105,42 @@ jobs:
|
|||||||
echo "::set-output name=package::$(ls -t packages | head -n1)"
|
echo "::set-output name=package::$(ls -t packages | head -n1)"
|
||||||
env:
|
env:
|
||||||
THEOS: ${{ github.workspace }}/theos
|
THEOS: ${{ github.workspace }}/theos
|
||||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
UYOU_VERSION: ${{ inputs.uyou_version }}
|
||||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
env:
|
env:
|
||||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
UYOU_VERSION: ${{ inputs.uyou_version }}
|
||||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||||
with:
|
with:
|
||||||
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
|
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
|
||||||
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
if: ${{ inputs.create_release }}
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
UYOU_VERSION: ${{ inputs.uyou_version }}
|
||||||
|
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||||
|
with:
|
||||||
|
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
|
||||||
|
release_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
|
||||||
|
draft: true
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
- name: Upload Release Asset
|
||||||
|
if: ${{ inputs.create_release }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
UYOU_VERSION: ${{ inputs.uyou_version }}
|
||||||
|
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
||||||
|
asset_name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa
|
||||||
|
asset_content_type: application/vnd.debian.binary-package
|
||||||
|
|||||||
@@ -1,129 +0,0 @@
|
|||||||
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
|
|
||||||
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
|
||||||
# This workflow is not for you. Please use the “Build uYouPlus Artifact” workflow!
|
|
||||||
|
|
||||||
name: Build and Release uYouPlus (draft)
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
uyou_version:
|
|
||||||
description: "The version of uYou"
|
|
||||||
default: "2.1"
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
decrypted_youtube_url:
|
|
||||||
description: "The direct URL to the decrypted YouTube ipa"
|
|
||||||
default: ""
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
youtube_version:
|
|
||||||
description: "The version of YouTube"
|
|
||||||
default: ""
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build uYouPlus
|
|
||||||
runs-on: macos-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Set Env
|
|
||||||
run: echo "workspace=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout Main
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
path: main
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: brew install ldid dpkg
|
|
||||||
|
|
||||||
- name: Setup Theos
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
repository: theos/theos
|
|
||||||
ref: master
|
|
||||||
path: theos
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Download iOS 15 SDK
|
|
||||||
run: |
|
|
||||||
curl -LO https://github.com/chrisharper22/sdks/archive/main.zip
|
|
||||||
TMP=$(mktemp -d)
|
|
||||||
unzip -qq main.zip -d $TMP
|
|
||||||
mv $TMP/sdks-main/*.sdk $THEOS/sdks
|
|
||||||
rm -r main.zip $TMP
|
|
||||||
env:
|
|
||||||
THEOS: ${{ env.workspace }}/theos
|
|
||||||
|
|
||||||
- name: Setup Theos Jailed
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
repository: kabiroberai/theos-jailed
|
|
||||||
ref: master
|
|
||||||
path: theos-jailed
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Install Theos Jailed
|
|
||||||
run: |
|
|
||||||
./theos-jailed/install
|
|
||||||
env:
|
|
||||||
THEOS: ${{ env.workspace }}/theos
|
|
||||||
|
|
||||||
- name: Download uYou && YouTube ipa
|
|
||||||
run: |
|
|
||||||
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h"
|
|
||||||
curl "https://miro92.com/repo/debs/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" --output "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb"
|
|
||||||
wget "$YOUTUBE_URL" --no-verbose -O ./main/YouTube.ipa
|
|
||||||
dpkg-deb -x "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" ./main/Tweaks/uYou/
|
|
||||||
unzip -q ./main/YouTube.ipa -d ./main/tmp
|
|
||||||
rm -rf ./main/tmp/Payload/YouTube.app/PlugIns/*
|
|
||||||
cp -R ./main/Extensions/*.appex ./main/tmp/Payload/YouTube.app/PlugIns
|
|
||||||
|
|
||||||
env:
|
|
||||||
THEOS: ${{ env.workspace }}/theos
|
|
||||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
|
||||||
YOUTUBE_URL: ${{ github.event.inputs.decrypted_youtube_url }}
|
|
||||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
|
||||||
|
|
||||||
- name: Fix compiling && Build Package
|
|
||||||
id: build_package
|
|
||||||
run: |
|
|
||||||
cd ${{ env.workspace }}/main
|
|
||||||
(cd ${{ env.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s#.*#YouPiP_FRAMEWORKS = AVKit AVFoundation UIKit#g" ./Makefile)
|
|
||||||
make package FINALPACKAGE=1
|
|
||||||
echo "::set-output name=package::$(ls -t packages | head -n1)"
|
|
||||||
env:
|
|
||||||
THEOS: ${{ env.workspace }}/theos
|
|
||||||
|
|
||||||
- name: Create Release
|
|
||||||
id: create_release
|
|
||||||
uses: actions/create-release@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
|
||||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
|
||||||
with:
|
|
||||||
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
|
|
||||||
release_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
|
|
||||||
draft: true
|
|
||||||
prerelease: false
|
|
||||||
|
|
||||||
- name: Upload Release Asset
|
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
|
||||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
asset_path: ${{ env.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
|
||||||
asset_name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa
|
|
||||||
asset_content_type: application/vnd.debian.binary-package
|
|
||||||
@@ -9,16 +9,34 @@
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
// uYouPlus
|
// uYouPlus
|
||||||
@interface YTMainAppControlsOverlayView: UIView
|
@interface YTMainAppControlsOverlayView : UIView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTTransportControlsButtonView : UIView
|
@interface YTTransportControlsButtonView : UIView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface _ASCollectionViewCell : UICollectionViewCell
|
||||||
|
- (id)node;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTAsyncCollectionView : UICollectionView
|
||||||
|
- (void)removeShortsAndFeaturesAdsAtIndexPath:(NSIndexPath *)indexPath;
|
||||||
|
@end
|
||||||
|
|
||||||
// @interface YTPlaylistHeaderViewController : UIViewController
|
// @interface YTPlaylistHeaderViewController : UIViewController
|
||||||
// @property (nonatomic, strong, readwrite) UIView *downloadsButton;
|
// @property (nonatomic, strong, readwrite) UIView *downloadsButton;
|
||||||
// @end
|
// @end
|
||||||
|
|
||||||
|
// iOS16 fix
|
||||||
|
@interface OBPrivacyLinkButton : UIButton
|
||||||
|
- (instancetype)initWithCaption:(NSString *)caption
|
||||||
|
buttonText:(NSString *)buttonText
|
||||||
|
image:(UIImage *)image
|
||||||
|
imageSize:(CGSize)imageSize
|
||||||
|
useLargeIcon:(BOOL)useLargeIcon
|
||||||
|
displayLanguage:(NSString *)displayLanguage;
|
||||||
|
@end
|
||||||
|
|
||||||
// BigYTMiniPlayer
|
// BigYTMiniPlayer
|
||||||
@interface YTMainAppVideoPlayerOverlayView : UIView
|
@interface YTMainAppVideoPlayerOverlayView : UIView
|
||||||
- (UIViewController *)_viewControllerForAncestor;
|
- (UIViewController *)_viewControllerForAncestor;
|
||||||
@@ -33,7 +51,7 @@
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
// OLED Darkmode
|
// OLED Darkmode
|
||||||
@interface ASWAppSwitcherCollectionViewCell: UIView
|
@interface ASWAppSwitcherCollectionViewCell : UIView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface ASScrollView : UIView
|
@interface ASScrollView : UIView
|
||||||
|
|||||||
@@ -78,32 +78,32 @@
|
|||||||
|
|
||||||
- My official AtlStore repo: https://qnblackcat.github.io/AltStore/
|
- My official AtlStore repo: https://qnblackcat.github.io/AltStore/
|
||||||
|
|
||||||
- [Open in AltStore (v17.23.6-2.1)](https://tinyurl.com/5upjtvbv) - It will take a while to install because AltStore needs to download the IPA.
|
- [Open in AltStore (v17.24.4-2.1)](https://tinyurl.com/277rhd8n) - It will take a while to install because AltStore needs to download the IPA.
|
||||||
|
|
||||||
- Version info: _(last update: June 14)_
|
- Version info: _(last update: June 22)_
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Expand</summary>
|
<summary>Expand</summary>
|
||||||
|
|
||||||
| **Tweaks/App** | **Version** | **Open source** |
|
| **Tweaks/App** | **Version** | **Open source** |
|
||||||
| :------------: | :----------:| :-------------: |
|
| :------------: | :----------:| :-------------: |
|
||||||
| **YouTube** | 17.23.6 | ✖︎ |
|
| **YouTube** | 17.24.4 | ✖︎ |
|
||||||
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | 2.1 | ✖︎ |
|
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | 2.1 | ✖︎ |
|
||||||
| [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions/) | 1.2 | ✖︎ |
|
| [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | 1.2 | ✖︎ |
|
||||||
| **Return YouTube Dislike** | 1.6.5 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
|
| **Return YouTube Dislike** | 1.6.5 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
|
||||||
| **iSponsorBlock** | 1.0-14 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
|
| **iSponsorBlock** | 1.0-14 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
|
||||||
| **Alderis Color Picker** | 1.2| [✔︎](https://github.com/hbang/Alderis) |
|
| **Alderis Color Picker** | 1.2| [✔︎](https://github.com/hbang/Alderis) |
|
||||||
| **NoYTPremium** | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium/) |
|
| **NoYTPremium** | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
|
||||||
| **YouRememberCaption** | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
|
| **YouRememberCaption** | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
|
||||||
| **YTClassicVideoQuality** | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) |
|
| **YTClassicVideoQuality** | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) |
|
||||||
| **YTNoCheckLocalNetwork** | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
|
| **YTNoCheckLocalNetwork** | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
|
||||||
| **YTNoHoverCards** | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
|
| **YTNoHoverCards** | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
|
||||||
| **YTSystemAppearance** | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/ytsystemappearance.html) |
|
| **YTSystemAppearance** | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/ytsystemappearance.html) |
|
||||||
| **YTUHD** | 1.2.7 | [✔︎](https://github.com/PoomSmart/YTUHD) |
|
| **YTUHD** | 1.2.7 | [✔︎](https://github.com/PoomSmart/YTUHD) |
|
||||||
| **YouPiP** | 1.7.3 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
| **YouPiP** | 1.7.4 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
||||||
| **IAmYouTube** | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
|
| **IAmYouTube** | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
|
||||||
| **YTSpeed** | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
|
| **YTSpeed** | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
|
||||||
| **YTAutoFullScreen** | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen/) |
|
| **YTAutoFullScreen** | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
|
||||||
| **YTReExplore** | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
|
| **YTReExplore** | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
|
||||||
| **BigYTMiniPlayer** | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
|
| **BigYTMiniPlayer** | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
|
||||||
| **YTCastConfirm** | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
|
| **YTCastConfirm** | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// How to translate uYouPlus to your languate:
|
||||||
|
//
|
||||||
|
// 1. Fork uYouPlus repo
|
||||||
|
// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id. For example: ru.lproj
|
||||||
|
// for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
|
||||||
|
// 3. Translate each line below after each =
|
||||||
|
// 4. Open a Pull Request
|
||||||
|
//
|
||||||
|
// If your language already exists then feel free to check it and/or improve it!
|
||||||
|
//
|
||||||
|
// Settings
|
||||||
|
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Spultasten ausblenden";
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Spultasten im Overlay der Videosteuerung ausblenden";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren";
|
||||||
|
"YT_MINIPLAYER_DESC" = "Zum Beispiel bei Videos für Kinder.";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "Warnung vor Starten einer Übertragung (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "Warnung vor Starten einer Übertragung, um ein versehentliches Übernehmen des TVs zu verhindern.";
|
||||||
|
|
||||||
|
"HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)";
|
||||||
|
"HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende von Videos ausblenden.";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "Neue Miniplayer-Leiste (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich.";
|
||||||
|
|
||||||
|
"YT_RE_EXPLORE" = "Registerkarte 'Shorts' durch Registerkarte 'Entdecken' ersetzen (YTReExplore)";
|
||||||
|
"YT_RE_EXPLORE_DESC" = "App-Neustart erforderlich.";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "Schaltfläche 'Untertitel' ausblenden";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "Schaltfläche 'Untertitel' im Overlay der Videosteuerung ausblenden.";
|
||||||
|
|
||||||
|
"HIDE_AUTOPLAY_SWITCH" = "Schaltfläche 'Autoplay' ausblenden";
|
||||||
|
"HIDE_AUTOPLAY_SWITCH_DESC" = Schaltfläche 'Autoplay' im Overlay der Videosteuerung ausblenden.";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "Auto-Vollbild (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "Auto. Videos im Vollbild starten.";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "HUD-Meldungen ausblenden";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "Beispiel: CC ist ein/ausgeschaltet, Videoschleife ist eingeschaltet,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "OLED-Dunkelmodus (Experimentell)";
|
||||||
|
"OLED_DARKMODE_DESC" = "Funktioniert in einigen Fällen möglicherweise nicht richtig. Ein App-Neustart ist nach Aktiv-/Deaktivierung erforderlich.";
|
||||||
|
|
||||||
|
"OLED_KEYBOARD" = "OLED-Tastatur (Experimentell)";
|
||||||
|
"OLED_KEYBOARD_DESC" = "Funktioniert in einigen Fällen möglicherweise nicht richtig. App-Neustart erforderlich.";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "Übertragen";
|
||||||
|
"MSG_ARE_YOU_SURE" = "Sind Sie sicher, dass Sie mit der Übertragung beginnen wollen?";
|
||||||
|
"MSG_YES" = "Ja";
|
||||||
|
"MSG_CANCEL" = "Abbrechen";
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// Settings
|
||||||
|
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "הסתר את הקודם והבא";
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "הסתר את כפתורי הקודם והבא בתצוגת השליטה בסרטון.";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "אפשר את הנגן הקטן עבור כל הסרטונים ב-YouTube";
|
||||||
|
"YT_MINIPLAYER_DESC" = "סרטוני ילדים לדוגמה.";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "התראת אישור לפני שידור לטלוויזיה (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "הצג התראת אישור לפני שידור לטלוויזיה כדי למנוע לחיצה בטעות.";
|
||||||
|
|
||||||
|
"HIDE_HOVER_CARD" = "הסתר כרטיסיות סיום סרטון (YTNoHoverCards)";
|
||||||
|
"HIDE_HOVER_CARD_DESC" = "הסתר את מסכי הסיום של סרטונים המציגים את הערוץ וסרטונים נוספים.";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "עיצוב נגן קטן חדש (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "נדרש לפתוח מחדש את היישום.";
|
||||||
|
|
||||||
|
"YT_RE_EXPLORE" = "החלף את לשונית ה-Shorts בלשונית Explore (YTReExplore)";
|
||||||
|
"YT_RE_EXPLORE_DESC" = "נדרש לפתוח מחדש את היישום.";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "הסתר את כפתור הכתוביות";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "הסתר את כפתור הכתוביות בתצוגת השליטה בסרטון.";
|
||||||
|
|
||||||
|
"HIDE_AUTOPLAY_SWITCH" = "הסתר את כפתור ההפעלה האוטומטית";
|
||||||
|
"HIDE_AUTOPLAY_SWITCH_DESC" = "הסתר את כפתור ההפעלה האוטומטית בתצוגת השליטה בסרטון.";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "מסך מלא אוטומטי (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "נגן סרטונים במסך מלא אוטומטית.";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "הסתר הודעות קופצות";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "לדוגמה: כתוביות מופעלות/מושבתות, הופעל סרטון בלופ,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "תצוגה כהה OLED (נסיוני)";
|
||||||
|
"OLED_DARKMODE_DESC" = "עלול לא לעבוד נכון בחלק מהמקרים, נדרש לפתוח מחדש את היישום.";
|
||||||
|
|
||||||
|
"OLED_KEYBOARD" = "מקלדת כהה OLED (נסיוני)";
|
||||||
|
"OLED_DARKMODE_DESC" = "עלול לא לעבוד נכון בחלק מהמקרים, נדרש לפתוח מחדש את היישום.";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "משדר";
|
||||||
|
"MSG_ARE_YOU_SURE" = "האם להתחיל לשדר?";
|
||||||
|
"MSG_YES" = "כן";
|
||||||
|
"MSG_CANCEL" = "ביטול";
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// How to translate uYouPlus to your languate:
|
||||||
|
//
|
||||||
|
// 1. Fork uYouPlus repo
|
||||||
|
// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id. For example: ru.lproj
|
||||||
|
// for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
|
||||||
|
// 3. Translate each line below after each =
|
||||||
|
// 4. Open a Pull Request
|
||||||
|
//
|
||||||
|
// If your language already exists then feel free to check it and/or improve it!
|
||||||
|
//
|
||||||
|
// Settings
|
||||||
|
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay.";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "Enable the Miniplayer for all YouTube videos";
|
||||||
|
"YT_MINIPLAYER_DESC" = "Kid videos for example.";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV.";
|
||||||
|
|
||||||
|
"HIDE_HOVER_CARD" = "Hide End screens hover cards (YTNoHoverCards)";
|
||||||
|
"HIDE_HOVER_CARD_DESC" = "Hide creator End screens (thumbnails) at the end of videos.";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "New miniplayer bar style (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";
|
||||||
|
|
||||||
|
"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)";
|
||||||
|
"YT_RE_EXPLORE_DESC" = "App restart is required.";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "Hide Subtitles button";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "Hide the Subtitles button in video controls overlay.";
|
||||||
|
|
||||||
|
"HIDE_AUTOPLAY_SWITCH" = "Hide Autoplay switch";
|
||||||
|
"HIDE_AUTOPLAY_SWITCH_DESC" = "Hide the Autoplay switch in video controls overlay.";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "Auto Full Screen (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen.";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "Hide HUD Messages";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "OLED Dark mode (Experimental)";
|
||||||
|
"OLED_DARKMODE_DESC" = "Might not working correctly in some cases. App restart is required after you enable/disable this option.";
|
||||||
|
|
||||||
|
"OLED_KEYBOARD" = "OLED Keyboard (Experimental)";
|
||||||
|
"OLED_KEYBOARD_DESC" = "Might not working correctly in some cases. App restart is required.";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "Castings";
|
||||||
|
"MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?";
|
||||||
|
"MSG_YES" = "Yes";
|
||||||
|
"MSG_CANCEL" = "Cancel";
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
// How to translate uYouPlus to your languate:
|
|
||||||
//
|
|
||||||
// 1. Fork uYouPlus repo
|
|
||||||
// 2. Rename the temple.lproj folder to your <lang_code>.lproj id. For example: ru.lproj for Russia
|
|
||||||
// 3. Translate each line below after each =
|
|
||||||
// 4. Open a Pull Request
|
|
||||||
//
|
|
||||||
// If your language already exists then feel free to check it and/or improve it!
|
|
||||||
//
|
|
||||||
// Settings
|
|
||||||
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay.";
|
|
||||||
|
|
||||||
"YT_MINIPLAYER" = "Enable the Miniplayer for all YouTube videos";
|
|
||||||
"YT_MINIPLAYER_DESC" = "Kid videos for example.";
|
|
||||||
|
|
||||||
"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)";
|
|
||||||
"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV.";
|
|
||||||
|
|
||||||
"HIDE_HOVER_CARD" = "Hide End screens hover cards (YTNoHoverCards)";
|
|
||||||
"HIDE_HOVER_CARD_DESC" = "Hide creator End screens (thumbnails) at the end of videos.";
|
|
||||||
|
|
||||||
"NEW_MINIPLAYER_STYLE" = "New miniplayer bar style (BigYTMiniPlayer)";
|
|
||||||
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";
|
|
||||||
|
|
||||||
"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)";
|
|
||||||
"YT_RE_EXPLORE_DESC" = "App restart is required.";
|
|
||||||
|
|
||||||
"HIDE_SUBTITLES_BUTTON" = "Hide Subtitles button";
|
|
||||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Hide the Subtitles button in video controls overlay.";
|
|
||||||
|
|
||||||
"HIDE_AUTOPLAY_SWITCH" = "Hide Autoplay switch";
|
|
||||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Hide the Autoplay switch in video controls overlay.";
|
|
||||||
|
|
||||||
"AUTO_FULLSCREEN" = "Auto Full Screen (YTAutoFullScreen)";
|
|
||||||
"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen.";
|
|
||||||
|
|
||||||
"HIDE_HUD_MESSAGES" = "Hide HUD Messages";
|
|
||||||
"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,...";
|
|
||||||
|
|
||||||
"OLED_DARKMODE" = "OLED Dark mode (Experimental)";
|
|
||||||
"OLED_DARKMODE_DESC" = "Might not working correctly in some cases. App restart is required after you enable/disable this option.";
|
|
||||||
|
|
||||||
"OLED_KEYBOARD" = "OLED Keyboard (Experimental)";
|
|
||||||
"OLED_KEYBOARD_DESC" = "Might not working correctly in some cases. App restart is required.";
|
|
||||||
|
|
||||||
// YTCastConfirm
|
|
||||||
"CASTING" = "Castings";
|
|
||||||
"MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?";
|
|
||||||
"MSG_YES" = "Yes";
|
|
||||||
"MSG_CANCEL" = "Cancel";
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// Settings
|
||||||
|
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "隱藏上一個和下一個按鈕";
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "在影片控制層中隱藏上一個和下一個按鈕";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "為所有YouTube影片啟用迷你播放器";
|
||||||
|
"YT_MINIPLAYER_DESC" = "例如兒童影片";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "投放前確認 (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "在投放前顯示確認訊息,以防止意外攔劫電視。";
|
||||||
|
|
||||||
|
"HIDE_HOVER_CARD" = "隱藏片尾畫面懸浮卡片 (YTNoHoverCards)";
|
||||||
|
"HIDE_HOVER_CARD_DESC" = "在影片結尾隱藏創作者結束畫面(縮略圖)。";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "新的迷你播放器控制列風格 (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "需要重新啟動應用程式。";
|
||||||
|
|
||||||
|
"YT_RE_EXPLORE" = "用探索選項卡替換Shorts選項卡 (YTReExplore)";
|
||||||
|
"YT_RE_EXPLORE_DESC" = "需要重新啟動應用程式。";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "隱藏字幕按鈕";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "隱藏影片控制層中的字幕按鈕。";
|
||||||
|
|
||||||
|
"HIDE_AUTOPLAY_SWITCH" = "隱藏自動播放開關";
|
||||||
|
"HIDE_AUTOPLAY_SWITCH_DESC" = "在影片控制層中隱藏自動播放開關。";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "自動全螢幕 (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "自動全螢幕播放影片。";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "隱藏 HUD 訊息";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "舉例來說:CC字幕 開啟/關閉,影片循環開啟,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "OLED 深色模式(實驗性)";
|
||||||
|
"OLED_DARKMODE_DESC" = "在某些情況下可能無法正常工作。啟用/禁用此選項後,需要重新啟動應用程式。";
|
||||||
|
|
||||||
|
"OLED_KEYBOARD" = "OLED 鍵盤(實驗性)";
|
||||||
|
"OLED_KEYBOARD_DESC" = "在某些情況下可能無法正常工作。需要重新啟動應用程式。";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "投放中";
|
||||||
|
"MSG_ARE_YOU_SURE" = "確定要開始投放嗎?";
|
||||||
|
"MSG_YES" = "是";
|
||||||
|
"MSG_CANCEL" = "取消";
|
||||||
+60
-16
@@ -92,8 +92,8 @@ BOOL ytMiniPlayer() {
|
|||||||
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_nextButton").hidden = YES;
|
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_nextButton").hidden = YES;
|
||||||
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_previousButton").hidden = YES;
|
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_previousButton").hidden = YES;
|
||||||
// YouTube love beta testing :/
|
// YouTube love beta testing :/
|
||||||
MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").hidden = YES;
|
// MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").hidden = YES;
|
||||||
MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").hidden = YES;
|
// MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").hidden = YES;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
@@ -222,15 +222,14 @@ BOOL ytMiniPlayer() {
|
|||||||
- (BOOL)shouldEnablePlayerBar { return YES; }
|
- (BOOL)shouldEnablePlayerBar { return YES; }
|
||||||
%end
|
%end
|
||||||
|
|
||||||
/*
|
|
||||||
// Hide the download playlist button of uYou cuz it's broken ?!
|
// Hide the download playlist button of uYou cuz it's broken ?!
|
||||||
// Why aren't you working?? :/
|
// Why aren't you working?? :/
|
||||||
%hook YTPlaylistHeaderViewController
|
// %hook YTPlaylistHeaderViewController
|
||||||
- (void)viewDidLoad {
|
// - (void)viewDidLoad {
|
||||||
%orig;
|
// %orig;
|
||||||
self.downloadsButton.hidden = YES;
|
// self.downloadsButton.hidden = YES;
|
||||||
}
|
// }
|
||||||
%end
|
// %end
|
||||||
|
|
||||||
// Workaround for issue #54
|
// Workaround for issue #54
|
||||||
%hook YTMainAppVideoPlayerOverlayViewController
|
%hook YTMainAppVideoPlayerOverlayViewController
|
||||||
@@ -239,7 +238,25 @@ BOOL ytMiniPlayer() {
|
|||||||
else { return %orig; }
|
else { return %orig; }
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
*/
|
|
||||||
|
// Hide YouTube Shorts banner in Home page? - MiRO92 - YTNoShorts: https://github.com/MiRO92/YTNoShorts
|
||||||
|
%hook YTAsyncCollectionView
|
||||||
|
- (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
|
UICollectionViewCell *cell = %orig;
|
||||||
|
if ([cell isKindOfClass:NSClassFromString(@"_ASCollectionViewCell")]) {
|
||||||
|
_ASCollectionViewCell *cell = %orig;
|
||||||
|
if ([cell respondsToSelector:@selector(node)]) {
|
||||||
|
if ([[[cell node] accessibilityIdentifier] isEqualToString:@"statement_banner.view"]) { [self removeShortsAndFeaturesAdsAtIndexPath:indexPath]; }
|
||||||
|
if ([[[cell node] accessibilityIdentifier] isEqualToString:@"compact.view"]) { [self removeShortsAndFeaturesAdsAtIndexPath:indexPath]; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return %orig;
|
||||||
|
}
|
||||||
|
%new
|
||||||
|
- (void)removeShortsAndFeaturesAdsAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
|
[self deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
|
||||||
|
}
|
||||||
|
%end
|
||||||
|
|
||||||
# pragma mark - IAmYouTube - https://github.com/PoomSmart/IAmYouTube/
|
# pragma mark - IAmYouTube - https://github.com/PoomSmart/IAmYouTube/
|
||||||
%hook YTVersionUtils
|
%hook YTVersionUtils
|
||||||
@@ -358,7 +375,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
|||||||
- (void)didMoveToWindow {
|
- (void)didMoveToWindow {
|
||||||
if (isDarkMode()) {
|
if (isDarkMode()) {
|
||||||
%orig;
|
%orig;
|
||||||
self.backgroundColor = oledColor;
|
self.backgroundColor = [UIColor clearColor];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
@@ -489,15 +506,17 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
|||||||
- (void)didMoveToWindow {
|
- (void)didMoveToWindow {
|
||||||
%orig;
|
%orig;
|
||||||
if (isDarkMode()) {
|
if (isDarkMode()) {
|
||||||
|
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
|
||||||
|
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = oledColor; }
|
||||||
|
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = oledColor; }
|
||||||
|
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = oledColor; }
|
||||||
|
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = oledColor; }
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = oledColor; }
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = oledColor; }
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = oledColor; }
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = oledColor; }
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = oledColor; }
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = oledColor; }
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = oledColor; }
|
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = oledColor; }
|
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = oledColor; }
|
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = oledColor; }
|
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = oledColor; }
|
|
||||||
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = oledColor; }
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = oledColor; }
|
||||||
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = oledColor; }
|
||||||
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.superview.backgroundColor = oledColor; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
@@ -624,9 +643,31 @@ static void replaceTab(YTIGuideResponse *response) {
|
|||||||
%end
|
%end
|
||||||
%end
|
%end
|
||||||
|
|
||||||
|
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
|
||||||
|
%group iOS16
|
||||||
|
%hook OBPrivacyLinkButton
|
||||||
|
%new
|
||||||
|
- (instancetype)initWithCaption:(NSString *)caption
|
||||||
|
buttonText:(NSString *)buttonText
|
||||||
|
image:(UIImage *)image
|
||||||
|
imageSize:(CGSize)imageSize
|
||||||
|
useLargeIcon:(BOOL)useLargeIcon {
|
||||||
|
return [self initWithCaption:caption
|
||||||
|
buttonText:buttonText
|
||||||
|
image:image
|
||||||
|
imageSize:imageSize
|
||||||
|
useLargeIcon:useLargeIcon
|
||||||
|
displayLanguage:[NSLocale currentLocale].languageCode];
|
||||||
|
}
|
||||||
|
%end
|
||||||
|
%end
|
||||||
|
|
||||||
# pragma mark - ctor
|
# pragma mark - ctor
|
||||||
%ctor {
|
%ctor {
|
||||||
%init;
|
%init;
|
||||||
|
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
|
||||||
|
}
|
||||||
if (oled()) {
|
if (oled()) {
|
||||||
%init(gOLED);
|
%init(gOLED);
|
||||||
}
|
}
|
||||||
@@ -639,4 +680,7 @@ static void replaceTab(YTIGuideResponse *response) {
|
|||||||
if (bigYTMiniPlayer() && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
|
if (bigYTMiniPlayer() && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
|
||||||
%init(Main);
|
%init(Main);
|
||||||
}
|
}
|
||||||
|
if (@available(iOS 16, *)) {
|
||||||
|
%init(iOS16);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user