Created
September 23, 2018 13:36
-
-
Save arturgrigor/dac8607f1d306401437068cc2f8ffafa to your computer and use it in GitHub Desktop.
Shows the latest Monkey User comic in Siri using Scriptable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Variables used by Scriptable. | |
// These must be at the very top of the file. Do not edit. | |
// icon-color: teal; icon-glyph: magic; | |
// Loads the latest Monkey User comic and shows it. | |
let rssTag = "rss" | |
let channelTag = "channel" | |
let itemTag = "item" | |
let titleTag = "title" | |
let descriptionTag = "description" | |
let url = "http://monkeyuser.com/feed.xml" | |
let req = new Request(url) | |
let xml = await req.loadString() | |
let parser = new XMLParser(xml) | |
var isRSSTagOpen = false | |
var isChannelTagOpen = false | |
var isItemTagOpen = false | |
var isTitleTagOpen = false | |
var isDescriptionTagOpen = false | |
var titleDetected = false | |
var descriptionDetected = false | |
var title = "" | |
var description = "" | |
parser.didStartElement = function(str) { | |
switch (str) { | |
case rssTag: | |
isRSSTagOpen = true | |
break | |
case channelTag: | |
isChannelTagOpen = true | |
break | |
case itemTag: | |
isItemTagOpen = true | |
break | |
case titleTag: | |
isTitleTagOpen = true | |
break | |
case descriptionTag: | |
isDescriptionTagOpen = true | |
break | |
} | |
} | |
parser.didEndElement = function(str) { | |
switch (str) { | |
case rssTag: | |
isRSSTagOpen = false | |
break | |
case channelTag: | |
isChannelTagOpen = false | |
break | |
case itemTag: | |
isItemTagOpen = false | |
break | |
case titleTag: | |
isTitleTagOpen = false | |
titleDetected = true | |
break | |
case descriptionTag: | |
isDescriptionTagOpen = false | |
descriptionDetected = true | |
break | |
} | |
} | |
parser.foundCharacters = function (str) { | |
if (titleDetected && descriptionDetected) { return } | |
if (isRSSTagOpen && isChannelTagOpen && isItemTagOpen && isTitleTagOpen) { | |
title += str | |
} else if (isRSSTagOpen && isChannelTagOpen && isItemTagOpen && isDescriptionTagOpen) { | |
description += str | |
} | |
} | |
parser.parse() | |
console.log(title) | |
console.log(description) | |
let matches = description.match(/src="([^"]*)"/) | |
url = matches[1] | |
console.log(url) | |
req = new Request(url) | |
let img = await req.loadImage() | |
QuickLook.present(img) | |
if (config.runsWithSiri) { | |
Speech.speak(title) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment