Skip to content

Commit d89ca53

Browse files
authored
Add a new workflow to build IPA without YTLite
For some users that can't / don't want to pay for YTLite 5.2 and want to use the latest YT version.
1 parent 77a12be commit d89ca53

1 file changed

Lines changed: 359 additions & 0 deletions

File tree

.github/workflows/blank.yml

Lines changed: 359 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,359 @@
1+
name: Build IPA without YTLite
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
ipa_url:
6+
description: "URL to the decrypted IPA file"
7+
default: ""
8+
required: true
9+
type: string
10+
11+
display_name:
12+
description: "App Name (Optional)"
13+
default: "YouTube"
14+
required: true
15+
type: string
16+
17+
bundle_id:
18+
description: "Bundle ID (Optional)"
19+
default: "com.google.ios.youtube"
20+
required: true
21+
type: string
22+
23+
demc:
24+
description: "Integrate DontEatMyContent"
25+
default: true
26+
required: false
27+
type: boolean
28+
29+
ytvid:
30+
description: "Integrate YTVideoErrorAlert"
31+
default: true
32+
required: false
33+
type: boolean
34+
35+
# volboost:
36+
# description: "Integrate VolumeBoostYT (Require iOS 16+)"
37+
# default: true
38+
# required: false
39+
# type: boolean
40+
41+
concurrency:
42+
group: ${{ github.workflow }}-${{ github.ref }}
43+
cancel-in-progress: true
44+
45+
jobs:
46+
build:
47+
name: Build YTLitePlusEXTRA IPA
48+
runs-on: macos-latest
49+
permissions:
50+
contents: write
51+
52+
steps:
53+
- name: Hide Sensitive Inputs
54+
uses: levibostian/action-hide-sensitive-inputs@v1
55+
with:
56+
exclude_inputs: bundle_id,display_name,demc
57+
58+
- name: Download and Validate IPA
59+
run: |
60+
wget "${{ inputs.ipa_url }}" --quiet --no-verbose -O youtube.ipa
61+
62+
file_type=$(file --mime-type -b youtube.ipa)
63+
64+
if [[ "$file_type" != "application/x-ios-app" && "$file_type" != "application/zip" ]]; then
65+
echo "::error::Validation failed: The downloaded file is not a valid IPA. Detected type: $file_type."
66+
exit 1
67+
fi
68+
69+
- name: Get YouTube Version
70+
run: |
71+
unzip -q youtube.ipa -d ytextracted
72+
echo "YT_VERSION=$(grep -A 1 '<key>CFBundleVersion</key>' ytextracted/Payload/YouTube.app/Info.plist | grep '<string>' | awk -F'[><]' '{print $3}')" >> $GITHUB_ENV
73+
74+
- name: Install Dependencies
75+
run: brew install make ldid swiftlint
76+
77+
- name: Set PATH Environment Variables
78+
run: |
79+
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
80+
echo "THEOS=${{ github.workspace }}/theos" >> $GITHUB_ENV
81+
82+
- name: Clone Theos
83+
run: git clone --quiet --depth=1 --recurse-submodules https://github.com/theos/theos.git
84+
85+
- name: Download iOS SDK
86+
run: |
87+
git clone --quiet --depth=1 -n --filter=tree:0 https://github.com/Tonwalter888/iOS-SDKs.git
88+
cd iOS-SDKs
89+
git sparse-checkout set --no-cone iPhoneOS18.6.sdk
90+
git checkout
91+
mv *.sdk $THEOS/sdks
92+
93+
- name: Install cyan and tbd
94+
run: |
95+
pipx install --force https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip
96+
wget --quiet --no-verbose "https://github.com/inoahdev/tbd/releases/download/2.2/tbd-mac" -O /usr/local/bin/tbd
97+
chmod +x /usr/local/bin/tbd
98+
99+
- name: Clone Open in YouTube (Safari Extension)
100+
run: |
101+
git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/BillyCurtis/OpenYouTubeSafariExtension.git
102+
cd OpenYouTubeSafariExtension
103+
git sparse-checkout set --no-cone OpenYouTubeSafariExtension.appex
104+
git checkout
105+
mv *.appex ${{ github.workspace }}
106+
107+
- name: Clone YouTubeHeader
108+
run: |
109+
git clone --quiet --depth=1 https://github.com/PoomSmart/YouTubeHeader.git $THEOS/include/YouTubeHeader
110+
if [ "${{ inputs.demc }}" = "true" ]; then
111+
cp -r "$THEOS/include/YouTubeHeader" "$THEOS/include/YTHeaders"
112+
fi
113+
114+
- name: Clone PSHeader
115+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/PSHeader.git $THEOS/include/PSHeader
116+
117+
- name: Clone YouPiP
118+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouPiP.git
119+
120+
- name: Clone YTUHD
121+
run: git clone --quiet --depth=1 https://github.com/Tonwalter888/YTUHD.git
122+
123+
- name: Clone Return-YouTube-Dislikes
124+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/Return-YouTube-Dislikes.git
125+
126+
- name: Clone YouGroupSettings
127+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouGroupSettings.git
128+
129+
- name: Clone YTVideoOverlay
130+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YTVideoOverlay.git
131+
132+
- name: Clone YTABConfig
133+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YTABConfig.git
134+
135+
- name: Clone YouQuality
136+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouQuality.git
137+
138+
- name: Clone YouSpeed
139+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouSpeed.git
140+
141+
- name: Clone DontEatMyContent
142+
if: ${{ inputs.demc }}
143+
run: git clone --quiet --depth=1 https://github.com/therealFoxster/DontEatMyContent.git
144+
145+
- name: Clone YouMute
146+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouMute.git
147+
148+
- name: Clone YouLoop
149+
run: git clone --quiet --depth=1 https://github.com/bhackel/YouLoop.git
150+
151+
- name: Clone Alderis
152+
run: git clone --quiet --depth=1 https://github.com/hbang/Alderis.git
153+
154+
- name: Clone YouSlider
155+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouSlider.git
156+
157+
- name: Clone YouChooseQuality
158+
run: git clone --quiet https://github.com/PoomSmart/YouChooseQuality.git
159+
160+
- name: Clone YTSilentVote
161+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YTSilentVote.git
162+
163+
- name: Clone YouShare
164+
run: git clone --quiet --depth=1 https://github.com/Tonwalter888/YouShare.git
165+
166+
- name: Clone Gonerino
167+
run: git clone --quiet --depth=1 https://github.com/castdrian/Gonerino.git
168+
169+
- name: Clone YTweaks
170+
run: git clone --quiet --depth=1 https://github.com/fosterbarnes/YTweaks.git
171+
172+
- name: Clone YouGetCaption
173+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YouGetCaption.git
174+
175+
- name: Clone YTFlags
176+
run: git clone --quiet --depth=1 https://github.com/Tonwalter888/YTFlags.git
177+
178+
- name: Clone IAmYouTube
179+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/IAmYouTube.git
180+
181+
- name: Clone YTVideoErrorAlert
182+
if: ${{ inputs.ytvid }}
183+
run: git clone --quiet --depth=1 https://github.com/PoomSmart/YTVideoErrorAlert.git
184+
185+
# - name: Clone VolumeBoostYT
186+
# if: ${{ inputs.volboost }}
187+
# run: git clone --quiet --depth=1 https://github.com/VasirakCalgux/VolumeBoostYT.git
188+
189+
- name: Build YouPiP
190+
run: |
191+
cd YouPiP
192+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
193+
mv packages/*.deb ${{ github.workspace }}/youpip.deb
194+
195+
- name: Build YTUHD
196+
run: |
197+
cd YTUHD
198+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
199+
mv packages/*.deb ${{ github.workspace }}/ytuhd.deb
200+
201+
- name: Build Return-YouTube-Dislikes
202+
run: |
203+
cd Return-YouTube-Dislikes
204+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
205+
mv packages/*.deb ${{ github.workspace }}/ryd.deb
206+
207+
- name: Build YouGroupSettings
208+
run: |
209+
cd YouGroupSettings
210+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
211+
mv packages/*.deb ${{ github.workspace }}/ygs.deb
212+
213+
- name: Build YTVideoOverlay
214+
run: |
215+
cd YTVideoOverlay
216+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
217+
mv packages/*.deb ${{ github.workspace }}/ytvo.deb
218+
219+
- name: Build YTABConfig
220+
run: |
221+
cd YTABConfig
222+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
223+
mv packages/*.deb ${{ github.workspace }}/ytabconfig.deb
224+
225+
- name: Build YouQuality
226+
run: |
227+
cd YouQuality
228+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
229+
mv packages/*.deb ${{ github.workspace }}/youquality.deb
230+
231+
- name: Build YouSpeed
232+
run: |
233+
cd YouSpeed
234+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
235+
mv packages/*.deb ${{ github.workspace }}/youspeed.deb
236+
237+
- name: Build DontEatMyContent
238+
if: ${{ inputs.demc }}
239+
run: |
240+
cd DontEatMyContent
241+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
242+
mv packages/*.deb ${{ github.workspace }}/demc.deb
243+
244+
- name: Build YouMute
245+
run: |
246+
cd YouMute
247+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
248+
mv packages/*.deb ${{ github.workspace }}/ym.deb
249+
250+
- name: Build YouLoop
251+
run: |
252+
cd YouLoop
253+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
254+
mv packages/*.deb ${{ github.workspace }}/youloop.deb
255+
256+
- name: Build YouSlider
257+
run: |
258+
cd YouSlider
259+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
260+
mv packages/*.deb ${{ github.workspace }}/youslider.deb
261+
262+
- name: Build Alderis
263+
run: |
264+
cd Alderis
265+
make clean package DEBUG=0 FINALPACKAGE=1 ARCHS=arm64
266+
mv packages/*.deb ${{ github.workspace }}/alderis.deb
267+
268+
- name: Build YouChooseQuality
269+
run: |
270+
cd YouChooseQuality
271+
git checkout 1585a3691b2ef0b59d42c40c31639fd8b79e2cd4
272+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
273+
mv packages/*.deb ${{ github.workspace }}/youchoose.deb
274+
275+
- name: Build YTSilentVote
276+
run: |
277+
cd YTSilentVote
278+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
279+
mv packages/*.deb ${{ github.workspace }}/ytnovote.deb
280+
281+
- name: Build YouShare
282+
run: |
283+
cd YouShare
284+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
285+
mv packages/*.deb ${{ github.workspace }}/youshare.deb
286+
287+
- name: Build Gonerino
288+
run: |
289+
cd Gonerino
290+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
291+
mv packages/*.deb ${{ github.workspace }}/gonerino.deb
292+
293+
- name: Build YouGetCaption
294+
run: |
295+
cd YouGetCaption
296+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
297+
mv packages/*.deb ${{ github.workspace }}/ygc.deb
298+
299+
- name: Build YTweaks
300+
run: |
301+
cd YTweaks
302+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
303+
mv packages/*.deb ${{ github.workspace }}/ytweaks.deb
304+
305+
- name: Build YTFlags
306+
run: |
307+
cd YTFlags
308+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
309+
mv packages/*.deb ${{ github.workspace }}/ytflags.deb
310+
311+
- name: Build IAmYouTube
312+
run: |
313+
cd IAmYouTube
314+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
315+
mv packages/*.deb ${{ github.workspace }}/imyt.deb
316+
317+
- name: Build YTVideoErrorAlert
318+
if: ${{ inputs.ytvid }}
319+
run: |
320+
cd YTVideoErrorAlert
321+
make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
322+
mv packages/*.deb ${{ github.workspace }}/ytvideoerror.deb
323+
324+
# - name: Build VolumeBoostYT
325+
# if: ${{ inputs.volboost }}
326+
# run: |
327+
# cd VolumeBoostYT
328+
# make clean package DEBUG=0 FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless ARCHS=arm64
329+
# mv packages/*.deb ${{ github.workspace }}/volboostyt.deb
330+
331+
- name: Inject Tweaks Into IPA
332+
run: |
333+
tweaks="OpenYouTubeSafariExtension.appex"
334+
335+
for f in *.deb; do
336+
tweaks="$tweaks $f"
337+
done
338+
339+
cyan -i youtube.ipa -o YTLitePlusEXTRA_NoYTLite_${{ env.YT_VERSION }.ipa -uwef $tweaks -n "${{ inputs.display_name }}" -b ${{ inputs.bundle_id }}
340+
341+
- name: Create a Draft Release
342+
uses: softprops/action-gh-release@v3
343+
with:
344+
tag_name: ytliteplusextra-ipa-noytlite${{ github.run_number }}
345+
name: YTLitePlusEXTRA_NoYTLite_${{ env.YT_VERSION }} (${{ github.run_number }})
346+
files: YTLitePlusEXTRA_NoYTLite_${{ env.YT_VERSION }.ipa
347+
draft: true
348+
349+
- name: Job Summary - Build Conplete
350+
run: |
351+
echo -e '### 🛠️ Build IPA wtihout YTLite Complete!' >> $GITHUB_STEP_SUMMARY
352+
353+
- name: Job Summary - Output the Draft Release Link
354+
run: |
355+
echo -e '### 🚀 Draft Release\n\nDraft release has been created successfully! You can view your release here: https://github.com/${{ github.repository }}/releases' >> $GITHUB_STEP_SUMMARY
356+
357+
- name: Job Summary - Cleanup
358+
run: |
359+
echo -e '### 🧹 Cleanup\n\nYou can remove previous GitHub Actions run here: https://github.com/${{ github.repository }}/actions/workflows/delete-old-workflows-run.yml And if you want to delelte old draft releases you have then here: https://github.com/${{ github.repository }}/actions/workflows/delete-old-draft-releases.yml' >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)