FlipLink

Скриптинг FlipLink: передаём вывод CLI в jq

Пишешь скрипты для FlipLink CLI? Передавай вывод --json в jq, чтобы извлекать ID и ссылки, фильтровать, связывать команды и строить автоматизацию.

Sumit Ghugharwal
Sumit Ghugharwal

Опубликовано 21 июня 2026 г. · 6 min read

Поделиться статьёй:

По умолчанию FlipLink CLI выводит понятные человеку таблицы. Это удобно, когда ты работаешь в терминале — но как только нужно что-то заскриптовать, на первый план выходят сырые, машиночитаемые данные. Именно это и даёт флаг --json, а в паре с jq ты можешь извлекать ID, вытаскивать ссылки для шаринга, фильтровать по статусу и связывать команды в полноценную автоматизацию.

Этот гайд — про скриптинг FlipLink CLI: как превратить несколько команд в небольшой надёжный конвейер. Если ты только знакомишься с инструментом, начни с Начало работы с FlipLink CLI, а потом возвращайся сюда. Полный набор команд описан в документации CLI.

Один флаг, который делает скриптинг возможным: --json

Почти каждая команда чтения или записи принимает --json. Добавь его — и CLI выведет сырой JSON в стандартный вывод вместо отформатированной таблицы:

fliplink flipbook list --json

Передай это напрямую в jq — и сможешь перестроить данные как угодно. Самая важная привычка при скриптинге: сначала изучи сырой вывод, чтобы точно знать имена полей до того, как обращаться к ним.

# See the full shape of a single item — keys, casing, everything
fliplink flipbook list --json | jq '.[0]'

В примерах ниже используются правдоподобные имена полей вроде .ID и .URL, но никогда не считай их само собой разумеющимися — регистр в названиях полей может отличаться. Запусти команду выше один раз, прочитай ключи и подгони свои пути jq под то, что видишь на самом деле.

Извлекаем только ID

Классический первый шаг: получить плоский список ID флипбуков, по которому можно пройтись в цикле.

fliplink flipbook list --json | jq '.[].ID'

jq проходит по массиву (.[]) и вытаскивает поле ID из каждого элемента. Оберни поле в -r (сырой вывод), когда нужны чистые строки без окружающих кавычек — именно это требуется, когда ты передаёшь значения в другую команду:

fliplink flipbook list --json | jq -r '.[].ID'

Собираем ссылки для шаринга в чистый список

Тот же приём работает для любого поля. Если в элементах списка есть URL, ты можешь извлечь сразу все ссылки для шаринга:

fliplink flipbook list --json | jq -r '.[].URL'

Нужен отчёт из двух колонок — названия и ссылки? Сформируй строку с разделителями-табуляциями для каждого элемента через интерполяцию строк в jq:

fliplink flipbook list --json \
  | jq -r '.[] | "\(.Title)\t\(.URL)"'

И снова — сверь .Title и .URL со своим выводом --json, прежде чем им доверять. Если ключи отличаются, подставь правильные.

Фильтруем перед действием

select() в jq оставляет только те элементы, которые подходят под условие. Допустим, у каждого элемента есть флаг публикации, а тебе нужны только ID опубликованных флипбуков:

fliplink flipbook list --json \
  | jq -r '.[] | select(.IsPublished == true) | .ID'

Изучи свой вывод, чтобы узнать реальное имя флага и его тип — это может быть булево значение, строка или поле статуса. Подгони выражение select() соответственно. Шаблон остаётся прежним: фильтруем массив, затем берём нужное поле.

Связываем команды: список, фильтр, затем действие

Вот где это становится по-настоящему полезным. Передай отфильтрованные ID в цикл оболочки и выполни вторую команду для каждого из них. В этом примере находим каждый флипбук, который ещё не опубликован, и публикуем его:

fliplink flipbook list --json \
  | jq -r '.[] | select(.IsPublished == false) | .ID' \
  | while read -r id; do
      echo "Publishing $id..."
      fliplink flipbook publish "$id"
    done

Цикл while read -r id читает по одному ID на строку и вызывает fliplink flipbook publish для каждого. Поскольку jq -r убирает кавычки, $id — это чистое значение, готовое к передаче напрямую. Та же схема работает для любой команды действия — подставь set-expiry, share-link или delete.

Примечание: каждая показанная здесь команда — это реальная команда FlipLink CLI. Если тебе нужно действие, которого нет среди готовых команд, используй обходной путь fliplink api (например fliplink api PUT /api/set-skin/<id> --data '{"SkinName":"Modern"}') — под капотом работает тот же REST API.

🚀

Попробуйте FlipLink бесплатно

Преобразуйте PDF за секунды. Без регистрации и кредитной карты — просто загрузите файл.

Drop your PDF here or click to browse

Макс. 40 МБ

На платных тарифах от $39 лимит вырастает до 150 MB.

Строим небольшой отчёт

Когда ты умеешь извлекать и фильтровать, быстрый отчёт о статусе — это всего одно дополнительное выражение jq. Посчитаем общее число флипбуков и сколько из них опубликовано:

fliplink flipbook list --json | jq '{
  total: length,
  published: ([.[] | select(.IsPublished == true)] | length)
}'

Это выведет компактную JSON-сводку, которую можно записать в лог, отправить по почте или опубликовать в канале. Предпочитаешь строку для человека?

fliplink flipbook list --json \
  | jq -r '"Total: \(length) flipbooks"'

Пишем скрипты, которые знают, сработали они или нет

Конвейеру можно доверять, только если он реагирует на сбои. FlipLink CLI использует осмысленные коды выхода, так что твои скрипты могут ветвиться по ним:

  • 0 — успех
  • 1 — ошибка запроса или HTTP (сеть, неверный ключ, 401)
  • 2 — ошибка приложения (API вернул Result: ERROR)

Проверь код выхода после команды и обработай каждый случай:

fliplink flipbook publish "$id"
status=$?

if [ "$status" -eq 0 ]; then
  echo "Published $id"
elif [ "$status" -eq 2 ]; then
  echo "Application error publishing $id (check the response)" >&2
else
  echo "Request failed for $id (exit $status)" >&2
fi

Для скрипта с быстрым завершением добавь set -e в начало, чтобы весь запуск остановился на первой же ненулевой ошибке. Для устойчивого пакетного задания продолжай работу, но логируй сбои — ветвление по коду выхода выше как раз и помогает отличить “готово” от “готово с ошибками”.

Если ты пишешь скрипты в CI, а не на своём ноутбуке, задавай ключ через переменную окружения FLIPLINK_API_KEY, а не через локальный конфигурационный файл, и прочитай более подробный разбор в Автоматизация публикации флипбуков в CI/CD.

Ставим на расписание

Финальный шаг любой автоматизации: поставить её на расписание. Сохрани конвейер как скрипт, сделай его исполняемым и добавь запись в cron. Это запускает ночную публикацию с отчётом в 02:00:

# crontab -e
0 2 * * * FLIPLINK_API_KEY=your_key /home/you/scripts/nightly-publish.sh >> /var/log/fliplink.log 2>&1

Перенаправление и stdout, и stderr в файл лога (>> ... 2>&1) означает, что ветвления по коду выхода и отчёты jq сохраняются при каждом запуске — так что когда что-то ломается в 2 часа ночи, у тебя есть запись о том, что именно произошло.

Весь шаблон в одной строке

Каждый скрипт в этом гайде — одна и та же идея: --json, чтобы получить сырые данные → jq, чтобы извлечь или отфильтровать → цикл, чтобы действовать → коды выхода, чтобы проверить. Начни с изучения собственного вывода --json, чтобы имена полей были верными, собирай конвейер по одному этапу за раз — и за считаные минуты у тебя будет надёжная автоматизация FlipLink.

Дополнительное чтение

Готовы создать первый флипбук?

Превращай свои PDF в интерактивные флипбуки и документы. Начни с Lifetime Deal от FlipLink — пожизненный доступ всего от $39.

#cli#jq#автоматизация#скриптинг#json
Lifetime Deal

Платите один раз — пользуйтесь всегда

10, 50 или 100 флипбуков · Все 35 функций · Безлимитные домены

$39
10 Флипбуки
$89
50 Флипбуки
Популярный выбор
$129
100 Флипбуки

Без уровней. Без ограничений по функциям. Каждый код LTD открывает всё.

  • Все функции открыты — без ограничений
  • Коды суммируются — докупайте в любой момент
  • Коды заменяемы — обменяйте старый на новый
  • Неограниченные собственные домены (CNAME)
  • Никаких регулярных платежей

По теме