Использование Scriptable и Siri для получения текущих условий серфинга

Когда я наткнулся на Scriptable, я был рад писать сценарии автоматизации на JavaScript для iPhone. Эти сценарии можно запускать из приложения или экспортировать как Ярлыки Siri. Это позволяет нам использовать голос для их выполнения, произнося волшебную фразу, за которой следует название ярлыка.

Как серфинг?

Я создал ярлык How’s the Surf?, который сообщает о течении, высоте прибоя и погоде в Pacifica, CA, популярном месте для серфинга в Bay Area.

Ярлык работает с помощью файла JavaScript в Scriptable, который анализирует данные просмотра и передает ответ Siri.

Данные и скрипт

Чтобы получить данные о серфинге, я просматриваю URL-адрес отчета о серфинге Pacifica на сайте Surfline. Используя JavaScript, я нацелен на элементы с информацией surf height и weather, извлекаю innerText и генерирую строку response. Затем он передается в качестве аргумента speak() методу объекта Speech Scriptable. Это то, что Siri использует в качестве ответа при вызове ярлыка.

Вот файл сценария:

Создание ярлыков

В меню Settings можно попасть из верхнего левого угла окна сценария.

Он предлагает несколько вариантов, в том числе изменение имени, значка и создание ярлыков Siri.

Проблемы

  • Анализ HTML-кода Surfline для выбора данных является хакерским и ненадежным, поскольку они могут сломать наш скрипт, изменив URL-адрес своего веб-сайта или структуру DOM.
  • Скрипт также довольно медленный из-за количества требуемых вычислений.

Лучшее решение

Мы можем использовать API, предоставляемые Spitcast и Magicseaweed, чтобы получить только высоту серфинга и погоду в формате JSON. Surfline также имеет services конечную точку, которая является общедоступной и предоставляет эту информацию.

https://services.surfline.com/kbyg/spots/forecasts/{type}?{params}

Более подробная информация о различных API содержится в отличном репозитории Штефана Вробеля на GitHub.

Я обновил свой скрипт с помощью API сервисов Surfline и увидел резкое улучшение производительности ярлыка. В отличие от предыдущего сценария синтаксического анализа, на ответ которого Siri требовалось в среднем пять секунд, новый сценарий завершается за секунду!

Несколько замечаний:

  • API Surfline официально не поддерживается, поэтому документации нет, а схема URL API может измениться в будущем.
  • Я использую элементарные методы для расчета высоты серфинга и данных о погоде, которые не так точны, как на сайте Surfline.

Сценарий прочь!

Я надеюсь, что эта статья вдохновит других на написание сценариев для iOS с использованием возможностей JavaScript. Хотел бы услышать от вас все о ваших проектах автоматизации.