Skip to content

Instantly share code, notes, and snippets.

View simonbs's full-sized avatar
🐼

Simon B. Støvring simonbs

🐼
View GitHub Profile
@simonbs
simonbs / Import Shortcut Links.js
Created September 21, 2019 11:37
Reads a text file containing iCloud links to shortcuts and imports the shortcuts into the Shortcuts app
@simonbs
simonbs / XKCD.js
Created September 29, 2019 19:03
Scriptable script that shows today's XKCD in Siri.
let url = "https://xkcd.com/info.0.json"
let req = new Request(url)
let json = await req.loadJSON()
let imgURL = json["img"]
alt = json["alt"]
req = new Request(imgURL)
let img = await req.loadImage()
QuickLook.present(img)
if (config.runsWithSiri) {
Speech.speak(alt)
@simonbs
simonbs / Import Contacts From Slack.js
Last active September 29, 2019 19:14
Scriptable script to import contacts from Slack.
// In order to use the script, you must create a Slack bot with the user:read scope and generate an accesss token.
// The script will prompt you to copy the access token in.
// The token is stored securely in the keychain.
let containers = await ContactsContainer.all()
let contacts = await Contact.all(containers)
let slackUsers = await loadSlackUsers()
slackUsers = slackUsers.filter(u => {
return !u["is_bot"]
&& !u["deleted"]
&& !u["is_restricted"]
@simonbs
simonbs / Snow Stats.js
Created January 2, 2020 11:02
Reads slope data from skeikampen.no
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: blue; icon-glyph: snowflake;
let html = await loadHTML()
let stickyItems = getStickyItems(html)
let liftCounts = getLiftCounts(stickyItems[1])
let slopeCounts = getSlopeCounts(stickyItems[2])
let snowDepth = getSnowDepth(stickyItems[3])
let windSpeed = getWindSpeed(stickyItems[4])
let tableTexts = [
@simonbs
simonbs / Slack Status.js
Last active November 23, 2021 02:37
Peforms OAuth flow against Slack and sets a Slack Status. Meant to be used with Shortcuts.
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: pink; icon-glyph: user;
// In order to use the script, you must create a Slack app and install it on your workspace. Go here to create your app: api.slack.com/apps
// There's two important configurations you must make to the app:
// 1. Add the users.profile:write scope to the app. This scope is necessary to set a Slack status.
// 2. Add the following redirect URL, so Slack will redirect to Scriptable after authorizing.
// https://open.scriptable.app
// Run the script to grant your newly created app authorization to access your Slack account. After you've done this, you can use the script in Shortcuts.
@simonbs
simonbs / Latest News on MacStories.js
Created August 15, 2020 06:07
Show latest news on MacStories in a widget.
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: red; icon-glyph: newspaper;
let items = await loadItems()
if (config.runsInWidget) {
let widget = createWidget(items)
Script.setWidget(widget)
Script.complete()
} else {
@simonbs
simonbs / Is Slack down?.js
Created September 3, 2020 04:56
Scriptable script to check if Slack is down. Works with Siri and widgets.
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: orange; icon-glyph: exclamation-triangle;
// Checks if Slack is down by examining their status page. Works perfectly with Siri.
let url = "https://status.slack.com"
let r = new Request(url)
if (config.runsWithSiri) {
let isDown = await getIsDown(url)
if (isDown) {
Speech.speak("Yes")
@simonbs
simonbs / Hi, Speed.js
Last active May 22, 2021 21:34
Greg Jowsiak's "Hi, Speed" widget recreated in Scriptable
// This script recreates Greg Joswiak's widget that counts down to the "Hi, Speed" Apple Event on October 13th, 2020.
// You can see Greg's widget in this tweet:
// https://twitter.com/gregjoz/status/1313519797879988225
//
// You'll need this image for the background:
// https://i.imgur.com/t9Jr8kL.png
//
// I've stored the image at imgs/hispeed.png Scriptable's folder in iCloud Drive.
let widget = createWidget()
@simonbs
simonbs / Animals of the Day.js
Created November 1, 2020 13:05
Shows an image of an animal
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: purple; icon-glyph: paw;
let pandaURL = "https://c402277.ssl.cf1.rackcdn.com/photos/7749/images/story_full_width/HI_204718.jpg?1414503137"
let slothURL = "https://c402277.ssl.cf1.rackcdn.com/photos/6518/images/story_full_width/iStock_000011145477Large_mini_%281%29.jpg?1394632882"
let redPandaURL = "https://c402277.ssl.cf1.rackcdn.com/photos/8036/images/story_full_width/WEB_279173.jpg?1418412345"
let pandaImg = await getImage(pandaURL)
let slothImg = await getImage(slothURL)
let redPandaImg = await getImage(redPandaURL)
@simonbs
simonbs / One More Thing.js
Last active February 17, 2024 11:04
Countdown to Apple's "One More Thing" event on November 10th, 2020
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: deep-purple; icon-glyph: apple-alt;
const TITLE = "One More Thing"
const DATE = "2020-11-10T17:00:00Z"
const IMG_URL = "https://i.ibb.co/f2SN2Wb/bg.png"
let widget = await createWidget()
if (config.runsInWidget) {
Script.setWidget(widget)