Compare commits

...
Author SHA1 Message Date
qnblackcat ad29207afd v17.25.1-2.1 2022-06-29 21:06:26 +07:00
qnblackcat 64c7717b38 update submodules 2022-06-29 21:05:59 +07:00
qnblackcat 25f66162c5 update submodule 2022-06-28 15:36:23 +07:00
qnblackcat 5becdf5a85 Merge branch 'main' of https://github.com/qnblackcat/uYouPlus 2022-06-27 09:11:54 +07:00
qnblackcat 9145301cc8 support YT v17.25.1 2022-06-27 09:11:10 +07:00
qnblackcat b2b14305eb update Header.h 2022-06-27 08:50:15 +07:00
Nguyễn Đạt 02ec80256c Merge pull request #245 from ErSpieltHD/patch-1
Update German translation
2022-06-27 01:19:04 +07:00
Nguyễn Đạt b37f1e1a24 update German localization 2022-06-27 01:18:43 +07:00
ErSpieltHD 244e5a3576 German translation 2022-06-26 17:43:15 +02:00
qnblackcat 3a532cfa63 update Header.h 2022-06-26 10:12:50 +07:00
qnblackcat ef153f5d9c clean up 2022-06-26 10:11:19 +07:00
qnblackcat 4258986378 update submodules 2022-06-26 10:06:12 +07:00
qnblackcat dae08da6bf update workflow 2022-06-26 10:00:28 +07:00
qnblackcat 7f0e749030 Merge branch 'main' of https://github.com/qnblackcat/uYouPlus 2022-06-24 10:47:24 +07:00
qnblackcat c6dd02a759 update submodules 2022-06-24 10:47:11 +07:00
Nguyễn Đạt 23d745e869 Merge pull request #240 from level3tjg/main
uYou crash workarounds
2022-06-24 10:45:55 +07:00
level3tjg 2116d96e6a uYouLocal crash workaround 2022-06-23 12:42:28 -04:00
level3tjg f2cb699e3b Notification menu crash workaround 2022-06-23 12:19:22 -04:00
qnblackcat fbafccf1bd v17.24.4-2.1 2022-06-22 09:26:17 +07:00
qnblackcat 029ab22b9f update Header.h 2022-06-22 09:26:06 +07:00
qnblackcat f4215a7b0b code format 2022-06-22 09:25:54 +07:00
qnblackcat 0d1e7bad8e Merge branch 'ErSpieltHD-main' 2022-06-19 21:42:50 +07:00
ErSpieltHD e97ada36c1 Update Localizable.strings 2022-06-19 16:05:39 +02:00
ErSpieltHD 4d1b478606 Create Localizable.strings 2022-06-19 15:31:55 +02:00
Nguyễn Đạt 24c2f5594f Merge pull request #224 from level3tjg/main
iOS 16 OnboardingKit crash fix
2022-06-16 06:26:19 +07:00
level3tjg c1e3976200 Add OnboardingKit shim method for uYou (iOS 16) 2022-06-15 16:11:48 -04:00
Nguyễn Đạt 0fc9032979 Merge pull request #222 from ISnackable/main
Add draft release functionality back
2022-06-15 20:36:49 +07:00
Tommy b4c70ee668 Add draft release functionality back 2022-06-15 21:31:44 +08:00
qnblackcat f966182c15 an actually workaround for issue #54 2022-06-15 18:08:37 +07:00
qnblackcat 1b20c07f03 localization template 2022-06-15 18:05:11 +07:00
Nguyễn Đạt 7ad8f9409b Merge pull request #221 from clc0321/main
Added Chinese_TW translation
2022-06-15 16:13:53 +07:00
clc0321 122d5b8280 Added Chinese_TW translation 2022-06-15 16:10:27 +08:00
clc0321 5744474710 editor_temple_name 2022-06-15 15:39:30 +08:00
Nguyễn Đạt faaecd51cb Update bug.md 2022-06-15 01:36:01 +07:00
Nguyễn Đạt 8250a1462e Merge pull request #215 from Aransh/main
Main
2022-06-14 16:57:59 +07:00
Nguyễn Đạt 9371c72a42 Merge pull request #213 from ShadowRoi/main
Fixes Greek translation(probably)
2022-06-14 16:57:18 +07:00
Aran Shavit 1acf0a4eba Added Hebrew localization 2022-06-14 12:50:52 +03:00
ShadowRoi 1a63491af3 Add files via upload 2022-06-14 10:43:38 +03:00
ShadowRoi e912dc0bda Delete lang/uYouPlus.bundle/gr.lproj directory 2022-06-14 10:43:26 +03:00
15 changed files with 411 additions and 281 deletions
+3
View File
@@ -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:
+44 -10
View File
@@ -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,7 +21,12 @@ 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 }}
cancel-in-progress: true cancel-in-progress: true
@@ -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
@@ -73,7 +80,7 @@ jobs:
env: env:
THEOS: ${{ github.workspace }}/theos THEOS: ${{ github.workspace }}/theos
- name: Download Dylibs - name: Download uYou & prepare YouTube iPA
run: | run: |
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h" 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" 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"
@@ -85,28 +92,55 @@ 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
run: | run: |
cd ${{ github.workspace }}/main cd ${{ github.workspace }}/main
(cd ${{ github.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s#.*#YouPiP_FRAMEWORKS = AVKit AVFoundation UIKit#g" ./Makefile) (cd ${{ github.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s/$/ AVFoundation UIKit/" Makefile)
make package FINALPACKAGE=1 make package FINALPACKAGE=1
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa") (mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
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
-129
View File
@@ -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
+29 -3
View File
@@ -9,16 +9,39 @@
@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
// uYouLocal fix
@interface YTLocalPlaybackController : NSObject
- (id)activeVideo;
@end
// BigYTMiniPlayer // BigYTMiniPlayer
@interface YTMainAppVideoPlayerOverlayView : UIView @interface YTMainAppVideoPlayerOverlayView : UIView
- (UIViewController *)_viewControllerForAncestor; - (UIViewController *)_viewControllerForAncestor;
@@ -33,7 +56,7 @@
@end @end
// OLED Darkmode // OLED Darkmode
@interface ASWAppSwitcherCollectionViewCell: UIView @interface ASWAppSwitcherCollectionViewCell : UIView
@end @end
@interface ASScrollView : UIView @interface ASScrollView : UIView
@@ -48,7 +71,10 @@
@interface _ASDisplayView : UIView @interface _ASDisplayView : UIView
@end @end
@interface SponsorBlockSettingsController : UITableViewController @interface YTCommentDetailHeaderCell : UIView
@end
@interface SponsorBlockSettingsController : UITableViewController
@end @end
@interface SponsorBlockViewController : UIViewController @interface SponsorBlockViewController : UIViewController
+9 -11
View File
@@ -27,8 +27,6 @@
- [YouTube Extensions](https://github.com/CokePokes/YoutubeExtensions) by [CokePokes](https://github.com/CokePokes/). - [YouTube Extensions](https://github.com/CokePokes/YoutubeExtensions) by [CokePokes](https://github.com/CokePokes/).
- [Al4ise](https://github.com/Al4ise) for [Azule](https://github.com/Al4ise/Azule), a tool used to inject jailbreak tweaks into jailed iOS apps.
- [theos team](https://github.com/theos/theos) for theos & theos-jailed. - [theos team](https://github.com/theos/theos) for theos & theos-jailed.
# Features # Features
@@ -78,32 +76,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.25.1-2.1)](https://tinyurl.com/2kaynk88) - 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 29)_
<details> <details>
<summary>Expand</summary> <summary>Expand</summary>
| **Tweaks/App** | **Version** | **Open source** | | **Tweaks/App** | **Version** | **Open source** |
| :------------: | :----------:| :-------------: | | :------------: | :----------:| :-------------: |
| **YouTube** | 17.23.6 | ✖︎ | | **YouTube** | 17.25.1 | ✖︎ |
| [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.8 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | 1.7.3 | [✔︎](https://github.com/PoomSmart/YouPiP) | | **YouPiP** | 1.7.7 | [✔︎](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) |
@@ -125,7 +123,7 @@ See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installati
</details> </details>
<details> <details>
<summary>Poomsmart</summary> <summary>PoomSmart</summary>
- Paypal: https://poomsmart.github.io/ - Paypal: https://poomsmart.github.io/
@@ -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 Video 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 Video ausblenden.";
"HIDE_AUTOPLAY_SWITCH" = "Schaltfläche Autoplay ausblenden";
"HIDE_AUTOPLAY_SWITCH_DESC" = "Schaltfläche Autoplay im Video 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" = "取消";
+131 -73
View File
@@ -91,9 +91,8 @@ BOOL ytMiniPlayer() {
if (hidePreviousAndNextButton()) { if (hidePreviousAndNextButton()) {
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 :/ // 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
@@ -169,6 +168,22 @@ BOOL ytMiniPlayer() {
- (void)decorateContext:(id)arg1 { %orig(nil); } - (void)decorateContext:(id)arg1 { %orig(nil); }
%end %end
// Workaround for https://github.com/MiRO92/uYou-for-YouTube/issues/94
%hook YTELMView
%new
- (id)entry {
return nil;
}
%end
// Workaround for https://github.com/MiRO92/uYou-for-YouTube/issues/140
%hook YTLocalPlaybackController
%new
- (id)activeVideoController {
return [self activeVideo];
}
%end
// YTClassicVideoQuality: https://github.com/PoomSmart/YTClassicVideoQuality // YTClassicVideoQuality: https://github.com/PoomSmart/YTClassicVideoQuality
%hook YTVideoQualitySwitchControllerFactory %hook YTVideoQualitySwitchControllerFactory
- (id)videoQualitySwitchControllerWithParentResponder:(id)responder { - (id)videoQualitySwitchControllerWithParentResponder:(id)responder {
@@ -217,21 +232,23 @@ BOOL ytMiniPlayer() {
- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {} - (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {}
%end %end
// Enable Shorts scroll bar - level3tjg - https://reddit.com/r/jailbreak/comments/v29yvk/_/iasl1l0/ // Enable Shorts scroll bar - @level3tjg - https://reddit.com/r/jailbreak/comments/v29yvk/_/iasl1l0/
%hook YTReelPlayerViewControllerSub %hook YTReelPlayerViewControllerSub
- (BOOL)shouldEnablePlayerBar { return YES; } - (BOOL)shouldEnablePlayerBar { return YES; }
%end %end
/* %hook YTReelPlayerViewController
// Hide the download playlist button of uYou cuz it's broken ?! - (BOOL)shouldEnablePlayerBar { return YES; }
// Why aren't you working?? :/
%hook YTPlaylistHeaderViewController
- (void)viewDidLoad {
%orig;
self.downloadsButton.hidden = YES;
}
%end %end
// Hide the download playlist button of uYou cuz it's broken ?!
// %hook YTPlaylistHeaderViewController
// - (void)viewDidLoad {
// %orig;
// self.downloadsButton.hidden = YES;
// }
// %end
// Workaround for issue #54 // Workaround for issue #54
%hook YTMainAppVideoPlayerOverlayViewController %hook YTMainAppVideoPlayerOverlayViewController
- (void)updateRelatedVideos { - (void)updateRelatedVideos {
@@ -239,7 +256,26 @@ 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
@@ -297,38 +333,41 @@ BOOL ytMiniPlayer() {
%end %end
# pragma mark - OLED dark mode by BandarHL # pragma mark - OLED dark mode by BandarHL
UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%group gOLED %group gOLED
%hook YTCommonColorPalette %hook YTCommonColorPalette
- (UIColor *)brandBackgroundSolid { - (UIColor *)brandBackgroundSolid {
if (self.pageStyle == 1) { if (self.pageStyle == 1) {
return oledColor; return [UIColor blackColor];
} }
return %orig; return %orig;
} }
- (UIColor *)brandBackgroundPrimary { - (UIColor *)brandBackgroundPrimary {
if (self.pageStyle == 1) { if (self.pageStyle == 1) {
return oledColor; return [UIColor blackColor];
} }
return %orig; return %orig;
} }
- (UIColor *)brandBackgroundSecondary { - (UIColor *)brandBackgroundSecondary {
if (self.pageStyle == 1) { if (self.pageStyle == 1) {
return oledColor; return [[UIColor blackColor] colorWithAlphaComponent:0.88];
}
return %orig;
}
- (UIColor *)raisedBackground {
if (self.pageStyle == 1) {
return [UIColor blackColor];
} }
return %orig; return %orig;
} }
- (UIColor *)staticBrandBlack { - (UIColor *)staticBrandBlack {
if (self.pageStyle == 1) { if (self.pageStyle == 1) {
return oledColor; return [UIColor blackColor];
} }
return %orig; return %orig;
} }
- (UIColor *)generalBackgroundA { - (UIColor *)generalBackgroundA {
if (self.pageStyle == 1) { if (self.pageStyle == 1) {
return oledColor; return [UIColor blackColor];
} }
return %orig; return %orig;
} }
@@ -338,16 +377,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YTAccountPanelBodyViewController %hook YTAccountPanelBodyViewController
- (UIColor *)backgroundColor:(NSInteger)pageStyle { - (UIColor *)backgroundColor:(NSInteger)pageStyle {
if (pageStyle == 1) { if (pageStyle == 1) {
return oledColor; return [UIColor blackColor];
}
return %orig;
}
%end
%hook YTInnerTubeCollectionViewController
- (UIColor *)backgroundColor:(NSInteger)pageStyle {
if (pageStyle == 1) {
return oledColor;
} }
return %orig; return %orig;
} }
@@ -356,9 +386,9 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
// Explore // Explore
%hook ASScrollView %hook ASScrollView
- (void)didMoveToWindow { - (void)didMoveToWindow {
if (isDarkMode()) { %orig;
%orig; if (isDarkMode()) {
self.backgroundColor = oledColor; self.backgroundColor = [UIColor clearColor];
} }
} }
%end %end
@@ -366,8 +396,8 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
// Your videos // Your videos
%hook ASCollectionView %hook ASCollectionView
- (void)didMoveToWindow { - (void)didMoveToWindow {
%orig;
if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) { if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) {
%orig;
self.superview.backgroundColor = [UIColor clearColor]; self.superview.backgroundColor = [UIColor clearColor];
} }
} }
@@ -378,7 +408,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
- (void)viewDidLoad { - (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig; %orig;
self.tableView.backgroundColor = oledColor; self.tableView.backgroundColor = [UIColor blackColor];
} else { return %orig; } } else { return %orig; }
} }
%end %end
@@ -387,26 +417,16 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
- (void)viewDidLoad { - (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig; %orig;
self.view.backgroundColor = oledColor; self.view.backgroundColor = [UIColor blackColor];
} else { return %orig; } } else { return %orig; }
} }
%end %end
// YT Miniplayer
%hook YTWatchMiniBarView
- (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) {
return %orig([UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.9]);
}
return %orig;
}
%end
// Search View // Search View
%hook YTSearchBarView %hook YTSearchBarView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
@@ -416,7 +436,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YTSearchBoxView %hook YTSearchBoxView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
@@ -426,7 +446,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YTCommentView %hook YTCommentView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
@@ -435,7 +455,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YTCreateCommentAccessoryView %hook YTCreateCommentAccessoryView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
@@ -444,7 +464,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YTCreateCommentTextView %hook YTCreateCommentTextView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
@@ -456,6 +476,15 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
} }
%end %end
%hook YTCommentDetailHeaderCell
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[2].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTFormattedStringLabel // YT is werid... %hook YTFormattedStringLabel // YT is werid...
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
@@ -469,7 +498,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YCHLiveChatActionPanelView %hook YCHLiveChatActionPanelView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
@@ -478,26 +507,28 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook YTEmojiTextView %hook YTEmojiTextView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig; return %orig;
} }
%end %end
// Nasty stuff :/ // Others
%hook _ASDisplayView %hook _ASDisplayView
- (void)didMoveToWindow { - (void)didMoveToWindow {
%orig; %orig;
if (isDarkMode()) { if (isDarkMode()) {
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = oledColor; } if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = oledColor; } if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = [UIColor blackColor]; }
} }
} }
%end %end
@@ -506,25 +537,27 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook ASWAppSwitchingSheetHeaderView %hook ASWAppSwitchingSheetHeaderView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig;
} }
%end %end
%hook ASWAppSwitchingSheetFooterView %hook ASWAppSwitchingSheetFooterView
- (void)setBackgroundColor:(UIColor *)color { - (void)setBackgroundColor:(UIColor *)color {
if (isDarkMode()) { if (isDarkMode()) {
return %orig(oledColor); return %orig([UIColor blackColor]);
} }
return %orig;
} }
%end %end
%hook ASWAppSwitcherCollectionViewCell %hook ASWAppSwitcherCollectionViewCell
- (void)didMoveToWindow { - (void)didMoveToWindow {
%orig;
if (isDarkMode()) { if (isDarkMode()) {
%orig; self.subviews[1].backgroundColor = [UIColor blackColor];
self.subviews[1].backgroundColor = oledColor; self.superview.backgroundColor = [UIColor blackColor];
self.superview.backgroundColor = oledColor;
} }
} }
%end %end
@@ -535,28 +568,28 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
%hook UIPredictionViewController %hook UIPredictionViewController
- (void)loadView { - (void)loadView {
%orig; %orig;
[self.view setBackgroundColor:oledColor]; [self.view setBackgroundColor:[UIColor blackColor]];
} }
%end %end
%hook UICandidateViewController %hook UICandidateViewController
- (void)loadView { - (void)loadView {
%orig; %orig;
[self.view setBackgroundColor:oledColor]; [self.view setBackgroundColor:[UIColor blackColor]];
} }
%end %end
%hook UIKeyboardDockView %hook UIKeyboardDockView
- (void)didMoveToWindow { - (void)didMoveToWindow {
%orig; %orig;
self.backgroundColor = oledColor; self.backgroundColor = [UIColor blackColor];
} }
%end %end
%hook UIKeyboardLayoutStar %hook UIKeyboardLayoutStar
- (void)didMoveToWindow { - (void)didMoveToWindow {
%orig; %orig;
self.backgroundColor = oledColor; self.backgroundColor = [UIColor blackColor];
} }
%end %end
@@ -624,9 +657,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 +694,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);
}
} }