Макросы рабочего процесса состоят из частей, называемых Действия. В основном это два вида действий — однонаправленные или сквозные. Первый пример — это действие «Число», которое разрешает только поток вывода (обычно для выполнения каких-либо вычислений или установки переменной), и даже если вы создадите для него некоторый ввод, это не будет иметь никакого эффекта. Последний может принимать ввод и производить вывод, ярким примером здесь является действие "Объединить изображения" — оно примет на вход несколько изображений и в результате выдаст комбинированное изображение.
Что замечательно в этом подходе, так это то, что все действия очень умны. Для каждого входного элемента каждое действие создает виртуальный граф, который соединяет вместе разные типы данных. Чтобы немного прояснить ситуацию, представьте, что мы хотим преобразовать изображение в текст — как это возможно? Все просто — в ответ мы получили его URL. Если мы добавим несколько строк текста в переменную, они будут рассматриваться как элементы «списка» (это обозначение рабочего процесса для массива) и т. д. позволяет нам выполнять очень разносторонние операции.

Как получить данные от Нетфликс

Чтобы избежать ненужного парсинга, я использовал API UnoGS — это неофициальный шлюз ко всем интересным данным Netflix, который обновляется ежедневно. Когда в Workflow в версии 1.7 была добавлена ​​поддержка методов POST и GET для любого URL-адреса, доступ ко всем видам REST API наконец-то стал возможным. Итак, что мы делаем, так это выполняем запрос к правильному URL-адресу API и получаем объект JSON (к счастью, он интерпретируется Workflow как «словарь») и сохраняем его как переменную. Первая проблема, с которой я столкнулся здесь, это то, что двумерный массив не поддерживается в Workflow, и вместо этого я получил один большой список элементов. Поскольку в объекте ответа ровно 13 элементов, это число, на которое нам нужно сдвинуть индекс.

Как вы можете видеть на картинке выше, процедура получения всех изображений выглядит следующим образом:
* Получить элемент из списка по индексу 3
* Получить объект URL из строки
* Получить изображение из URL-адрес -> он загружает изображение в память
* Добавляет его к переменной -> мы по сути создаем здесь массив объектов изображения для дальнейшего использования.
* Индекс сдвига 13 мест
* Повторяем процесс

Теперь у нас есть две возможности: либо автоматическое создание сетки, либо небольшое прикосновение к процессу вручную.

Вариант № 1 — Использование автоматической сетки

Встроенное действие «Объединить изображения» удивительно умно и может работать в режиме сетки с заданным пользователем параметром «интервал».

И результат операции:

Вариант № 2 — ручная сетка

На мгновение это было немного сложно, но будет проще, если вы посчитаете в уме и решите, сколько рядов вам нужно для создания прямоугольного покрытия. Выполнение быстрых математических вычислений приводит к формуле:
NumberOfImages/NumberOfRows= RoundUp(NumberOfPicsInRow)
В этот раз ситуация сложнее, потому что нам нужно сдвинуть два индекса, которые отмечают начало и конец диапазона. .

Вышеприведенный макрос делает несколько вещей:
* получает количество изображений из списка
* увеличивает оба индекса на число, соответствующее количеству изображений в строке
* добавляет результирующее изображение в переменную 'Rowgrid' который хранит ряды постеров
* Чтобы избежать ошибки "индекс за пределами границ", мы проверяем, превышает ли конечный индекс количество изображений.
Поэтому мы допускаем ситуацию, когда последний ряд может быть не полностью заполнен плакатами.

Стоит отметить, что мы так и не получили нашу обложку, только набор изображений. К счастью, нет необходимости повторять действие, потому что, если поставить "Объединить изображения" сразу после "Получить переменную — Rowgrid", можно объединить каждый элемент в красивую обложку. Результат виден ниже:

Вывод

Принятие этого вызова было для меня большим удовольствием, и я многому научился. Как видите, Workflow — превосходное приложение, которое может упростить утомительную работу. Хотя такая задача требует большого количества возни и подвижных действий, потому что Workflow по-прежнему не имеет хорошего механизма для отладки, после его настройки он работает как шарм. Ясно видно, что даже Apple признала мощь этого приложения по его недавнему приобретению. Будущее Workflow сейчас как минимум неопределенно, но пока оно все еще работает, и я призываю всех попробовать такое графическое программирование.

Получить рабочий процесс (iOS) (бесплатно)