forked from Jellycuts/docs.jellycuts.com
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SW-DLT.jelly
375 lines (337 loc) · 52.3 KB
/
SW-DLT.jelly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
import Shortcuts 1092.9.18
#Color: red,#Icon: 3dsqaurestack
{dictionary("Author":"net00","VersionID":"3E5","RID":"7284","isMini":"false","deleteAll":"false")}
if( == nil $2) {
} else {
} >> If Result
{dictionary("vars":{dictionary("updateScript":"data:text/html,<script>var rhGET = new XMLHttpRequest();rhGET.open("GET","https://routinehub.co/api/v1/shortcuts/${metadata.key(RID)}/versions/latest", false);rhGET.send();document.write(rhGET.responseText);</script>","videoResPrompt":"Select Video Quality (Closest Available)","videoFPSPrompt":"Select Video FPS (Closest Available)","playlistPrompt":"Select Type of Playlist Download","galleryPrompt":"Select Range to Download","galleryCRPrompt":"Type a range of items to download. Newest item is at first position (1). Example: 1,2,3-7,10. Commas select individual items, hyphen declares a range. Both can be combined.","noURLFound":"Please use the Share Sheet or a URL from the clipboard.","noURLFoundTitle":"No URL Provided","deleteAllTitle":"Warning: Deleting All Dependencies","deleteAllPrompt":"Delete all dependencies mode is ON. Are you sure you want to delete all dependencies?","restartRequired":"Some dependencies were installed that required the shortcut to be restarted. ","downloadError":"The download could not be completed. Please check source compatibility. If you used a custom quality try selecting the default.","erasedAll":"All the dependencies used by this shortcut have been erased. They will be reinstalled the next time a download is requested. ","defaultVideo":"video default","defaultAudio":"audio","videoPlaylist":"playlist video","audioPlaylist":"playlist audio","defaultGallery":"gallery all","deleteAll":"utility erase")},"listMap":{dictionary("Default":"Default","2160p":"2160","1440p":"1440","1080p":"1080","720p":"720","480p":"480","360p":"360","60FPS":"60","30FPS":"30")},"icons":{dictionary("vDown":"iVBORw0KGgoAAAANSUhEUgAAAHsAAAB7CAYAAABUx/9/AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAUGVYSWZNTQAqAAAACAACARIA AwAAAAEAAQAAh2kABAAAAAEAAAAmAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAB7oAMABAAA AAEAAAB7AAAAAA4FWqQAAAIGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHht bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpl eGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVu dGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lv bj4xMDI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5z aW9uPjEwMjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K ICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KokyVsAAAFxJJREFUeAHtXXuQHMV573ns7u09hRAi xgQJCbB4hYCd2A4g3gRLJHawFQxIQuBEFI8yjkU5D/9z/zgpu1DiJJjYclUMSEK2FbuSSoDYgDDY TpVtwC6CbQwOljCPsgRCp7uT7nZnp/P9Zrb3vu3t2d3ZnT3trqar7rr7e3V/39fv6Zm1RIeDXDOe nTl+6p3CFUtK0jpJSHm2FPJqYVnLLCGyssPld5N40leQvgWywcuWsP6LbPC/jiVfEZ7YM7Bo+DVr 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","aDown":"iVBORw0KGgoAAAANSUhEUgAAAHsAAAB7CAYAAABUx/9/AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAUGVYSWZNTQAqAAAACAACARIA AwAAAAEAAQAAh2kABAAAAAEAAAAmAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAB7oAMABAAA AAEAAAB7AAAAAA4FWqQAAAIGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHht bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpl eGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVu dGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lv bj4xMDI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5z aW9uPjEwMjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K ICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KokyVsAAAGQBJREFUeAHtXQuUFNWZvlXd855hQGFU XgMiD5f1EXE1hEBA10QlMW4UXRUQN6vuMclJsrpu1M0u5+SYHDeS1c1jV3cTH+Bx11GTExU36yoI ixiDronyEFSeggIiMDMwM91dtf9X3X/z952q6uru6h66py9nuPf+r/vf/6976z6rDVXkMG/x+lrV 1TUqosx221Bjbds4w7CtLyrDONVQqlYpu8gaHE/iqcZK9dm2/b5tmM9GDfsty1Y7EsrarpqbP+hY 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 /IsAAAAASUVORK5CYII=","pDown":"iVBORw0KGgoAAAANSUhEUgAAAHsAAAB7CAYAAABUx/9/AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAUGVYSWZNTQAqAAAACAACARIA AwAAAAEAAQAAh2kABAAAAAEAAAAmAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAB7oAMABAAA AAEAAAB7AAAAAA4FWqQAAAIGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHht bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpl eGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVu dGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lv bj4xMDI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5z aW9uPjEwMjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K ICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KokyVsAAAGEVJREFUeAHtXQ2sHcV1PnvffQb8njH/ pYZgm18DIbSEtKQohtIfpXZUkiqkirARrRqQkkqlgYamUaSnJJSSmiZVRasgpSVglBbUqqlCaIoE CYS2NAQS/go2Jbb5DRgwGP++d+/2+2bvue+8ubuzu/fufX7P3pGvZ3bOOd+cOWdmdvfs7L5Ihpzi iYkFMvbOcdKUpRK1T5CWnIUmPyQSnSiRLBhy83MPPpa9IvFzIo1vy0j0uMTxFpmSzbJj/MVoYgK0 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","gDown":"iVBORw0KGgoAAAANSUhEUgAAAHsAAAB7CAYAAABUx/9/AAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAUGVYSWZNTQAqAAAACAACARIA AwAAAAEAAQAAh2kABAAAAAEAAAAmAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAB7oAMABAAA AAEAAAB7AAAAAA4FWqQAAAIGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHht bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z OnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpl eGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVu dGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lv bj4xMDI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5z aW9uPjEwMjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K ICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KokyVsAAAFxZJREFUeAHtXXmUVUV6r3vf0guN7KCC gAgIEnHBZQyIMzDqCDP5w+RwkiDG/DHhOOpkxplkRM+c0//omMRxTqLGQybnZCbgJIeJOspmG3Zk kVUhQLPIvu9IN939tpvvV+9Vd7377v7qNe913+rzupav6quvvt+tvepejZXYLFhQH2+90m9wjEWH ZVhmaCbN7tQ047uaxkYYhhYvcfblx14zEsxgB6nsi/QI26kz/WiSpY5U97pwYsaM+kQpBdZKwfw/ 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")},"lists":{dictionary("videoRes":["Default","2160p","1440p","1080p","720p","480p","360p"],"videoFPS":["60FPS","30FPS"],"playlistType":["Video Playlist","Audio Playlist"],"galleryRange":["All Items","Custom Range"])})}
valueFor(key: "isMini", dictionary: metadata) >> isMini
valueFor(key: "deleteAll", dictionary: metadata) >> deleteAll
if( .beginsWith "OUTPUT.") {
matchText(text: "${Shortcut Input}", regex: "(?<=OUTPUT\.).+", caseSensitive: false) >> matchText
if( == $2) {
} else {
} >> If Result
quicklook(input: If Result)
list(items: (
"rm -f *-*-*-*-*-*.*",
"rm -r -f *-*-*-*-*-*",
"rm -f SW_DLT.py"
)) >> list
if( == $2) {
} else {
} >> If Result
exit()
}
if( .beginsWith "EXCEPTION.") {
matchText(text: "${Shortcut Input}", regex: "(?<=EXCEPTION\.).+", caseSensitive: false) >> matchText
valueFor(key: "${Matches}", dictionary: mainDic) >> exceptionMsg
alert(alert: "${exceptionMsg}", title: "Exception Alert", cancel: false)
exit()
} >> If Result
url(url: "${mainDic.key(vars.updateScript)}") >> url
urlContents(url: "${URL}") >> urlContents
getTextFrom(input: Contents of Web Page) >> APIResponse
if( != nil $2) {
getTextFrom(input: APIResponse) >> LatestV
if( != ""${metadata.key(VersionID)}"") {
menu(, [Update Directly, Skip This Time]) {
case("Update Directly"):
replaceText(input: "${APIResponse.as(Dictionary).key(URL)}", find: "^.+?(?=\/shortcut)", replace: "shortcuts:/", isRegex: true) >> replaceText
openURL(url: Updated Text)
exit()
case("Skip This Time"):
} >> Menu Result
}
} >> If Result
if( == "Yes") {
alert(alert: "${mainDic.key(vars.deleteAllPrompt)}", title: "${mainDic.key(vars.deleteAllTitle)}", cancel: true)
} else {
getURLSFromInput(text: "${If Result}") >> getURLSFromInput
if( == nil $2) {
alert(alert: "${mainDic.key(vars.noURLFound)}", title: "${mainDic.key(vars.noURLFoundTitle)}", cancel: false)
exit()
} >> If Result
count(type: Characters, input: mediaURL) >> count
if( <= 30) {
text(text: "${mediaURL}") >> text
} else {
matchText(text: "${mediaURL}", regex: "^.{30}", caseSensitive: false) >> matchText
text(text: "${Matches}...") >> text
} >> If Result
text(text: "BEGIN:VCARD
VERSION:3.0
N;CHARSET=utf-8:Download Video;;;;
PHOTO;ENCODING=b:${mainDic.key(icons.pDown)}
ORG:Videos, GIFs, Clips at Custom Quality;
END:VCARD
BEGIN:VCARD
VERSION:3.0
N;CHARSET=utf-8:Download Audio;;;;
PHOTO;ENCODING=b:${Variable.key(icons.pDown)}
ORG:Standalone or Video-Extracted;
END:VCARD
BEGIN:VCARD
VERSION:3.0
N;CHARSET=utf-8:Download Playlist;;;;
PHOTO;ENCODING=b:${mainDic.key(icons.vDown)}
ORG:Video or Audio, at Default Quality;
END:VCARD
BEGIN:VCARD
VERSION:3.0
N;CHARSET=utf-8:Download Image/Gallery;;;;
PHOTO;ENCODING=b:${Variable.key(icons.vDown)}
ORG:Images, GIFs, Clips, Albums, Entire Profiles;
END:VCARD") >> text
setName(input: Text, name: "mainMenu.vcf") >> setName
choose(list: Renamed Item, prompt: "SW-DLT: Main Menu
URL: ${If Result}") >> choose
if( == "Download Video") {
choose(list: mainDic, prompt: "${mainDic.key(vars.videoResPrompt)}") >> choose
valueFor(key: "${Chosen Item}", dictionary: mainDic) >> videoRes
if( != "Default") {
choose(list: mainDic, prompt: "${mainDic.key(vars.videoFPSPrompt)}") >> choose
valueFor(key: "${Chosen Item}", dictionary: mainDic) >> videoFPS
text(text: "video ${videoFPS} ${ActionOutput}") >> text
} else {
}
} >> If Result
if( == "Download Audio") {
} >> If Result
if( == "Download Playlist") {
choose(list: mainDic, prompt: "${mainDic.key(vars.playlistPrompt)}") >> choose
if( == "Video Playlist") {
} else {
}
} >> If Result
if( == "Download Image/Gallery") {
choose(list: mainDic, prompt: "${mainDic.key(vars.galleryPrompt)}") >> choose
if( == "All Items") {
} else {
askForInput(prompt: "${mainDic.key(vars.galleryCRPrompt)}", default: 1-10) >> custRange
text(text: "gallery ${custRange}") >> text
}
} >> If Result
} >> If Result
if( != nil $2) {
text(|"""# SW-DLT script, do not copy without permission!
import subprocess
import mimetypes
import datetime
import shutil
import sys
import re
import os
try:
import requests
import youtube_dl
except:
pass
class SWDLT:
FFMPEG_URL = "https://github.com/holzschu/a-Shell-commands/releases/download/0.1/ffmpeg.wasm"
FFPROBE_URL = "https://github.com/holzschu/a-Shell-commands/releases/download/0.1/ffprobe.wasm"
REBOOT_EXC = "open shortcuts://run-shortcut?name=SW-DLT&input=text&text=EXCEPTION.vars.restartRequired"
ERASED_EXC = "open shortcuts://run-shortcut?name=SW-DLT&input=text&text=EXCEPTION.vars.erasedAll"
DERROR_EXC = "open shortcuts://run-shortcut?name=SW-DLT&input=text&text=EXCEPTION.vars.downloadError"
def __init__(self, media_url):
self.media_url = media_url
self.out_name = datetime.datetime.today().strftime("%d-%m-%y-%H-%M-%S")
def check_setup(self):
reboot = False
if "Package(s) not found" in subprocess.getoutput("pip show youtube-dl"):
subprocess.run("pip -q install --upgrade youtube-dl")
reboot = True
if "Package(s) not found" in subprocess.getoutput("pip show gallery-dl"):
subprocess.run("pip -q install --upgrade gallery-dl")
reboot = True
if reboot is True:
raise Exception(self.REBOOT_EXC)
subprocess.run("cd")
if os.path.exists("./bin") is False:
subprocess.run("mkdir bin")
subprocess.run("cd bin")
req1 = requests.get(self.FFMPEG_URL)
with open('./ffmpeg.wasm', 'wb') as ffmpeg:
ffmpeg.write(req1.content)
ffmpeg.close()
req2 = requests.get(self.FFPROBE_URL)
with open('./ffprobe.wasm', 'wb') as ffprobe:
ffprobe.write(req2.content)
ffprobe.close()
else:
subprocess.run("cd bin")
if os.path.exists("./ffprobe.wasm") is False:
req2 = requests.get(self.FFPROBE_URL)
with open('./ffprobe.wasm', 'wb') as ffprobe:
ffprobe.write(req2.content)
ffprobe.close()
if os.path.exists("./ffmpeg.wasm") is False:
req1 = requests.get(self.FFMPEG_URL)
with open('./ffmpeg.wasm', 'wb') as ffmpeg:
ffmpeg.write(req1.content)
ffmpeg.close()
subprocess.run("jump shortcuts")
def erase_dependencies(self):
subprocess.run("pip uninstall -y youtube-dl")
subprocess.run("pip uninstall -y youtube-dl")
subprocess.run("cd")
subprocess.run("cd bin")
subprocess.run("rm -f ffmpeg.wasm")
subprocess.run("rm -f ffprobe.wasm")
raise Exception(self.ERASED_EXC)
def video_download(self):
video_res = sys.argv[3]
if video_res == "default":
format_opts = {
"format": "best[ext=mp4]/best/bestvideo[ext=mp4]+bestaudio[ext*=4]/bestvideo[ext!*=4]+bestaudio[ext!*=4]",
"playlist_items": "1-1", "outtmpl": "{}.%(ext)s".format(self.out_name)
}
else:
video_fps = sys.argv[4]
format_opts = {
"format": "bestvideo[ext=mp4][height>={0}][fps>={1}]+bestaudio[ext*=4]/bestvideo[ext=mp4][height>={0}][fps<={1}]+bestaudio[ext*=4]/bestvideo[ext!*=4][height>={0}][fps>={1}]+bestaudio[ext!*=4]/bestvideo[ext!*=4][height>={0}][fps<={1}]+bestaudio[ext!*=4]/bestvideo[ext=mp4][height<={0}][fps>={1}]+bestaudio[ext*=4]/bestvideo[ext=mp4][height<={0}][fps<={1}]+bestaudio[ext*=4]/bestvideo[ext!*=4][height<={0}][fps>={1}]+bestaudio[ext!*=4]/bestvideo[ext!*=4][height<={0}][fps<={1}]+bestaudio[ext!*=4]/best[ext=mp4][height>={0}][fps>={1}]/best[ext=mp4][height>={0}][fps<={1}]/best[ext!*=4][height>={0}][fps>={1}]/best[ext!*=4][height>={0}][fps<={1}]/best[ext=mp4][height<={0}][fps>={1}]/best[ext=mp4][height<={0}][fps<={1}]/best[ext!*=4][height<={0}][fps>={1}]/best[ext!*=4][height<={0}][fps<={1}]".format(
video_res, video_fps), "playlist_items": "1-1", "outtmpl": "{}.%(ext)s".format(self.out_name)
}
try:
self.single_ytdl(format_opts)
except:
raise Exception(self.DERROR_EXC)
def audio_download(self):
format_opts = {"format": "bestaudio[ext*=4]/bestaudio[ext=mp3]/best[ext=mp4]/best", "playlist_items": "1-1",
"postprocessors": [{"key": "FFmpegExtractAudio", "preferredcodec": "m4a"}],
"outtmpl": "{}.%(ext)s".format(self.out_name)}
try:
self.single_ytdl(format_opts)
except:
raise Exception(self.DERROR_EXC)
def single_ytdl(self, format_opts):
with youtube_dl.YoutubeDL(format_opts) as vidObj:
vidObj.download([self.media_url])
re_pattern = re.compile(self.out_name + "\.[\w]{2,4}")
file_name = re_pattern.match(subprocess.getoutput("ls")).group(0)
subprocess.run("open shortcuts://run-shortcut?name=SW-DLT&input=text&text=OUTPUT.{}".format(file_name))
return
def gallery_download(self):
gallery_range = sys.argv[3]
gallery_urls = None
if gallery_range == "all":
gallery_urls = subprocess.getoutput("gallery-dl -G {}".format(self.media_url)).splitlines()
else:
gallery_urls = subprocess.getoutput(
"gallery-dl -G {0} --range '{1}'".format(self.media_url, gallery_range)).splitlines()
media_count = 0
ext = ""
subprocess.run("mkdir {}".format(self.out_name))
subprocess.run("cd {}".format(self.out_name))
for url in gallery_urls:
if url.startswith("http"):
media_get = requests.get(str(url))
ext = mimetypes.guess_extension(media_get.headers['content-type'])
media_count = media_count + 1
with open('MEDIA_{0}{1}'.format(media_count, ext), 'wb') as media:
media.write(media_get.content)
media.close()
if media_count < 1:
subprocess.run("jump shortcuts")
subprocess.run("rm -r -f {}".format(self.out_name))
raise Exception(self.DERROR_EXC)
elif media_count < 2:
subprocess.run("mv {0} $SHORTCUTS/{1}".format("MEDIA_" + str(media_count) + ext, self.out_name + ext))
subprocess.run("rm -r -f {}".format(self.out_name))
subprocess.run(
"open shortcuts://run-shortcut?name=SW-DLT&input=text&text=OUTPUT.{}".format(self.out_name + ext))
else:
subprocess.run("jump shortcuts")
shutil.make_archive(self.out_name, "zip", self.out_name)
subprocess.run("rm -r -f {}".format(self.out_name))
subprocess.run(
"open shortcuts://run-shortcut?name=SW-DLT&input=text&text=OUTPUT.{}".format(self.out_name + ".zip"))
def playlist_download(self):
playlist_type = sys.argv[3]
format_opts = None
if playlist_type == "video":
format_opts = {"format": "best[ext=mp4]/best", "outtmpl": "{}/%(id)s.%(ext)s".format(self.out_name)}
else:
format_opts = {"format": "bestaudio[ext*=4]/bestaudio[ext=mp3]/best[ext=mp4]/best",
"postprocessors": [{"key": "FFmpegExtractAudio", "preferredcodec": "m4a"}],
"outtmpl": "{}/%(id)s.%(ext)s".format(self.out_name)}
try:
with youtube_dl.YoutubeDL(format_opts) as vidObj:
vidObj.download([self.media_url])
shutil.make_archive(self.out_name, "zip", self.out_name)
subprocess.run("rm -r -f {}".format(self.out_name))
subprocess.run(
"open shortcuts://run-shortcut?name=SW-DLT&input=text&text=OUTPUT.{}".format(self.out_name + ".zip"))
except:
raise Exception(self.DERROR_EXC)
def main():
string_msgs = {
"video_prompt": "Downloading video, custom qualities can take longer to process...",
"audio_prompt": "Downloading audio...",
"playlist_prompt": "Downloading playlist, process will take longer for bigger playlists...",
"gallery_prompt": "Downloading URLs, process will take longer for bigger albums...",
"erase_prompt": "Deleting all dependencies, please wait...",
"dependency_check": "SW-DLT\nChecking Dependencies..."
}
sw_dlt_inst = SWDLT(sys.argv[1])
download_type = sys.argv[2]
subprocess.run("clear")
# Pre-download cleanup and check for utility installation
print(string_msgs["dependency_check"])
try:
sw_dlt_inst.check_setup()
subprocess.run("rm -f *-*-*-*-*-*.*")
subprocess.run("rm -r -f *-*-*-*-*-*")
subprocess.run("clear")
# Download functions
if download_type == "video":
print(string_msgs["video_prompt"])
sw_dlt_inst.video_download()
elif download_type == "audio":
print(string_msgs["audio_prompt"])
sw_dlt_inst.audio_download()
elif download_type == "playlist":
print(string_msgs["playlist_prompt"])
sw_dlt_inst.playlist_download()
elif download_type == "gallery":
print(string_msgs["gallery_prompt"])
sw_dlt_inst.gallery_download()
elif download_type == "erase":
print(string_msgs["erase_prompt"])
sw_dlt_inst.erase_dependencies()
except Exception as rt_ex:
# All exceptions are handled here and sent back to the Shortcut
subprocess.run(str(rt_ex.args[0]))
subprocess.run("clear")
sys.exit()
# Post download cleaning
subprocess.run("clear")
if __name__ == "__main__":
main()"""|)
setName(input: Text, name: "SW_DLT.py") >> setName
list(items: (
"jump shortcuts",
{
WFItemType = 0;
WFValue = {
Value = {
attachmentsByRange = {
"{17, 1}" = {
Type = Variable;
VariableName = mediaURL;
};
"{19, 1}" = {
Type = Variable;
VariableName = args;
};
};
string = "python SW_DLT.py \Ufffc \Ufffc";
};
WFSerializationType = WFTextTokenString;
};
}
)) >> list
if( == "Yes") {
} else {
} >> If Result
} >> If Result