COMMENT
This shortcut allows to add device frames to screenshots. Additional frames can be added manually to the iCloud folder, and managed from this shortcut without any modifications to it. Initially it offers a set of iPhone 13 portrait frames (all models and colors, updated 2021-09-24).
The shortcut also generating landscape frames from existing portrait ones. — @atnbueno (2020-12-28)
DICTIONARY

Dictionary
VARIABLES
Set variable
Shortcut
to
Dictionary
SCRIPTING
If
Shortcut Input
contains
"Frames":
URL
data:text/html;charset=utf-8,<pre><script>with(JSON){let dict=parse(`
Shortcut Input
`),keys=[];stringify(dict,(key,value)=>{keys.push(key);return value});document.write(stringify(dict,keys.sort(),4))}</script></pre>

URL
SCRIPTING
Get file of type
com.apple.webarchive
from
URL

File of Type
VARIABLES
Set variable
Configuration
to
File of Type
SCRIPTING
Set name of
Configuration
to
Shortcut

Renamed Item
DOCUMENTS
Save
Renamed Item
Destination Path
[{'value': '/Shortcuts/', 'class': 'text'}, {'class': 'magic', 'value': 'Shortcut', 'glyph': 'assets/cat/Variable.svg', 'UUID': ''}]Overwrite If File Exists

Saved File
MISSING
output Under Construction
SCRIPTING
End If

If Result
SCRIPTING
If
Shortcut Input
is
Download Default Frames
DOCUMENTS

File
SCRIPTING
If
File
does not have any value
DOCUMENTS
Create Folder
Path
[{'value': '/Shortcuts/', 'class': 'text'}, {'class': 'magic', 'value': 'Shortcut', 'glyph': 'assets/cat/Variable.svg', 'UUID': ''}]
SCRIPTING
End If

If Result
NETWORK
Get contents of
Shortcut
Options Under Construction

Contents of URL
DOCUMENTS
Extract
Contents of URL

Files
DOCUMENTS
Save
Files
Destination Path
[{'value': '/Shortcuts/', 'class': 'text'}, {'class': 'magic', 'value': 'Shortcut', 'glyph': 'assets/cat/Variable.svg', 'UUID': ''}]Overwrite If File Exists

Saved File
SCRIPTING
Count
Items
in
Saved File

Count
SCRIPTING
Repeat with each item in
Saved File

Repeat Results
TEXT
Repeat Item

Text
SCRIPTING
End Repeat

Repeat Results
MISSING
output Under Construction
SCRIPTING
End If

If Result
SCRIPTING
If
Shortcut Input
is
Scan Frames Folder
DOCUMENTS
Get File
File Path
/Shortcuts/example.txt

File
SCRIPTING
If
File
has any value
SCRIPTING
Get dictionary from
File

Dictionary
SCRIPTING
Otherwise
DICTIONARY

Dictionary
SCRIPTING
End If

If Result
VARIABLES
Set variable
Configuration
to
If Result
DOCUMENTS
Get File
File Path
/Shortcuts/example.txt

File
MISSING
file.getfoldercontents Under Construction
FILES
Filter
Contenido de la carpeta
where
All the following are true [{'class': 'filter-property', 'value': 'File Extension'}, {'class': 'filter-operator', 'value': 'is'}, {'class': 'filter-benchmark', 'value': 'png'}] [{'class': 'filter-property', 'value': 'Name'}, {'class': 'filter-operator', 'value': 'contains'}, {'class': 'filter-benchmark', 'value': 'x'}] [{'class': 'filter-property', 'value': 'Name'}, {'class': 'filter-operator', 'value': 'contains'}, {'class': 'filter-benchmark', 'value': '+'}] [{'class': 'filter-property', 'value': 'Name'}, {'class': 'filter-operator', 'value': 'contains'}, {'class': 'filter-benchmark', 'value': ' '}]

Files
SCRIPTING
If
Archivos
has any value
SCRIPTING
Set
Frames
to
Archivos
in
Dictionary

Dictionary
SCRIPTING
Otherwise
SCRIPTING
TEXT
Download Default Frames

Text
SHORTCUTS
Run
Shortcut

Shortcut Result
SCRIPTING
Set
Frames
to
Shortcut Result
in
Dictionary

Dictionary
SCRIPTING
End If

If Result
VARIABLES
Set variable
Configuration
to
If Result
SCRIPTING
Repeat with each item in
Configuration

Repeat Results
DOCUMENTS
Get File
File Path
/Shortcuts/example.txt

File
SCRIPTING
If
File
does not contain
~

Updated Text
SCRIPTING
Otherwise

Updated Text
SCRIPTING
End If

If Result
SCRIPTING
End Repeat

Repeat Results
TEXT
Combine
Repeat Results
with
Custom
,

Combined Text
TEXT
{
Combined Text
}

Text
SCRIPTING
Get dictionary from
Text

Dictionary
SCRIPTING
Set
Frames
to
Dictionary
in
Dictionary

Dictionary
VARIABLES
Set variable
Configuration
to
Dictionary
SCRIPTING
Get
All Keys
in
Configuration

Dictionary Value
SCRIPTING
Repeat with each item in
Dictionary Value

Repeat Results
DOCUMENTS
Replace
[~+].+
with
World
in
Repeat Item

Updated Text
TEXT
"
Repeat Item
":"
Updated Text
"

Text
SCRIPTING
End Repeat

Repeat Results
TEXT
Combine
Repeat Results
with
Custom
,

Combined Text
TEXT
{
Combined Text
}

Text
SCRIPTING
Get dictionary from
Text

Dictionary
SCRIPTING
Set
Sizes
to
Dictionary
in
Dictionary

Dictionary
SHORTCUTS
Run
Shortcut

Shortcut Result
SCRIPTING
Get dictionary from
Shortcut Result

Dictionary
VARIABLES
Set variable
Configuration
to
Dictionary
SCRIPTING
Get
All Keys
in
Configuration

Dictionary Value
SCRIPTING
Count
Items
in
Dictionary Value

Count
VARIABLES
Set variable
Frame Count
to
Count
SCRIPTING
Get
All Keys
in
Configuration

Dictionary Value
SCRIPTING
Count
Items
in
Dictionary Value

Count
VARIABLES
Set variable
Size Count
to
Count
SCRIPTING
Show alert
Informational Message
MISSING
output Under Construction
SCRIPTING
End If

If Result
SCRIPTING
If
Shortcut Input
contains
"queue":
DOCUMENTS
Get File
File Path
/Shortcuts/example.txt

File
SCRIPTING
If
File
does not have any value
SCRIPTING
Show alert
Facebook Devices.zip not found
Title
Facebook Devices.zip not found
DOCUMENTS

File
DOCUMENTS

File
SCRIPTING
If
File
does not have any value
DOCUMENTS
SCRIPTING
End If

If Result
NOTIFICATIONS
Show notification
Input
Options Under Construction
URL
https://design.facebook.com/toolsandresources/devices/

URL
NETWORK
Get contents of
URL
Options Under Construction

Contents of URL
DOCUMENTS
Make Markdown from
Contents of URL

Markdown from Rich Text
WEB
Get URLs from
Markdown from Rich Text

URLs
FILES
Filter
URLs
where
[{'class': 'filter-property', 'value': 'Name'}, {'class': 'filter-operator', 'value': 'contains'}, {'class': 'filter-benchmark', 'value': 'zip'}] Get 1 File



Files
DOCUMENTS
Replace
&
with
&
in
Files

Updated Text
NETWORK
Get contents of
Updated Text
Options Under Construction

Contents of URL
SCRIPTING
Set name of
Contents of URL
to
Facebook Devices.zip

Renamed Item
DOCUMENTS
Save
Renamed Item
Destination Path
[{'value': '/Shortcuts/', 'class': 'text'}, {'class': 'magic', 'value': 'Shortcut', 'glyph': 'assets/cat/Variable.svg', 'UUID': ''}, {'value': '/cache/', 'class': 'text'}]Overwrite If File Exists

Saved File
SCRIPTING
Otherwise
FILES
Filter
File
Get 1 File



Files