Having some fun with Scriptable + Disney World! 🤪

This is more for a “proof of concept” with Scriptable, but I’m so excited about this that I figured I’d post it for other’s inspiration. :blush: It’s amazing what you can accomplish with a web server and this app.

What’s this doing?

  • My server is pulling in attraction wait times & park schedules via public API and formatting into JSON
  • Scriptable is fetching the JSON, formatting the data into tables to display in Siri, and adding voice commands to trigger these scripts

Overall it was much simpler than I expected.

I would love to be able to format the data in more ways though, like CSS styling, but beggars can’t be choosers. :wink:

Unfortunately I can’t share the URL that this script is pulling from yet. I was discussing with the developer of the themeparks API library and he said that the URLs can change frequently and in fact, Disney is in process of updating theirs now. I’m not sure how long this will work.

I plan on updating this to the “official” library as soon as I can because I know I’m going to get a lot of use out of this. Once I do that then I’ll post these scripts and open up my server (since I doubt it’ll get that much traffic from this).

Anyway, I hope this provides some inspiration for others. :+1:t3:

9 Likes

Nice. I actually have a workflow that pulls the hours and wait times (may be using the same URLs)

3 Likes

Awesome. :tada: Yea, I’m using public URLs that you can see in the master branch for that themeparks repository. The maintainer just said that they’re “in process of changing”, so I hate to share something that might break soon.

But I have no clue what Disney has done, but their iOS app is slow and doesn’t seem to save my state at all, so every time I launch to see something it’s a 15 second process it feels like. :weary:

Is the output that Siri is showing a UITable, Quick Look, Safari or some over output format? Just curious. I would like display some data in a similar fashion.

It’s using a UITable with Quicklook.

I’m looping through the returned JSON and parsing it, like:

let table = new UITable()

let header = new UITableRow()
header.isHeader = true
header.addText("Date")
header.addText("Hours")
table.addRow(header)

for (item of items) {
  let row = new UITableRow()

  let date = item.date
  let dateCell = row.addText(date)
  dateCell.widthWeight = 50

  let opening = item.startTime
  let closing = item.endTime
  let timeCell = row.addText(opening + " – " + closing)
  timeCell.widthWeight = 50

  row.height = 30
  row.cellSpacing = 10

  table.addRow(row)
}

QuickLook.present(table)
3 Likes

Super cool! :smiley: Thank you for sharing the video.

1 Like

Sure enough, they’ve changed now. My operating hours shortcut still work, but my wait times does not anymore. Guess I’ll need to check out the Themeparks repository find where they keep there links and see how they’ve been updated

1 Like

Yea, I’ll likely work on updating mine before summer block dates are up, and I’ll re-post with better instructions. Thanks for the heads up. :blush: