Login About Gallery
ShortcutBatchSource
COMMENT
## A work-in-progress version of @[gluebyte](https://routinehub.co/user/gluebyte)'s Shortcuts Source Tool designed to run on Siri Shortcuts in bulk. - Version 0.1 - `09082022-141350` - [GitHub Issue](https://github.com/extratone/i/issues/255) - [RoutineHub • Shortcut Source Tool](https://routinehub.co/shortcut/5256/) > Since it's not a generic use case, I made a modified version for you: https://www.icloud.com/shortcuts/c7703bdf7ea04e85a4341137321b6f90 Run it from another shortcut, passing a shortcut's name. You can edit the Save File action at the end to specify a folder to save these files. - [Chrome Fragment Link](https://routinehub.co/shortcut/5256/#:~:text=since%20it's%20not%20a%20generic%20use%20case%2C%20i%20made%20a%20modified%20version%20for%20you%3A%20https%3A%2F%2Fwww.icloud.com%2Fshortcuts%2Fc7703bdf7ea04e85a4341137321b6f90%20run%20it%20from%20another%20shortcut%2C%20passing%20a%20shortcut's%20name.%20you%20can%20edit%20the%20save%20file%20action%20at%20the%20end%20to%20specify%20a%20folder%20to%20save%20these%20files.%20) - [Original iCloud Share Link](https://www.icloud.com/shortcuts/c7703bdf7ea04e85a4341137321b6f90) - [Gist](https://gist.github.com/extratone/22baa0b770fa32065f08eb01e1c925d1) - [Working Copy](working-copy://open?repo=i&path=shortcuts&mode=content) - [Source Repo File](https://github.com/extratone/i/blob/main/shortcuts/.shortcut) - [WTF](https://davidblue.wtf/drafts/EA3687EC-7F10-4848-9057-E1173DFCC0DA.html)
SHORTCUTS
Get my shortcuts
FILES
Filter
My Shortcuts
where
Sort by
Creation Date
Order
Oldest First
Limit
SCRIPTING
Repeat with each item in
Files
DOCUMENTS
Get
Name
from
Repeat Item
Under Construction
SCRIPTING
Set name of
Repeat Item
to
Transformed Text
SCRIPTING
Get name of
Renamed Item
SCRIPTING
Set name of
Renamed Item
to
a.plist
SCRIPTING
Get file of type
com.apple.plist
from
Renamed Item
SCRIPTING
Set name of
File of Type
to
Name
.plist.txt
VARIABLES
Add
Renamed Item
to
output
SCRIPTING
Get file of type
public.json
from
Renamed Item
URL
data:text/html;charset=utf-8,<script>document.write(encodeURIComponent(JSON.stringify(
File of Type
,null,'\t').replaceAll('\ufffc','\\uFFFC')));</script>
SCRIPTING
Get file of type
com.apple.webarchive
from
URL
SCRIPTING
URL
Decode
File of Type
SCRIPTING
Set name of
URL Encoded Text
to
Name
.json.txt
VARIABLES
Add
Renamed Item
to
output
DOCUMENTS
Replace
&
with
&amp;
in
Name
Case Sensitive
Regular Expression
DOCUMENTS
Replace
<
with
&lt;
in
Updated Text
Case Sensitive
Regular Expression
DICTIONARY
SCRIPTING
Set
name
to
shortcutname
in
Dictionary
VARIABLES
Set variable
src
to
File of Type
SCRIPTING
If
src
contains
{"__type__":"data","__value__":"YnBsaXN0
TEXT
Match
([^"]+)":\{"__type__":"data","__value__":"(YnBsaXN0[^"]+)
in
src
Case Sensitive
SCRIPTING
Repeat with each item in
Matches
TEXT
Get
Group At Index
1
in
Repeat Item
TEXT
Get
Group At Index
2
in
Repeat Item
SCRIPTING
Decode
b64
with base64
SCRIPTING
Set name of
Base64 Encoded
to
a.plist
NOTHING
Nothing
SCRIPTING
If
Text
is
UserActivityData
SCRIPTING
Get
Value
for
$objects.5
in
Renamed Item
End If
SCRIPTING
If
Text
is
IntentData
SCRIPTING
Get
Value
for
$objects.13
in
Renamed Item
End If
DICTIONARY
<inline variable>
DOCUMENTS
Replace
^\{"k":|\}$
with
World
in
Dictionary
Case Sensitive
Regular Expression
DOCUMENTS
Replace
{"__type__":"data","__value__":"
b64
"}
with
Updated Text
in
src
Case Sensitive
Regular Expression
VARIABLES
Set variable
src
to
Updated Text
NOTHING
Nothing
End Repeat
End If
TEXT
const idDict = { "is.workflow.actions.conditional":[{ "name":"If $\ufffc0 $\ufffc1", "group":"gLoop", },{ "name":"Otherwise", "group":"gLoop", },{ "name":"End If", "group":"gLoop", }], "is.workflow.actions.repeat.count":[{ "name":"Repeat $\ufffc0 Times", "group":"gLoop", "param":{ "WFRepeatCount":"$\ufffc0", "$\ufffc0":"1", }},{},{ "name":"End Repeat Times", "group":"gLoop", }], "is.workflow.actions.repeat.each":[{ "name":"Repeat with Each in $\ufffc0", "group":"gLoop", },{},{ "name":"End Repeat with Each", "group":"gLoop", }], "is.workflow.actions.choosefrommenu":[{ "name":"Choose from Menu", "group":"gLoop", },{ "name":"Menu Item $\ufffc0", "group":"gLoop", "param":{ "WFMenuItemTitle":"$\ufffc0", }},{ "name":"End Menu", "group":"gLoop", }], "is.workflow.actions.runworkflow":[{ "name":"Run Shortcut $\ufffc1", "param":{ "WFWorkflowName":"$\ufffc1", }}], "is.workflow.actions.exit":[{ "name":"Stop This Shortcut", "group":"gScripting", }], "is.workflow.actions.output":[{ "name":"Stop and Output $\ufffc0", "group":"gScripting", "param":{ "WFOutput":"$\ufffc0", }}], "is.workflow.actions.hide.app":[{ "name":"Hide $\ufffc0", "group":"gScripting", "param":{ "WFHideAppMode":"$\ufffc0", "$\ufffc0":"App", }}], "is.workflow.actions.quit.app":[{ "name":"Quit $\ufffc0", "group":"gScripting", "param":{ "WFQuitAppMode":"$\ufffc0", "$\ufffc0":"App", }}], "is.workflow.actions.waittoreturn":[{ "name":"Wait to Return", }], "is.workflow.actions.nothing":[{ "name":"Nothing", "group":"gScripting", }], "is.workflow.actions.comment":[{ "name":"Comment", "group":"gDocuments", "param":{ "WFCommentActionText":"#", }}], "is.workflow.actions.detect.text":[{ "name":"Get Text from $\ufffc0", "group":"gDocuments", }], "is.workflow.actions.detect.number":[{ "name":"Get Numbers from $\ufffc0", }], "is.workflow.actions.detect.images":[{ "name":"Get Images from $\ufffc0", }], "is.workflow.actions.detect.dictionary":[{ "name":"Get Dictionary from $\ufffc0", "group":"gScripting", }], "is.workflow.actions.detect.link":[{ "name":"Get URLs from $\ufffc0", }], "is.workflow.actions.detect.date":[{ "name":"Get Dates from $\ufffc0", }], "is.workflow.actions.detect.contacts":[{ "name":"Get Contacts from $\ufffc0", }], "is.workflow.actions.getvariable":[{ "name":"Get Variable $\ufffc0", "group":"gVariable", "param":{ "WFVariable":"$\ufffc0", }}], "is.workflow.actions.setvariable":[{ "name":"Set Variable $\ufffc1 to $\ufffc0", "group":"gVariable", "param":{ "WFVariableName":"$\ufffc1", }}], "is.workflow.actions.appendvariable":[{ "name":"Add $\ufffc0 to Variable $\ufffc1", "group":"gVariable", "param":{ "WFVariableName":"$\ufffc1", }}], "is.workflow.actions.setitemname":[{ "name":"Set Name of $\ufffc0 to $\ufffc1", "group":"gScripting", "param":{ "WFName":"$\ufffc1", }}], "is.workflow.actions.getitemname":[{ "name":"Get Name of $\ufffc0", "group":"gScripting", }], "is.workflow.actions.getitemtype":[{ "name":"Get Type of $\ufffc0", "group":"gScripting", }], "is.workflow.actions.ask":[{ "name":"Ask for $\ufffc0 Input", "group":"gScripting", "param":{ "WFInputType":"$\ufffc0", "$\ufffc0":"Text", }}], "is.workflow.actions.selectphoto":[{ "name":"Select Photos", }], "is.workflow.actions.alert":[{ "name":"Show Alert", "group":"gScripting", }], "is.workflow.actions.showresult":[{ "name":"Show Result", "group":"gDocuments", "param":{ "Text":"#", }}], "is.workflow.actions.notification":[{ "name":"Show Notification", "param":{ "WFNotificationActionTitle":"Title", "WFInput":"Attachment", }}], "is.workflow.actions.previewdocument":[{ "name":"Quick Look $\ufffc0", "group":"gDocuments", }], "is.workflow.actions.speaktext":[{ "name":"Speak Text", }], "is.workflow.actions.makespokenaudiofromtext":[{ "name":"Make Spoken Audio from $\ufffc0", }], "is.workflow.actions.gettext":[{ "name":"Text", "group":"gDocuments", "param":{ "WFTextActionText":"#", }}], "is.workflow.actions.text.split":[{ "name":"Split Text $\ufffc0 by $\ufffc1", "group":"gDocuments", "param":{ "text":"$\ufffc0", "WFTextSeparator":"$\ufffc1", "$\ufffc1":"New Lines", }}], "is.workflow.actions.text.combine":[{ "name":"Combine Text $\ufffc0 with $\ufffc1", "group":"gDocuments", "param":{ "text":"$\ufffc0", "WFTextSeparator":"$\ufffc1", "$\ufffc1":"New Lines", }}], "is.workflow.actions.text.replace":[{ "name":"Replace Text $\ufffc1 with $\ufffc2 in $\ufffc0", "group":"gDocuments", "param":{ "WFReplaceTextFind":"$\ufffc1", "WFReplaceTextReplace":"$\ufffc2", }}], "is.workflow.actions.text.match":[{ "name":"Match Text $\ufffc0 in $\ufffc1", "group":"gDocuments", "param":{ "WFMatchTextPattern":"$\ufffc0", "text":"$\ufffc1", "$\ufffc1":"[0-9a-zA-Z]", }}], "is.workflow.actions.text.match.getgroup":[{ "name":"Get Match $\ufffc0 $\ufffc1 in $\ufffc2", "group":"gDocuments", "param":{ "WFGetGroupType":"$\ufffc0", "WFGroupIndex":"$\ufffc1", "matches":"$\ufffc2", "$\ufffc0":"Group At Index", "$\ufffc1":"1", }}], "is.workflow.actions.base64encode":[{ "name":"Base64 $\ufffc1 $\ufffc0", "group":"gScripting", "param":{ "WFEncodeMode":"$\ufffc1", "$\ufffc1":"Encode", }}], "is.workflow.actions.urlencode":[{ "name":"URL $\ufffc1 $\ufffc0", "group":"gScripting", "param":{ "WFEncodeMode":"$\ufffc1", "$\ufffc1":"Encode", }}], "is.workflow.actions.setclipboard":[{ "name":"Copy $\ufffc0 to Clipboard", }], "is.workflow.actions.getclipboard":[{ "name":"Get Clipboard", }], "is.workflow.actions.number":[{ "name":"Number $\ufffc0", "param":{ "WFNumberActionNumber":"$\ufffc0", }}], "is.workflow.actions.count":[{ "name":"Count $\ufffc0 in $\ufffc1", "param":{ "WFCountType":"$\ufffc0", "Input":"$\ufffc1", "$\ufffc0":"Items", }}], "is.workflow.actions.math":[{ "name":"Calculate $\ufffc0 $\ufffc1 $\ufffc2", "param":{ "WFMathOperation":"$\ufffc1", "WFMathOperand":"$\ufffc2", "$\ufffc1":"+", }}], "is.workflow.actions.statistics":[{ "name":"Calculate the $\ufffc1 of $\ufffc0", "param":{ "Input":"$\ufffc0", "WFStatisticsOperation":"$\ufffc1", "$\ufffc1":"Average", }}], "is.workflow.actions.calculateexpression":[{ "name":"Calculate Expression $\ufffc0", "param":{ "Input":"$\ufffc0", }}], "is.workflow.actions.dictionary":[{ "name":"Dictionary", "group":"gScripting", "param":{ "WFItems":"#", }}], "is.workflow.actions.getvalueforkey":[{ "name":"Get Dictionary $\ufffc1 in $\ufffc0", "group":"gScripting", "param":{ "WFGetDictionaryValueType":"$\ufffc1", }}], "is.workflow.actions.setvalueforkey":[{ "name":"Set Dictionary Value for $\ufffc0 to $\ufffc1 in $\ufffc2", "group":"gScripting", "param":{ "WFDictionaryKey":"$\ufffc0", "WFDictionaryValue":"$\ufffc1", "WFDictionary":"$\ufffc2" }}], "is.workflow.actions.list":[{ "name":"List", "group":"gScripting", "param":{ "WFItems":"#", }}], "is.workflow.actions.getitemfromlist":[{ "name":"Get List $\ufffc1 from $\ufffc0", "group":"gScripting", "param":{ "WFItemSpecifier":"$\ufffc1", "$\ufffc1":"First Item", }}], "is.workflow.actions.choosefromlist":[{ "name":"Choose from List $\ufffc0", "group":"gScripting", }], "is.workflow.actions.getrichtextfrommarkdown":[{ "name":"Make Rich Text from Markdown $\ufffc0", }], "is.workflow.actions.getrichtextfromhtml":[{ "name":"Make Rich Text from HTML $\ufffc0", "param":{ "WFHTML":"$\ufffc0", }}], "is.workflow.actions.getmarkdownfromrichtext":[{ "name":"Make Markdown from Rich Text $\ufffc0", }], "is.workflow.actions.gethtmlfromrichtext":[{ "name":"Make HTML from Rich Text $\ufffc0", }], "is.workflow.actions.documentpicker.save":[{ "name":"Save File $\ufffc0", }], "is.workflow.actions.documentpicker.open":[{ "name":"Get File $\ufffc0 from Folder", "param":{ "WFGetFilePath":"$\ufffc0", }}], "is.workflow.actions.file.delete":[{ "name":"Delete Files $\ufffc0", "WFDeleteFileConfirmDeletion":"Confirm Before Deleting", }], "is.workflow.actions.savetocameraroll":[{ "name":"Save Photos $\ufffc0 to $\ufffc1", "param":{ "WFCameraRollSelectedGroup":"$\ufffc1", "$\ufffc1":"Recents", }}], "is.workflow.actions.deletephotos":[{ "name":"Delete Photos $\ufffc0", "param":{ "photos":"$\ufffc0", }}], "is.workflow.actions.photos.createalbum":[{ "name":"Create Photo Album $\ufffc1 with $\ufffc0", "param":{ "AlbumName":"$\ufffc1", }}], "is.workflow.actions.url":[{ "name":"URL $\ufffc0", "param":{ "WFURLActionURL":"$\ufffc0", }}], "is.workflow.actions.openurl":[{ "name":"Open URL $\ufffc0", }], "is.workflow.actions.showwebpage":[{ "name":"Show Web Page at $\ufffc0", "param":{ "WFURL":"$\ufffc0", }}], "is.workflow.actions.downloadurl":[{ "name":"Get Contents of URL $\ufffc0", "param":{ "WFURL":"$\ufffc0", }}], "is.workflow.actions.getwebpagecontents":[{ "name":"Get Contents of Web Page at $\ufffc0", }], "is.workflow.actions.safari.geturl":[{ "name":"Get Current Web Page from Safari", }], "is.workflow.actions.runjavascriptonwebpage":[{ "name":"Run JavaScript on $\ufffc0", "param":{ "WFJavaScript":"#", }}], "is.workflow.actions.runapplescript":[{ "name":"Run AppleScript with $\ufffc0", "param":{ "Input":"$\ufffc0", "Script":"#", }}], "is.workflow.actions.runjavascriptforautomation":[{ "name":"Run JXA with $\ufffc0", "param":{ "Input":"$\ufffc0", "Script":"#", }}], "is.workflow.actions.runshellscript":[{ "name":"Run Shell Script", }], "is.workflow.actions.date":[{ "name":"Date $\ufffc0", "param":{ "WFDateActionMode":"$\ufffc0", "$\ufffc0":"Current Date", }}], "is.workflow.actions.format.date":[{ "name":"Format Date $\ufffc0", "param":{ "WFDate":"$\ufffc0", }}], "is.workflow.actions.adjustdate":[{ "name":"Adjust $\ufffc0 Date $\ufffc1", "param":{ "WFDate":"$\ufffc1", "WFAdjustOperation":"$\ufffc0", "$\ufffc0":"Add", }}], "is.workflow.actions.gettimebetweendates":[{ "name":"Get Time Between $\ufffc1 and $\ufffc0 in $\ufffc2", "param":{ "WFTimeUntilFromDate":"$\ufffc1", "WFTimeUntilUnit":"$\ufffc2", "$\ufffc2":"Minutes", }}], "is.workflow.actions.converttimezone":[{ "name":"Convert Time Zone of $\ufffc0", "param":{ "Date":"$\ufffc0", }}], "is.workflow.actions.addnewevent":[{ "name":"Add New Event $\ufffc0 from $\ufffc1 to $\ufffc2", "param":{ "WFCalendarItemTitle":"$\ufffc0", "WFCalendarItemStartDate":"$\ufffc1", "WFCalendarItemEndDate":"$\ufffc2", }}], "is.workflow.actions.removeevents":[{ "name":"Remove Events $\ufffc0", "param":{ "WFInputEvents":"$\ufffc0", }}], "is.workflow.actions.getupcomingevents":[{ "name":"Get Upcoming $\ufffc0 Events from $\ufffc1", "param":{ "WFGetUpcomingItemCount":"$\ufffc0", "WFGetUpcomingItemCalendar":"$\ufffc1", "$\ufffc0":"1", "$\ufffc1":"All Calendars", }}], "is.workflow.actions.addnewcalendar":[{ "name":"Add New Calendar $\ufffc0", "param":{ "CalendarName":"$\ufffc0", }}], "is.workflow.actions.contacts":[{ "name":"Contacts", }], "is.workflow.actions.selectcontacts":[{ "name":"Select Contact", }], "is.workflow.actions.setters.contacts":[{ "name":"$\ufffc1 to/from Contact $\ufffc0", "param":{ "Mode":"$\ufffc1", "$\ufffc1":"Set", }}], "com.apple.mobiletimer-framework.MobileTimerIntents.MTCreateAlarmIntent":[{ "name":"Create Alarm for $\ufffc0 called $\ufffc1", "param":{ "dateComponents":"$\ufffc0", "label":"$\ufffc1", }}], "com.apple.mobiletimer-framework.MobileTimerIntents.MTGetAlarmsIntent":[{ "name":"Get All Alarms", }], "is.workflow.actions.appendnote":[{ "name":"Append $\ufffc0 to Note $\ufffc1", "param":{ "WFNote":"$\ufffc1", }}], "is.workflow.actions.shownote":[{ "name":"Show Note $\ufffc0", }], "com.apple.mobilenotes.SharingExtension":[{ "name":"Create Note with $\ufffc0", "param":{ "WFCreateNoteInput":"$\ufffc0", }}], "is.workflow.actions.addnewreminder":[{ "name":"Add New Reminder $\ufffc0 to $\ufffc1 with $\ufffc2", "param":{ "WFCalendarItemTitle":"$\ufffc0", "WFCalendarItemCalendar":"$\ufffc1", "WFAlertEnabled":"$\ufffc2", "$\ufffc1":"Reminders", "$\ufffc2":"No Alert", }}], "is.workflow.actions.removereminders":[{ "name":"Remove Reminders $\ufffc0", "param":{ "WFInputReminders":"$\ufffc0", }}], "is.workflow.actions.getupcomingreminders":[{ "name":"Get Upcoming $\ufffc0 Reminders from $\ufffc1", "param":{ "WFGetUpcomingItemCount":"$\ufffc0", "WFGetUpcomingItemCalendar":"$\ufffc1", "$\ufffc0":"1", "$\ufffc1":"All Lists", }}], "is.workflow.actions.showincalendar":[{ "name":"Open $\ufffc0 in Calendar", "param":{ "WFEvent":"$\ufffc0", }}], "is.workflow.actions.takephoto":[{ "name":"Take $\ufffc0 Photos with $\ufffc1 Camera", "param":{ "WFPhotoCount":"$\ufffc0", "WFCameraCaptureDevice":"$\ufffc1", "$\ufffc0":"1", "$\ufffc1":"Back", }}], "is.workflow.actions.takevideo":[{ "name":"Take Video with $\ufffc0 Camera", "param":{ "WFCameraCaptureDevice":"$\ufffc0", "$\ufffc0":"Back", }}], "is.workflow.actions.wallpaper.set":[{ "name":"Set $\ufffc1 Wallpaper to $\ufffc0", "param":{ "WFWallpaperLocation":"$\ufffc1", "$\ufffc1":"Lock Screen, Home Screen", }}], "is.workflow.actions.getonscreencontent":[{ "name":"Get What’s On Screen", }], "is.workflow.actions.timer.start":[{ "name":"Start Timer for $\ufffc0", "param":{ "WFDuration":"$\ufffc0", }}], "is.workflow.actions.detect.phonenumber":[{ "name":"Get Phone Numbers from $\ufffc0", }], "is.workflow.actions.phonenumber":[{ "name":"Phone Number", }], "is.workflow.actions.selectphone":[{ "name":"Select Phone Number", }], "com.apple.facetime.facetime":[{ "name":"$\ufffc0 Call $\ufffc1", "param":{ "WFFaceTimeType":"$\ufffc0", "WFFaceTimeContact":"$\ufffc1", "$\ufffc0":"FaceTime", }}], "com.apple.mobilephone.call":[{ "name":"Call $\ufffc0", "param":{ "WFCallContact":"$\ufffc0", }}], "is.workflow.actions.sendmessage":[{ "name":"Send Message $\ufffc0", "param":{ "WFSendMessageContent":"$\ufffc0", }}], "is.workflow.actions.sendemail":[{ "name":"Send Email $\ufffc0 as $\ufffc1", "param":{ "WFSendEmailActionInputAttachments":"$\ufffc0", "WFSendEmailActionSubject":"$\ufffc1", }}], "is.workflow.actions.email":[{ "name":"Email Address", }], "is.workflow.actions.detect.emailaddress":[{ "name":"Get Email Addresses from $\ufffc0", }], "is.workflow.actions.selectemail":[{ "name":"Select Email Address", }], "is.workflow.actions.detect.address":[{ "name":"Get Addresses from $\ufffc0", }], "is.workflow.actions.getdistance":[{ "name":"Get Distance", }], "is.workflow.actions.gethalfwaypoint":[{ "name":"Get Halfway Point", }], "is.workflow.actions.getmapslink":[{ "name":"Get Maps URL from $\ufffc0", }], "is.workflow.actions.gettraveltime":[{ "name":"Get $\ufffc0 Time", "param":{ "WFGetDirectionsActionMode":"$\ufffc0", "$\ufffc0":"Driving", }}], "is.workflow.actions.searchlocalbusinesses":[{ "name":"Search Local Businesses", }], "is.workflow.actions.getdirections":[{ "name":"Open $\ufffc0 Directions using $\ufffc1", "param":{ "WFGetDirectionsActionMode":"$\ufffc0", "WFGetDirectionsActionApp":"$\ufffc1", "$\ufffc0":"Driving", "$\ufffc1":"Maps", }}], "is.workflow.actions.searchmaps":[{ "name":"Open in Maps", }], "is.workflow.actions.address":[{ "name":"Street Address", }], "is.workflow.actions.addtoplaylist":[{ "name":"Add Music $\ufffc0 to Playlist $\ufffc1", "param":{ "WFPlaylistName":"$\ufffc1", "$\ufffc1":"My Music Library", }}], "is.workflow.actions.addmusictoupnext":[{ "name":"Add Music $\ufffc0 to $\ufffc1 of Up Next", "param":{ "WFMusic":"$\ufffc0", "WFWhenToPlay":"$\ufffc1", "$\ufffc1":"Next", }}], "is.workflow.actions.clearupnext":[{ "name":"Clear Up Next", }], "is.workflow.actions.createplaylist":[{ "name":"Create Playlist $\ufffc0 with $\ufffc1", "param":{ "WFPlaylistName":"$\ufffc0", "WFPlaylistItems":"$\ufffc1", }}], "is.workflow.actions.getcurrentsong":[{ "name":"Get Current Song", }], "is.workflow.actions.get.playlist":[{ "name":"Get Songs in Playlist $\ufffc0", "param":{ "WFPlaylistName":"$\ufffc0", }}], "is.workflow.actions.playmusic":[{ "name":"Play Music $\ufffc0", "param":{ "WFMediaItems":"$\ufffc0", }}], "is.workflow.actions.exportsong":[{ "name":"Select Music", }], "is.workflow.actions.importaudiofiles":[{ "name":"Import Audio $\ufffc0 into Music", }], "is.workflow.actions.getlatestphotoimport":[{ "name":"Get Last Import", }], "is.workflow.actions.getlatestbursts":[{ "name":"Get Latest $\ufffc0 Bursts", "param":{ "WFGetLatestPhotoCount":"$\ufffc0", "$\ufffc0":"1", }}], "is.workflow.actions.getlatestlivephotos":[{ "name":"Get Latest $\ufffc0 Live Photos", "param":{ "WFGetLatestPhotoCount":"$\ufffc0", "$\ufffc0":"1", }}], "is.workflow.actions.getlastphoto":[{ "name":"Get Latest $\ufffc0 Photos", "param":{ "WFGetLatestPhotoCount":"$\ufffc0", "$\ufffc0":"1", }}], "is.workflow.actions.getlastscreenshot":[{ "name":"Get Latest $\ufffc0 Screenshots", "param":{ "WFGetLatestPhotoCount":"$\ufffc0", "$\ufffc0":"1", }}], "is.workflow.actions.getlastvideo":[{ "name":"Get Latest $\ufffc0 Videos", "param":{ "WFGetLatestPhotoCount":"$\ufffc0", "$\ufffc0":"1", }}], "is.workflow.actions.getepisodesforpodcast":[{ "name":"Get Episodes of Podcast $\ufffc0", }], "is.workflow.actions.getpodcastsfromlibrary":[{ "name":"Get Podcasts from Library", }], "is.workflow.actions.playpodcast":[{ "name":"Play Podcast $\ufffc0", "param":{ "WFPodcastShow":"$\ufffc0", }}], "is.workflow.actions.searchpodcasts":[{ "name":"Search Podcasts", }], "is.workflow.actions.podcasts.subscribe":[{ "name":"Subscribe to Podcast $\ufffc0", }], "is.workflow.actions.reminders.showlist":[{ "name":"Open Reminders List $\ufffc0", "param":{ "WFList":"$\ufffc0", "$\ufffc0":"Reminders", }}], "is.workflow.actions.readinglist":[{ "name":"Add $\ufffc0 to Reading List", "param":{ "WFURL":"$\ufffc0", }}], "is.workflow.actions.getarticle":[{ "name":"Get Article from $\ufffc0 using Safari Reader", "param":{ "WFWebPage":"$\ufffc0", }}], "is.workflow.actions.searchweb":[{ "name":"Search Web $\ufffc1 for $\ufffc0", "param":{ "WFSearchWebDestination":"$\ufffc1", "$\ufffc1":"Google", "WFInputText":"$\ufffc0", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXStartMagnifierIntent":[{ "name":"Open Magnifier", }], "is.workflow.actions.getmyworkflows":[{ "name":"Get My Shortcuts", }], "is.workflow.actions.weather.currentconditions":[{ "name":"Get Current Weather", }], "is.workflow.actions.weather.forecast":[{ "name":"Get $\ufffc0 Weather Forecast", "param":{ "WFWeatherForecastType":"$\ufffc0", "$\ufffc0":"Daily", }}], "is.workflow.actions.openapp":[{ "name":"Open App $\ufffc0", "param":{ "WFAppIdentifier":"$\ufffc0", }}], "is.workflow.actions.handoff":[{ "name":"Continue in Shortcuts app", }], "is.workflow.actions.dismisssiri":[{ "name":"Dismiss Siri and Continue", }], "is.workflow.actions.returntohomescreen":[{ "name":"Return to Home Screen", }], "is.workflow.actions.delay":[{ "name":"Wait $\ufffc0 seconds", "param":{ "WFDelayTime":"$\ufffc0", "$\ufffc0":"1", }}], "is.workflow.actions.hash":[{ "name":"Generate $\ufffc1 Hash of $\ufffc0", "param":{ "WFHashType":"$\ufffc1", "$\ufffc1":"MD5", }}], "is.workflow.actions.viewresult":[{ "name":"View Content Graph of $\ufffc0", }], "is.workflow.actions.round":[{ "name":"Round Number $\ufffc0 to $\ufffc1", "param":{ "WFRoundTo":"$\ufffc1", "$\ufffc1":"Ones Place", }}], "is.workflow.actions.measurement.convert":[{ "name":"Convert Measurement $\ufffc0 into $\ufffc1", "param":{ "WFMeasurementUnitType":"$\ufffc1", "$\ufffc1":"Length", "$\ufffc2":"meters", }}], "is.workflow.actions.measurement.create":[{ "name":"Measurement $\ufffc1 $\ufffc0", "param":{ "WFMeasurementUnit":"$\ufffc0", "WFMeasurementUnitType":"$\ufffc1", "$\ufffc1":"Length", }}], "is.workflow.actions.format.filesize":[{ "name":"Format File Size $\ufffc0 into $\ufffc1", "param":{ "WFFileSize":"$\ufffc0", "WFFileSizeFormat":"$\ufffc1", "$\ufffc1":"Closest Unit", }}], "is.workflow.actions.format.number":[{ "name":"Format Number $\ufffc0 to $\ufffc1 decimal places", "param":{ "WFNumber":"$\ufffc0", "WFNumberFormatDecimalPlaces":"$\ufffc1", "$\ufffc1":"2", }}], "is.workflow.actions.number.random":[{ "name":"Random Number between $\ufffc0 and $\ufffc1", "param":{ "WFRandomNumberMinimum":"$\ufffc0", "WFRandomNumberMaximum":"$\ufffc1", }}], "is.workflow.actions.openxcallbackurl":[{ "name":"Open X-Callback URL $\ufffc0", "param":{ "WFXCallbackURL":"$\ufffc0", }}], "is.workflow.actions.getcurrentlocation":[{ "name":"Get Current Location", }], "is.workflow.actions.location":[{ "name":"Location", }], "is.workflow.actions.airdropdocument":[{ "name":"AirDrop", }], "is.workflow.actions.share":[{ "name":"Share $\ufffc0", }], "is.workflow.actions.runextension":[{ "name":"Share $\ufffc0 with App $\ufffc1", "param":{ "WFAppIdentifier":"$\ufffc1", }}], "is.workflow.actions.recordaudio":[{ "name":"Record Audio", }], "is.workflow.actions.addframetogif":[{ "name":"Add Frame $\ufffc0 to GIF $\ufffc1", "param":{ "WFImage":"$\ufffc0", "WFInputGIF":"$\ufffc1", }}], "is.workflow.actions.getframesfromimage":[{ "name":"Get Frames from Image $\ufffc0", "param":{ "WFImage":"$\ufffc0", }}], "is.workflow.actions.makegif":[{ "name":"Make GIF from $\ufffc0", }], "is.workflow.actions.makevideofromgif":[{ "name":"Make Video from GIF $\ufffc0", "param":{ "WFInputGIF":"$\ufffc0", }}], "is.workflow.actions.image.combine":[{ "name":"Combine Images $\ufffc0 $\ufffc1", "param":{ "WFImageCombineMode":"$\ufffc1", "$\ufffc1":"Horizontally", }}], "is.workflow.actions.image.crop":[{ "name":"Crop Image $\ufffc0", }], "is.workflow.actions.image.flip":[{ "name":"Flip Image $\ufffc0 $\ufffc1", "param":{ "WFImageFlipDirection":"$\ufffc1", "$\ufffc1":"Horizontally", }}], "is.workflow.actions.avairyeditphoto":[{ "name":"Markup $\ufffc0", "param":{ "WFDocument":"$\ufffc0", }}], "is.workflow.actions.image.mask":[{ "name":"Mask Image $\ufffc0 with $\ufffc1", "param":{ "WFMaskType":"$\ufffc1", "$\ufffc1":"Rounded Rectangle", }}], "is.workflow.actions.overlayimageonimage":[{ "name":"Overlay Image $\ufffc1 with $\ufffc0", "param":{ "WFImage":"$\ufffc1", }}], "is.workflow.actions.overlaytext":[{ "name":"Overlay Text $\ufffc0 on $\ufffc1 at $\ufffc2", "param":{ "WFText":"$\ufffc0", "WFImage":"$\ufffc1", "WFTextPosition":"$\ufffc2", "$\ufffc2":"Center", }}], "is.workflow.actions.image.resize":[{ "name":"Resize Image $\ufffc0 to $\ufffc1", "param":{ "WFImage":"$\ufffc0", "WFImageResizeKey":"$\ufffc1", "$\ufffc1":"Size", }}], "is.workflow.actions.image.rotate":[{ "name":"Rotate Image/Video $\ufffc0 by $\ufffc1 degrees", "param":{ "WFImage":"$\ufffc0", "WFImageRotateAmount":"$\ufffc1", "$\ufffc1":"90", }}], "is.workflow.actions.image.convert":[{ "name":"Convert Image $\ufffc0 to $\ufffc1", "param":{ "WFImageFormat":"$\ufffc1", "$\ufffc1":"JPEG", }}], "is.workflow.actions.pausemusic":[{ "name":"Play/Pause $\ufffc0", "param":{ "WFPlayPauseBehavior":"$\ufffc0", "$\ufffc0":"Play/Pause", }}], "is.workflow.actions.listeningmode.set":[{ "name":"Set Noise Control Mode", }], "is.workflow.actions.skipback":[{ "name":"Skip Back to the $\ufffc0", "param":{ "WFSkipBackBehavior":"$\ufffc0", "$\ufffc0":"Beginning", }}], "is.workflow.actions.skipforward":[{ "name":"Skip Forward", }], "is.workflow.actions.encodemedia":[{ "name":"Encode Media $\ufffc0", "param":{ "WFMedia":"$\ufffc0", }}], "is.workflow.actions.trimvideo":[{ "name":"Trim Media $\ufffc0", "param":{ "WFInputMedia":"$\ufffc0", }}], "is.workflow.actions.unzip":[{ "name":"Extract Archive $\ufffc0", "param":{ "WFArchive":"$\ufffc0", }}], "is.workflow.actions.makezip":[{ "name":"Make $\ufffc1 Archive from $\ufffc0", "param":{ "WFArchiveFormat":"$\ufffc1", "$\ufffc1":".zip", }}], "is.workflow.actions.file.append":[{ "name":"$\ufffc1 $\ufffc0 to Text File", "param":{ "WFAppendFileWriteMode":"$\ufffc1", "$\ufffc1":"Append", }}], "is.workflow.actions.file.createfolder":[{ "name":"Create Folder", }], "is.workflow.actions.file.getlink":[{ "name":"Get Link to File $\ufffc0", "param":{ "WFFile":"$\ufffc0", }}], "is.workflow.actions.file":[{ "name":"File", }], "is.workflow.actions.folder":[{ "name":"Folder", }], "is.workflow.actions.file.getfoldercontents":[{ "name":"Get Contents of Folder $\ufffc0", "param":{ "WFFolder":"$\ufffc0", }}], "is.workflow.actions.getparentdirectory":[{ "name":"Get Parent Directory of $\ufffc0", }], "is.workflow.actions.finder.getselectedfiles":[{ "name":"Get Selected Files in Finder", }], "is.workflow.actions.file.reveal":[{ "name":"Reveal Files $\ufffc0 in Finder", "param":{ "WFFile":"$\ufffc0", }}], "is.workflow.actions.file.move":[{ "name":"Move File $\ufffc0", "param":{ "WFFile":"$\ufffc0", }}], "is.workflow.actions.file.rename":[{ "name":"Rename File $\ufffc0 to $\ufffc1", "param":{ "WFFile":"$\ufffc0", "WFNewFilename":"$\ufffc1", }}], "is.workflow.actions.file.label":[{ "name":"Label Files $\ufffc0 with $\ufffc1", "param":{ "WFLabelColorNumber":"$\ufffc1", }}], "is.workflow.actions.file.select":[{ "name":"Select File", }], "is.workflow.actions.dropbox.open":[{ "name":"Get Dropbox File", }], "is.workflow.actions.dropbox.savefile":[{ "name":"Save Dropbox File $\ufffc0", }], "is.workflow.actions.dropbox.createfolder":[{ "name":"Create Dropbox Folder", }], "is.workflow.actions.dropbox.appendfile":[{ "name":"Append $\ufffc0 to Dropbox Text File", "param":{ "WFFile":"$\ufffc0", "WFNewFilename":"$\ufffc1", }}], "is.workflow.actions.gettypeaction":[{ "name":"Get File of Type $\ufffc1 from $\ufffc0", "param":{ "WFFileType":"$\ufffc1", "$\ufffc1":"public.rtf", }}], "is.workflow.actions.makepdf":[{ "name":"Make PDF from $\ufffc0", }], "is.workflow.actions.splitpdf":[{ "name":"Split PDF $\ufffc0", }], "is.workflow.actions.gettextfrompdf":[{ "name":"Get $\ufffc1 from PDF $\ufffc0", "group":"gDocuments", "param":{ "WFGetTextFromPDFTextType":"$\ufffc1", "$\ufffc1":"Text", }}], "is.workflow.actions.makeimagefrompdfpage":[{ "name":"Make $\ufffc1 from PDF $\ufffc0", "param":{ "WFMakeImageFromPDFPageImageFormat":"$\ufffc1", "$\ufffc1":"PNG image", }}], "is.workflow.actions.print":[{ "name":"Print $\ufffc0", }], "is.workflow.actions.generatebarcode":[{ "name":"Generate QR Code from $\ufffc0", "param":{ "WFText":"$\ufffc0", }}], "is.workflow.actions.scanbarcode":[{ "name":"Scan QR or Bar Code", }], "is.workflow.actions.dictatetext":[{ "name":"Dictate Text", }], "is.workflow.actions.getnameofemoji":[{ "name":"Get Name of Emoji in $\ufffc0", "group":"gDocuments", }], "is.workflow.actions.showdefinition":[{ "name":"Show Definition of $\ufffc0", "param":{ "Word":"$\ufffc0", }}], "is.workflow.actions.text.changecase":[{ "name":"Change $\ufffc0 to $\ufffc1", "group":"gDocuments", "param":{ "text":"$\ufffc0", "WFCaseType":"$\ufffc1", "$\ufffc1":"UPPERCASE", }}], "is.workflow.actions.correctspelling":[{ "name":"Correct Spelling of $\ufffc0", "group":"gDocuments", "param":{ "text":"$\ufffc0", }}], "is.workflow.actions.text.translate":[{ "name":"Translate $\ufffc0 from $\ufffc1 to $\ufffc2", "param":{ "WFInputText":"$\ufffc0", "WFSelectedFromLanguage":"$\ufffc1", "WFSelectedLanguage":"$\ufffc2", "$\ufffc1":"Detected Language", "$\ufffc2":"Default", }}], "is.workflow.actions.detectlanguage":[{ "name":"Detect Language of $\ufffc0", }], "is.workflow.actions.extracttextfromimage":[{ "name":"Extract Text from Image $\ufffc0", "param":{ "WFImage":"$\ufffc0", }}], "is.workflow.actions.rss":[{ "name":"Get $\ufffc0 Items from RSS Feed $\ufffc1", "param":{ "WFRSSItemQuantity":"$\ufffc0", "WFURLs":"$\ufffc1", "$\ufffc0":"10", "$\ufffc1":"https://www.apple.com/newsroom/rss-feed.rss", }}], "is.workflow.actions.rss.extract":[{ "name":"Get RSS Feeds from Page $\ufffc0", "param":{ "WFURLs":"$\ufffc0", }}], "is.workflow.actions.url.expand":[{ "name":"Expand URL $\ufffc0", "param":{ "URL":"$\ufffc0", }}], "is.workflow.actions.geturlcomponent":[{ "name":"Get $\ufffc0 of URL $\ufffc1", "param":{ "WFURLComponent":"$\ufffc0", "WFURL":"$\ufffc1", "$\ufffc0":"Scheme", }}], "is.workflow.actions.url.getheaders":[{ "name":"Get Headers of URL $\ufffc0", }], "is.workflow.actions.runsshscript":[{ "name":"Run Script Over SSH", }], "is.workflow.actions.health.quantity.log":[{ "name":"Log Health Sample", }], "is.workflow.actions.health.workout.log":[{ "name":"Log Workout", }], "is.workflow.actions.filter.files":[{ "name":"Filter Files $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", }}], "is.workflow.actions.filter.photos":[{ "name":"Find Photos $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Photos", }}], "is.workflow.actions.filter.calendarevents":[{ "name":"Find Calendar Events $\ufffc0 where", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Calendar Events", }}], "is.workflow.actions.filter.contacts":[{ "name":"Find Contacts $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Contacts", }}], "is.workflow.actions.filter.notes":[{ "name":"Find Notes", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Notes", }}], "is.workflow.actions.filter.reminders":[{ "name":"Find Reminders", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Reminders", }}], "is.workflow.actions.filter.eventattendees":[{ "name":"Filter Event Attendees $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", }}], "is.workflow.actions.filter.music":[{ "name":"Find Music $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Music", }}], "is.workflow.actions.filter.articles":[{ "name":"Filter Articles $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", }}], "is.workflow.actions.filter.locations":[{ "name":"Filter Locations $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", }}], "is.workflow.actions.filter.images":[{ "name":"Filter Images $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", }}], "is.workflow.actions.filter.health.quantity":[{ "name":"Find Health Samples $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Health Samples", }}], "is.workflow.actions.filter.windows":[{ "name":"Find Windows $\ufffc0", "param":{ "WFContentItemInputParameter":"$\ufffc0", "$\ufffc0":"All Windows", }}], "is.workflow.actions.properties.calendarevents":[{ "name":"Get Details $\ufffc1 of Calendar Events $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Start Date", }}], "is.workflow.actions.properties.reminders":[{ "name":"Get Details $\ufffc1 of Reminders $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"List", }}], "is.workflow.actions.properties.eventattendees":[{ "name":"Get Details $\ufffc1 of Event Attendees $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Status", }}], "is.workflow.actions.properties.contacts":[{ "name":"Get Details $\ufffc1 of Contacts $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Group", }}], "is.workflow.actions.properties.itunesartist":[{ "name":"Get Details $\ufffc1 of iTunes Artist $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Genre", }}], "is.workflow.actions.properties.itunesstore":[{ "name":"Get Details $\ufffc1 of iTunes Product $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Artist", }}], "is.workflow.actions.properties.music":[{ "name":"Get Details $\ufffc1 of Music $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Artist", }}], "is.workflow.actions.properties.appstore":[{ "name":"Get Details $\ufffc1 of App Store App $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Artist", }}], "is.workflow.actions.properties.podcastshow":[{ "name":"Get Details $\ufffc1 of Podcast from $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Feed URL", }}], "is.workflow.actions.properties.podcast":[{ "name":"Get Details $\ufffc1 of Podcast Episode $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Store ID", }}], "is.workflow.actions.properties.articles":[{ "name":"Get Details $\ufffc1 of Article $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Title", }}], "is.workflow.actions.properties.safariwebpage":[{ "name":"Get Details $\ufffc1 of Safari Webpage $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Page Contents", }}], "is.workflow.actions.properties.weather.conditions":[{ "name":"Get Details $\ufffc1 of Weather Conditions $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Date", }}], "is.workflow.actions.properties.locations":[{ "name":"Get Details $\ufffc1 of Locations $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Latitude", }}], "is.workflow.actions.properties.images":[{ "name":"Get Details $\ufffc1 of Images $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Album", }}], "is.workflow.actions.properties.files":[{ "name":"Get Details $\ufffc1 of Files $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"File Size", }}], "is.workflow.actions.properties.health.quantity":[{ "name":"Get Details $\ufffc1 of Health Sample $\ufffc0", "param":{ "WFContentItemPropertyName":"$\ufffc1", "$\ufffc1":"Type", }}], "is.workflow.actions.getclassaction":[{ "name":"Get Object of Class $\ufffc0 from $\ufffc0", "param":{ "Class":"$\ufffc0", "Input":"$\ufffc1", "$\ufffc0":"NSURL", }}], "is.workflow.actions.openin":[{ "name":"Open File $\ufffc0", }], "is.workflow.actions.gethomeaccessorystate":[{ "name":"Get the State of My Home", }], "is.workflow.actions.homeaccessory":[{ "name":"Control My Home", }], "is.workflow.actions.setplaybackdestination":[{ "name":"$\ufffc0 Playback Destination", "param":{ "WFMediaRouteOperation":"$\ufffc0", "$\ufffc0":"Set", }}], "is.workflow.actions.handoffplayback":[{ "name":"Hand Off Playback", }], "is.workflow.actions.searchitunes":[{ "name":"Search iTunes Store for $\ufffc0", "param":{ "WFSearchTerm":"$\ufffc0", }}], "is.workflow.actions.showinstore":[{ "name":"Show $\ufffc0 in iTunes Store", "param":{ "WFProduct":"$\ufffc0", }}], "is.workflow.actions.searchappstore":[{ "name":"Search App Store for $\ufffc0", "param":{ "WFSearchTerm":"$\ufffc0", }}], "is.workflow.actions.getdevicedetails":[{ "name":"Get Device Details $\ufffc0", "param":{ "WFDeviceDetail":"$\ufffc0", "$\ufffc0":"Device Name", }}], "is.workflow.actions.getbatterylevel":[{ "name":"Get Battery Level", }], "is.workflow.actions.setvolume":[{ "name":"Set Volume to $\ufffc0", "param":{ "WFVolume":"$\ufffc0", "$\ufffc0":"0.5", }}], "is.workflow.actions.setbrightness":[{ "name":"Set Brightness to $\ufffc0", "param":{ "WFBrightness":"$\ufffc0", "$\ufffc0":"0.5", }}], "is.workflow.actions.playsound":[{ "name":"Play Sound $\ufffc0", }], "is.workflow.actions.vibrate":[{ "name":"Vibrate Device", }], "is.workflow.actions.takescreenshot":[{ "name":"Take Screenshot", }], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXStartGuidedAccessIntent":[{ "name":"Start Guided Access", }], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXStartSpeakScreenIntent":[{ "name":"Start Speak Screen", }], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXSetLargeTextIntent":[{ "name":"Set Text Size to $\ufffc0", "param":{ "textSize":"$\ufffc0", "$\ufffc0":"Extra Small", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXSetBackgroundSoundVolumeIntent":[{ "name":"Set Background Sounds $\ufffc1 to $\ufffc0", "param":{ "volume":"$\ufffc0", "$\ufffc0":"0.1", "volumeType":"$\ufffc1", "$\ufffc1":"Volume", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXSetBackgroundSoundVolumeWhenMediaIsPlayingIntent":[{ "name":"Set Background Sounds Volume to $\ufffc0 When Media is Playing", "param":{ "volume":"$\ufffc0", "$\ufffc0":"0.1", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXSetBackgroundSoundIntent":[{ "name":"Change Background Sound to $\ufffc0", "param":{ "backgroundSound":"$\ufffc0", "$\ufffc0":"Balanced Noise", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleBackgroundSoundsIntent":[{ "name":"$\ufffc0 Background Sounds $\ufffc1 $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "setting":"$\ufffc1", "$\ufffc1":"", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleBackgroundSoundsWhenMediaIsPlayingIntent":[{ "name":"$\ufffc0 Use Background Sounds When Media is Playing $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.mobiletimer-framework.MobileTimerIntents.MTToggleAlarmIntent":[{ "name":"$\ufffc0 Alarm “$\ufffc1” $\ufffc9", "param":{ "operation":"$\ufffc0", "alarm":"$\ufffc1", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleAssistiveTouchIntent":[{ "name":"$\ufffc0 AssistiveTouch $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleAudioDescriptionsIntent":[{ "name":"$\ufffc0 Audio Descriptions $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleAudioDescriptionsIntent":[{ "name":"$\ufffc0 Audio Descriptions $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleClassicInvertIntent":[{ "name":"$\ufffc0 Classic Invert $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleClassicInvertIntent":[{ "name":"$\ufffc0 Classic Invert $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleCaptionsIntent":[{ "name":"$\ufffc0 Closed Captions+SDH $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleCaptionsIntent":[{ "name":"$\ufffc0 Closed Captions+SDH $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleContrastIntent":[{ "name":"$\ufffc0 Increase Contrast $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleContrastIntent":[{ "name":"$\ufffc0 Increase Contrast $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleLEDFlashIntent":[{ "name":"$\ufffc0 LED Flash $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleMonoAudioIntent":[{ "name":"$\ufffc0 Mono Audio $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleMonoAudioIntent":[{ "name":"$\ufffc0 Mono Audio $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleReduceMotionIntent":[{ "name":"$\ufffc0 Reduce Motion $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleReduceMotionIntent":[{ "name":"$\ufffc0 Reduce Motion $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleTransparencyIntent":[{ "name":"$\ufffc0 Reduce Transparency $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleTransparencyIntent":[{ "name":"$\ufffc0 Reduce Transparency $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleSmartInvertIntent":[{ "name":"$\ufffc0 Smart Invert $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleSmartInvertIntent":[{ "name":"$\ufffc0 Smart Invert $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleSwitchControlIntent":[{ "name":"$\ufffc0 Switch Control $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleSwitchControlIntent":[{ "name":"$\ufffc0 Switch Control $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleVoiceControlIntent":[{ "name":"$\ufffc0 Voice Control $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleVoiceControlIntent":[{ "name":"$\ufffc0 Voice Control $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleVoiceOverIntent":[{ "name":"$\ufffc0 VoiceOver $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleVoiceOverIntent":[{ "name":"$\ufffc0 VoiceOver $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleWhitePointIntent":[{ "name":"$\ufffc0 White Point $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.AccessibilityUtilities.AXSettingsShortcuts.AXToggleZoomIntent":[{ "name":"$\ufffc0 Zoom $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleZoomIntent":[{ "name":"$\ufffc0 Zoom $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleMouseKeysIntent":[{ "name":"$\ufffc0 Mouse Keys $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleFullKeyboardAccessIntent":[{ "name":"$\ufffc0 Full Keyboard Access $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleColorFiltersIntent":[{ "name":"$\ufffc0 Color Filters $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleHeadPointerIntent":[{ "name":"$\ufffc0 Head Pointer $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleSlowKeysIntent":[{ "name":"$\ufffc0 Slow Keys $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleStickyKeysIntent":[{ "name":"$\ufffc0 Skicky Keys $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleAlternatePointerActionsIntent":[{ "name":"$\ufffc0 Alternate Pointer Actions $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "com.apple.UniversalAccess.UASettingsShortcuts.UAToggleAccessibilityKeyboardIntent":[{ "name":"$\ufffc0 Accessibility Keyboard $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", "$\ufffc9":{"default":0}, }}], "is.workflow.actions.flashlight":[{ "name":"$\ufffc0 Flashlight $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "state":"$\ufffc9", }}], "is.workflow.actions.airplanemode.set":[{ "name":"$\ufffc0 Airplane Mode $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "OnValue":"$\ufffc9", "$\ufffc9":{"key":"OnValue"}, }}], "is.workflow.actions.bluetooth.set":[{ "name":"$\ufffc0 Bluetooth $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "OnValue":"$\ufffc9", "$\ufffc9":{"key":"OnValue"}, }}], "is.workflow.actions.cellulardata.set":[{ "name":"$\ufffc0 Cellular Data $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "OnValue":"$\ufffc9", "$\ufffc9":{"key":"OnValue"}, }}], "is.workflow.actions.lowpowermode.set":[{ "name":"$\ufffc0 Low Power Mode $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "OnValue":"$\ufffc9", "$\ufffc9":{"key":"OnValue"}, }}], "is.workflow.actions.orientationlock.set":[{ "name":"$\ufffc0 Orientation Lock $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "OnValue":"$\ufffc9", "$\ufffc9":{"key":"OnValue"}, }}], "is.workflow.actions.appearance":[{ "name":"$\ufffc0 Appearance $\ufffc9", "param":{ "operation":"$\ufffc0", "$\ufffc0":"Turn", "style":"$\ufffc9", "$\ufffc9":{"key":"style","default":"dark","dict":{"dark":"dark", "light":"light"}}, }}], "is.workflow.actions.wifi.set":[{ "name":"Turn Wi-Fi $\ufffc9", "param":{ "OnValue":"$\ufffc9", "$\ufffc9":{"key":"OnValue"}, }}], "is.workflow.actions.dnd.set":[{ "name":"Turn Focus $\ufffc9", "param":{ "Enabled":"$\ufffc9", "$\ufffc9":{"key":"Enabled","default":0}, }}], "is.workflow.actions.connecttoservers":[{ "name":"Connect to Servers $\ufffc0", }], "is.workflow.actions.mountdiskimage":[{ "name":"Mount Disk Image $\ufffc0", }], "is.workflow.actions.ejectdisk":[{ "name":"Eject Disk $\ufffc0", }], "is.workflow.actions.makediskimage":[{ "name":"Make Disk Image with $\ufffc0", }], "is.workflow.actions.movewindow":[{ "name":"Move Window $\ufffc0 to $\ufffc1", "param":{ "WFWindow":"$\ufffc0", "WFPosition":"$\ufffc1", "$\ufffc1":"Center", }}], "is.workflow.actions.resizewindow":[{ "name":"Resize Window $\ufffc0 to $\ufffc1", "param":{ "WFWindow":"$\ufffc0", "WFConfiguration":"$\ufffc1", "$\ufffc1":"Fit Screen", }}], "is.workflow.actions.splitscreen":[{ "name":"Split Screen between $\ufffc0 and $\ufffc1", "param":{ "WFPrimaryAppIdentifier":"$\ufffc0", "WFSecondaryAppIdentifier":"$\ufffc1", }}], "is.workflow.actions.startscreensaver":[{ "name":"Start Screen Saver", }], "is.workflow.actions.getipaddress":[{ "name":"Get Current IP Address", }], "is.workflow.actions.getwifi":[{ "name":"Get Network Details of $\ufffc0", "param":{ "WFNetworkDetailsNetwork":"$\ufffc0", "$\ufffc0":"Wi-Fi", }}], "is.workflow.actions.watchmedo":[{ "name":"Watch Me Do", }], "com.apple.TVRemoteUIService.LaunchApplicationIntent":[{ "name":"Open App on Apple TV", }], "com.apple.TVRemoteUIService.PauseContentIntent":[{ "name":"Play/Pause Apple TV", }], "com.apple.TVRemoteUIService.LaunchRemoteIntent":[{ "name":"Show Remote Control", }], "com.apple.TVRemoteUIService.SleepAppleTVIntent":[{ "name":"Sleep Apple TV", }], "com.apple.TVRemoteUIService.WakeAppleTVIntent":[{ "name":"Wake Apple TV", }], "is.workflow.actions.giphy":[{ "name":"Search Giphy", }], "is.workflow.actions.cloudapp.upload":[{ "name":"Upload to CloudApp", }], "is.workflow.actions.evernote.append":[{ "name":"Append to Evernote", }], "is.workflow.actions.evernote.delete":[{ "name":"Delete Evernotes", }], "is.workflow.actions.evernote.get":[{ "name":"Get Evernotes", }], "is.workflow.actions.evernote.getlink":[{ "name":"Get Evernote Link", }], "is.workflow.actions.evernote.new":[{ "name":"Create New Evernote", }], "is.workflow.actions.goodreader.open":[{ "name":"Open in GoodReader", }], "is.workflow.actions.imgur.upload":[{ "name":"Upload to Imgur", }], "is.workflow.actions.instapaper.add":[{ "name":"Add to Instapaper", }], "is.workflow.actions.instapaper.get":[{ "name":"Get Instapaper Bookmarks", }], "is.workflow.actions.lightroom.import":[{ "name":"Import to Lightroom", }], "is.workflow.actions.pinboard.add":[{ "name":"Add to Pinboard", }], "is.workflow.actions.pinboard.get":[{ "name":"Get Pinboard Bookmarks", }], "is.workflow.actions.pocket.add":[{ "name":"Add to Pocket", }], "is.workflow.actions.pocket.get":[{ "name":"Get Items from Pocket", }], "is.workflow.actions.postonfacebook":[{ "name":"Post on Facebook", }], "is.workflow.actions.properties.trello":[{ "name":"Get Details of Trello Item", }], "is.workflow.actions.showinblindsquare":[{ "name":"Open in BlindSquare", }], "is.workflow.actions.todoist.add":[{ "name":"Add Todoist Item", }], "is.workflow.actions.trello.add.board":[{ "name":"Create Trello Board", }], "is.workflow.actions.trello.add.card":[{ "name":"Add Trello Card", }], "is.workflow.actions.trello.add.list":[{ "name":"Create Trello List", }], "is.workflow.actions.trello.get":[{ "name":"Get Trello Items", }], "is.workflow.actions.tumblr.post":[{ "name":"Post to Tumblr", }], "is.workflow.actions.tweet":[{ "name":"Tweet", }], "is.workflow.actions.wordpress.post":[{ "name":"Post to WordPress", }], }; const condDict = { "0":"&lt;", "1":"&lt;=", "2":"&gt;", "3":"&gt;=", "4":"is", "5":"is not", "8":"begins with", "9":"ends with", "99":"contains", "100":"has any value", "101":"does not have any value", "999":"does not contain", "1000":"is in the next", "1001":"is in the last", "1002":"is today", "1003":"is between"}; const filterDict = { "Album":{"type":"Enumeration","default":"Recents"}, "Calendar":{"type":"Enumeration"}, "Folder":{"type":"Enumeration"}, "Group":{"type":"Enumeration"}, "Label":{"type":"Enumeration"}, "List":{"type":"Enumeration"}, "Media Kind":{"type":"Enumeration","default":"Movie"}, "Media Type":{"type":"Enumeration","default":"Image"}, "Orientation":{"type":"Enumeration","default":"Up"}, "Photo Type":{"type":"Enumeration","default":"HDR"}, "Priority":{"type":"Enumeration","default":"None"}, "Role":{"type":"Enumeration","default":"Unknown"}, "Source":{"type":"Enumeration"}, "Status":{"type":"Enumeration","default":"Accepted"}, "Type":{"type":"Enumeration","default":"Step"}, "Duration":{"type":"Number","unit":"Unit"}, "File Size":{"type":"Number","unit":"ByteCountUnit"}, "Phone Number":{"type":"Phone"}, "Phone Numbers":{"type":"Phone"}, }; const unitDict = { "Unit":{ "4":"years", "8":"months", "8192":"weeks", "16":"days", "32":"hours", "64":"minutes", "128":"seconds"}, "ByteCountUnit":{ "1":"bytes", "2":"KB", "4":"MB", "8":"GB", "16":"TB", "32":"PB", "64":"EB", "128":"ZB"}, }; function mapNullUndef(a, b) { return (a == null || a == undefined) ? b : a; } const ignore = ['UUID','GroupingIdentifier','WFControlFlowMode']; let udict = {}; let indent = 0; let loopindex = []; var gVarDict = {}; var gIndex; d.WFWorkflowActions.forEach((a,i) => { udict[a.WFWorkflowActionParameters.UUID] = i; }); let output = d.WFWorkflowActions.map((a,i) => { gIndex = i; let out = []; let param = mapNullUndef(a.WFWorkflowActionParameters, {}); let name = a.WFWorkflowActionIdentifier; let id = idDict[name]; let loop = false; let flow = 0; let adict = {}; if (id) { if (id.length > 1) { loop = true; flow = param.WFControlFlowMode; if (flow) { out.push('</div>'); indent--; } else { loopindex.unshift(i); } } adict = id[flow]; name = adict.name; if (loop && flow && (l0 = loopindex[0])<i-10) { name += `&#12288;▵<span class="magic" onclick="magictap(${l0})">${l0}</span>`; } if (a.WFWorkflowActionIdentifier === 'is.workflow.actions.conditional' && Number.isInteger(param.WFCondition)) { let cond = param.WFCondition.toString(); delete param.WFCondition; ignore.forEach(k => { delete param.k; }); let postfix = `<span class="box">${condDict[cond]}</span>`; if (cond !== '100' && cond !== '101' && cond !== '1002') { let paramk = Object.keys(param); if (cond === '1003') { let m = [['WFNumberValue','WFAnotherNumber'],['WFDate','WFAnotherDate'],['WFDuration','WFAnotherDuration'],['WFMeasurement','WFAnotherMeasurement']].filter(c => paramk.includes(c[0]) && paramk.includes(c[1])); if (m.length == 1) { postfix += ` <span class="box">${gettext(param[m[0][0]])}</span> and <span class="box">${gettext(param[m[0][1]])}</span>`; delete param[m[0][0]]; delete param[m[0][1]]; } } else { let isbool = cond === '4' && param.WFInput && param.WFInput.Variable && param.WFInput.Variable.Value && (b = param.WFInput.Variable.Value.Aggrandizements) && (b[0].CoercionItemClass === 'WFBooleanContentItem' || b.length > 1 && ['Is Me','Is a Screenshot','Is Hidden','Is Favorite','Is Explicit','Is Cloud Item','Has Album Artwork', 'Streamable','Is Universal','Supports Game Center','Has Photo'].includes(b[1].PropertyName)); if (isbool) { postfix = 'is true'; } else { let m = ['WFConditionalActionString','WFNumberValue','WFMeasurement','WFDuration','WFDate','WFEnumeration'].filter(c => paramk.includes(c)); if (m.length == 1) { postfix += ` <span class="box">${gettext(param[m[0]])}</span>`; delete param[m[0]]; } } } } name = name.replace('$\ufffc1', postfix); } else if (a.WFWorkflowActionIdentifier === 'is.workflow.actions.getvalueforkey' && ['Value',undefined].includes(param.WFGetDictionaryValueType)) { name = name.replace('$\ufffc1', `Value for <span class="box">${gettext(param.WFDictionaryKey)}</span>`); delete param.WFDictionaryKey; } else if (a.WFWorkflowActionIdentifier === 'is.workflow.actions.getitemfromlist' && (s = param.WFItemSpecifier)) { if (s === 'Item At Index') { name = name.replace('$\ufffc1', `$\ufffc1 <span class="box">${mapNullUndef(gettext(param.WFItemIndex), '')}</span>`); delete param.WFItemIndex; } else if (s === 'Items in Range') { name = name.replace('$\ufffc1', `$\ufffc1 <span class="box">${mapNullUndef(gettext(param.WFItemRangeStart), '')}</span> to <span class="box">${mapNullUndef(gettext(param.WFItemRangeEnd), '')}</span>`); delete param.WFItemRangeStart; delete param.WFItemRangeEnd; } } } else if (['is.workflow.actions.useractivity.open', 'is.workflow.actions.sirikit.donation.handle'].includes(a.WFWorkflowActionIdentifier)) { let p = (a.WFWorkflowActionIdentifier === 'is.workflow.actions.useractivity.open') ? 'UserActivityData' : 'IntentData'; if (pl = param[p]) { if ((idx = pl.substring(0,100).indexOf('<')) > 0) { name = pl.substring(0,idx) + ` (${name})`; param[p] = pl.substring(idx); } } } if (!adict.param) { adict.param = {}; } let p = []; let isbig = false; for (const [k, v] of Object.entries(param)) { if (!ignore.includes(k)) { let pstr = k; if (k === 'WFInput') { if (name.includes('$\ufffc0')) { pstr = '$\ufffc0'; } } if (adict.param[k]) { pstr = adict.param[k]; } switch (pstr[0]) { case '$': if (pstr !== '$\ufffc9') { name = name.replace(pstr,`<span class="box">${gettext(v)}</span>`); } break; case '#': let t = gettext(v); if (mobile) { t = truncate(t, 1500, JSON.stringify(v).length); } else { isbig = t.length > 10000 || mapNullUndef(t.match(/\n/g), []).length > 80; } p.push(`\n\t\t<div class="col2">${t}</div>`); break; default: switch (pstr) { case 'CustomOutputName': name += ` <b>&#12288;➔ ${v}</b>`; break; default: pstr = k.replace(/^WF/,''); let t = gettext(v); if (t.length > 1000) { isbig = true; } p.push(`\n\t\t<div class="row"><div class="col1">${pstr}</div>\n\t\t\t<div class="col2">${t}</div></div>`); } } } } name = name.replace('$\ufffc9', m => { let d = {'key':'state', 'default':1, 'dict':{'0':'Off', '1':'On', 'false':'Off', 'true':'On'}, ...adict.param[m]}; let k = param[d.key]; if (name.substring(0,5) === 'Turn ' || ['turn','set',undefined].includes(param.operation)) { if (k == undefined) { return d.dict[d.default]; } return `<span class="box">${typeof(k)==='object'?gettext(k):d.dict[k]}</span>`; } if (k != undefined) { p.push(`\n\t\t<div class="row"><div class="col1">${d.key}</div>\n\t\t\t<div class="col2">${typeof(k)==='object'?gettext(k):d.dict[k]}</div></div>`); } return ''; }); for (let m of mapNullUndef(name.match(/\$\ufffc\d/g), [])) { let p = adict.param[m]; if (p == undefined) { name = name.replace(m, '<span class="box"></span>&nbsp;'); } else { name = name.replace(m, p); } } if (p.length || loop && flow != 2) { out.push(`\n<button class="button ${id ? mapNullUndef(adict.group, '') : 'gUnknown'}${loop?' nonbottom'+(flow>0?' nontop':''):''}${indent?' inside':''}${isbig?' closed':''}" id="m${i}">\n${i} ${name}</button> <div class="content${loop?' contentloop'+(indent&1?' dashed':''):''}${indent?' inside':''}${a.WFWorkflowActionIdentifier==='is.workflow.actions.comment'?' commentcontent':''}"${isbig?' style="display:none"':''}>`); out = out.concat(p); if (!loop || flow == 2) { out.push('</div>'); } else { indent++; } } else { out.push(`\n<button class="${id ? mapNullUndef(adict.group, '') : 'gUnknown'}${loop&&flow>0?' nontop':''}${indent?' inside':''}" id="m${i}">\n${i} ${name}</button>`); } if (loop && flow) { if (flow == 1) { loopindex[0] = i; } else { loopindex.shift(); } } return out.join('').replaceAll(`"magic" onclick="magictap(${i-1})"`, '"var"'); }).map((t,i) => { if (gVarDict[i]) { let d = [...new Set(gVarDict[i])]; if (d.length == 1 && d[0] == i+1) { return t.replace('</button>', `&#12288;&#187;</button>`); } else { let l = d.map(a => (a == i+1) ? `<i>${a}</i>` : `<span class="magic" onclick="magictap(${a})">${a}</span>`).join(' '); return t.replace('</button>', `&#12288;&#187; ${l}</button>`); } } return t; }).join('').replace(/(<button class=")button (gLoop nonbottom(?: nontop)?)(?: closed)?((?:(?!<button).)+?)<div class="content contentloop[^>]+><\/div>/gs,'$1$2$3'); delete d.WFWorkflowActions; let paramstr = JSON.stringify(Object.keys(d).sort().reduce((o,k)=>(o[k]=d[k],o),{}),null,3).replace(/^\{\n|^\}$|^ /gm, ''); paramstr = paramstr.replace(/"ActionIndex": (\d+)/g, '"ActionIndex": <span class="magic" onclick="magictap($1)"><b>$1</b></span>'); /* let params = `<button class="button gParams closed">${shortcutname}</button> <div class="content" style="display:none"><div class="col2">${paramstr}</div></div> `; */ let params = `<button class="button gParams">${shortcutname}</button> <div class="content"><div class="col2">${paramstr}</div></div> `; document.write(encodeURIComponent(params+output)); function gettext(i) { switch (typeof(i)) { case 'object': if (Array.isArray(i)) { return ('[' + i.map(a => gettext(a)).join(',\n') + ']').replace(/<span class=\\"[^>]+>/g, m => m.replace(/\\"/g,'"')); } else { if (i.Type) { if (i.Type === 'Variable') { i = i.Variable; } else { return '?type?'+i.Type; } } if (Number.isInteger(i.WFItemType)) { return stringifyMap(getvalue(i)).replace(/( +|^)\{\n +/g,'$1{ ').replace(/( *)(\{.*)\n\1\}/g,'$1$2 }'); } let t = mapNullUndef(i.WFSerializationType, ''); switch (t) { case 'WFTextTokenAttachment': return variablename(i.Value); case 'WFTextTokenString': return stringify(i.Value); case 'WFDictionaryFieldValue': return stringifyMap(getdict(i.Value)).replace(/<span class=\\"[^>]+>/g, m => m.replace(/\\"/g,'"')).replace(/( +|^)\{\n +/g,'$1{ ').replace(/( *)(\{.*)\n\1\}/g,'$1$2 }'); case 'WFQuantityFieldValue': return variablename(mapNullUndef(i.Value.Magnitude, '')) + ' ' + i.Value.Unit; case 'WFContentPredicateTableTemplate': return predicate(i.Value); case 'WFINSpeakableStringSubstitutableState': return i.Value ? i.Value.DisplayString.replace(/&/g,'&amp;').replace(/</g,'&lt;') : ''; case 'WFContactFieldValue': return '[' + (mapNullUndef(i.Value.WFContactFieldValues, [])).map(a => JSON.stringify(a).replace(/\{"__type__":"data","__value__":"([^"]*)"/g, (m,p1) => '"'+(new TextDecoder().decode(base64DecToArr(p1))).replace(/\n/g,'\n ')+'"')).join(',\n') + ']'; default: if (i.string) { return stringify(i); } if (i['__type__'] === 'date') { return new Date(1000*i['__value__']).toLocaleString(); } return JSON.stringify(i,null,3).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/\\n/g,'\n').replace(/\\t/g,'\t').replace(/( +|^)\{\n +/g,'$1{ ').replace(/( *)(\{.*)\n\1\}/g,'$1$2 }'); } } case 'string': return i.replace(/&/g,'&amp;').replace(/</g,'&lt;'); default: return i; } } function b64ToUint6(nChr) { return nChr > 64 && nChr < 91 ? nChr - 65 : nChr > 96 && nChr < 123 ? nChr - 71 : nChr > 47 && nChr < 58 ? nChr + 4 : nChr === 43 ? 62 : nChr === 47 ? 63 : 0; } function base64DecToArr(sBase64) { let sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length, nOutLen = nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen); for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) { nMod4 = nInIdx & 3; nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 6 * (3 - nMod4); if (nMod4 === 3 || nInLen - nInIdx === 1) { for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255; } nUint24 = 0; } } return taBytes; } function truncate(str, max, vsize) { let m = str.match(/<span.+?<\/span>/g); let n1 = 0; let s = str; if (m) { n1 = m.length; s = s.replace(/<span.+?<\/span>/g, '\ufffc'); } if (s.length > max) { str = s.substring(0, max - 20); str += vsize ? `\n<b><i>(${vsize.toString().slice(0,-3)} kbytes; content truncated)</i></b>` : ' <b><i>(truncated)</i></b>'; if (m) { let n2 = mapNullUndef(str.match(/\ufffc/g), []).length; for (i=0; i<n2; i++) { str = str.replace('\ufffc', m[i]); } if (n1 > n2) { str += `${vsize?'\n':''}…… ${m.slice(n2).join(', ')}`; } } } return str; } function predicate(v) { let filters = v.WFActionParameterFilterTemplates; let out = filters.length>1 ? `• ${v.WFActionParameterFilterPrefix==0 ?'Any of':'All'} the following are true\n` : ''; out += filters.map(f => { let p = mapNullUndef(f.Property, ''); if (p.includes('Date') || p === 'Birthday') { return filtertext(f, {'type':'Date'}); } if (p.substring(0,3) === 'Is ' || p.substring(0,4) === 'Has ') { return filtertext(f, {'type':'Bool'}); } let d = {'type':'String'}; if (p !== 'Album' || !f.Values.String) { return filtertext(f, mapNullUndef(filterDict[p], d)); } return filtertext(f, d); }).join('\n'); return out; } function filtertext(f, d) { let p = mapNullUndef(f.Property, '?prop?'); let v = f.Values; let t = d.type; let o = mapNullUndef(condDict[f.Operator.toString()], '?op?'); let out = p + ' ' + o + ' '; switch (t) { case 'Bool': return v.Bool ? p : p.replace(' ', ' Not '); case 'Enumeration': return out + (mapNullUndef(v.Enumeration ? gettext(v.Enumeration.Value) : v.Enumeration, mapNullUndef(d.default, '(default)'))); case 'Date': if (f.Operator == 1002) { return out; } if (f.Operator == 1003) { return out + gettext(mapNullUndef(v.Date, '(now)')) + ' and ' + gettext(mapNullUndef(v.AnotherDate, '(now)')); } if (f.Operator > 999) { t = 'Number'; d = {'unit':'Unit'}; } else if ([null, undefined].includes(v.Date)) { v.Date = '(now)'; } default: out += gettext(mapNullUndef(v[t], mapNullUndef(v.Number, JSON.stringify(v)))); if (u=d.unit) { let unitv = mapNullUndef(v[u], ((p === 'Duration') ? 32 : 4)); return out + ' ' + unitDict[u][unitv.toString()]; } return out; } } function variablename(v) { if (typeof(v) !== 'object') { return JSON.stringify(v).replace(/&/g,'&amp;').replace(/</g,'&lt;'); } let t = mapNullUndef(v.Type, ''); switch (t) { case 'Variable': return '<span class="var"><b>['+v.VariableName + aggr(v); case 'ActionOutput': if ((u = v.OutputUUID) && Number.isInteger(i=udict[u])) { if (gVarDict[i]) { gVarDict[i].push(gIndex); } else { gVarDict[i] = [gIndex]; } return `<span class="magic" onclick="magictap(${i})"><b>[${i} ` + v.OutputName + aggr(v); } return '<span class="var"><b>[' + v.OutputName + aggr(v); default: return '<span class="var"><b>[' + t.replace('ExtensionInput', 'Shortcut Input') + aggr(v); } } function stringify(o) { let out = o.string.replace(/&/g,'&amp;').replace(/</g,'&lt;'); if (o.attachmentsByRange) { Object.entries(o.attachmentsByRange) .sort((a,b) => parseInt(a[0].substring(1)) - parseInt(b[0].substring(1))) .forEach(a => { out = out.replace('\ufffc', variablename(a[1])); }); } return out; } function aggr(o) { let out = ''; for (let a of mapNullUndef(o.Aggrandizements, [])) { switch (a.Type) { case 'WFCoercionVariableAggrandizement': let c = a.CoercionItemClass; out += ' as ' + c.slice(2, -11).replace('String', 'Text').replace('Workflow', 'Shortcut'); break; case 'WFDictionaryValueVariableAggrandizement': out += `.${a.DictionaryKey}`; break; case 'WFPropertyVariableAggrandizement': out += '’s ' + (mapNullUndef(a.NegativePropertyName, a.PropertyName)); break; default: delete a.Type; out += JSON.stringify(a).replace('WFDateFormatStyle','Date Style').replace('WFTimeFormatStyle','Time Style').replace('WFRelativeDateFormatStyle','Relative Style'); } } return (out === '') ? `]</b></span>` : `</b>${out}<b>]</b></span>`; } function getdict(dict) { const out = new Map(); for (const d of dict.WFDictionaryFieldValueItems) { let v = getvalue(d); out.set(stringify(d.WFKey.Value), (mobile && typeof(v) === 'string') ? truncate(v, 150) : v); } return out; } function getvalue(d) { if (typeof d !== 'object') { return d.replace(/&/g,'&amp;').replace(/</g,'&lt;'); } if (d.WFValue == null) return null; let v = d.WFValue.Value; switch (d.WFItemType) { case 0: return stringify(v); case 1: return getdict(v.Value); case 2: return v.map(getvalue); case 3: return v.attachmentsByRange ? stringify(v) + '<i> as Number</i>': Number(v.string); case 4: return v.Value ? variablename(v.Value) + '<i> as Boolean</i>' : v; case 5: return variablename(v.Value); } } function stringifyMap(o) { let px = ' '; if (typeof o === 'object') { if (Array.isArray(o)) return o.length ? '[\n'+ px + o.map(a=>stringifyMap(a)).join(',\n').replace(/\n/g,'\n'+px) + '\n]' : '[]'; return (oo=Array.from(o.entries())).length ? '{\n' + px + oo.map(a=>stringifyMap(a[0])+': '+stringifyMap(a[1])).join(',\n').replace(/\n/g,'\n'+px) + '\n' + '}' : '{}'; } return JSON.stringify({a:o}).slice(5,-1); }
URL
data:text/html;charset=utf-8,<script>const mobile=false;const shortcutname=
Dictionary
.name;const d=
src
;
Text
</script>
SCRIPTING
Get file of type
com.apple.webarchive
from
URL
SCRIPTING
URL
Decode
File of Type
TEXT
<!DOCTYPE html><html><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <meta name="format-detection" content="telephone=no,date=no"> <title>
shortcutname
</title> <style> body { font-family: system-ui; margin-top: 1rem; margin-bottom: calc(1rem + env(safe-area-inset-bottom)); word-break: break-word; } button { color: #000; background-color: #e4e4ff; width: 100%; font-size: 1em; font-weight: normal; line-height: 1.8; text-align: left; padding: 3px 10px; margin: 5px 0; border: 1px #aaa; border-style: solid; border-radius: 8px; cursor: initial; touch-action: manipulation; } .button { margin-bottom: 0; border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; cursor: auto; } .button::after { content: '\25A1'; float: right; font-weight: bold; margin-left: 10px; } .closed { margin-bottom: 5px; border-bottom-style: solid; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } .closed::after { content: '\2212'; } .nonbottom { margin-bottom: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-style: none; } .nontop { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; } .gLoop { background-color: #e0e0e0; } .gScripting { background-color: #ddffdd; } .gDocuments { background-color: #ffeebb; } .gVariable { background-color: #ffddcc; } .gUnknown { background-color: #bbffff; } .gParams { text-align: center; background-color: #f8f8f8; } .content { overflow: hidden; padding: 5px 0 5px 10px; margin-bottom: 5px; border: 1px #aaa; border-style: none solid solid solid; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } .contentloop { padding-top: 5px; margin-bottom: 0; border-bottom-style: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .dashed { border-left-style: dashed; } .inside { border-right-style: none; border-top-right-radius: 0; border-bottom-right-radius: 0; } .commentcontent { background-color: #fff8dd; } .row { display: flex; } .col1 { padding-right: 5px; margin-right: 5px; border-right-style: double; } .col2 { white-space: pre-wrap; } span.box { display: inline; padding: 3px 5px; margin: 0 2px; border-radius: 8px; background-color: #fff; } span.var { font-style: italic; } span.magic { cursor: pointer; font-style: italic; text-decoration: underline; } @media (prefers-color-scheme: dark) { body { background: #000; color: #eee; } button { background: #404060; color: #eee; } .gLoop { background-color: #404040; } .gScripting { background-color: #305030; } .gDocuments { background-color: #505020; } .gVariable { background-color: #503030; } .gUnknown { background-color: #205050; } .gParams { background-color: #181818; } .commentcontent { background-color: #505020; } span.box { background-color: #000; } } </style></head><body>
URL Encoded Text
<script> for (b of document.getElementsByClassName('button')) { b.addEventListener('click', function() { this.classList.toggle('closed'); let s = this.nextElementSibling; s.style.display = getComputedStyle(s).display==='none' ? 'block' : 'none'; })} function magictap(id) { event.stopPropagation(); let e = document.getElementById('m'+id); let p = e; while ((p = p.parentNode).tagName.toLowerCase() === 'div') { p.style.display = 'block'; p.previousElementSibling.classList.remove('closed'); } setTimeout(function(){ e.scrollIntoView({block:'nearest',behavior:'smooth'}); }, 10); } </script></body></html>
Under Construction
VARIABLES
Set variable
reponame
to
Transformed Text
SCRIPTING
Set name of
Text
to
Transformed Text
.html
VARIABLES
Add
Renamed Item
to
output
SCRIPTING
Get
First Item
from
output
Under Construction
SCRIPTING
Get
Item At Index
2
from
output
Under Construction
SCRIPTING
Get
Last Item
from
output
Under Construction
End Repeat
NOTHING
Nothing

Showcuts

Magic Vars

Screenshot

Submitted by NeoYokel 2 years ago

This is an old shortcut, so some variables might be missing!

Visit iCloud (iOS)

Copy iCloud Link

Scan QR Code

1