Skip to content

ritds/figma_backup

Repository files navigation

Утилита предназначена для создания локальных бекапов fig / jam файлов

Для работы необходимо:

  1. bash консоль
  2. Установленная node (проверено на версии v16.13.0)
  3. Для полной версии, установленный python (проверено на Python 2.7.18)

Ligth запуск

Предусмотрен вариант запуска в режиме простого скачивания отдельного файла.

Для этого необходимо в корне проекта:

  1. Установить зависимости node (команда npm i)
  2. Выполнить команду node figma_download_file_by_url.js figmaLogin=<ваш логин> figmaPassword=<ваш пароль> figmaUrl=<полный адрес файла, который необходимо скачать>.

В ligth запуске все файлы будут сохранены в директорию ./store/download. Если эта директория не пустая, существующие в ней файлы будут переименованы

Full запуск

Требует установленного python, отличается от ligth версии следующим:

  1. Скачивает все файлы для команд, указанных в ./config/get_figme_files_list.yml
  2. Анализирует время изменения файла в figma и если файл не менялся с прошлого запуска пропускает их

Работает следующим образом:

  1. Установить зависимости node (команда npm i)
  2. Необходимо запустить скрипт team_file_scanner.sh для подготовки списка файлов для скачивания. Информация о файлах сохраняется в ./process/figma_files_list*.json в следующем формате:
[
    {
        "key": "<ключ файла>",
        "project": "<название проекта>",
        "team": "<название команды>",
        "file": "<название файла>",
        "last_modified": "<дата последнего изменения>",
        "path": "<путь куда будет сохранен файл>"
    },
    ...
    {
        "key": "<ключ файла>",
        "project": "<название проекта>",
        "team": "<название команды>",
        "file": "<название файла>",
        "last_modified": "<дата последнего изменения>",
        "path": "<путь куда будет сохранен файл>"
    }
]

При этом если файл уже существует, сравниваются даты сохранения файла на диск и модификации файла в figma. Если новых изменений нету, то файл исключается из списка на скачивания. При запуске team_file_scanner.sh удаляет предыдущие файлы ./process/figma_files_list*.json, если они были 3. Для запуска скачивания файлов необходимо запустить скрипт team_file_download.sh <ваш логин> <ваш пароль>. Скрипт идет по файлам ./process/figma_files_list*.json и сохраняет их в ./store/TEAM <название команды>/PROJECT <имя проекта>/<имя файла>. Если файл был ранее загружен пердыдущая версия сохранятся с временной меткой.

Настройки

  1. ./config/download_settings.json - настройки таймаутов для скачивания файлов

    1. downloadTimeout - ожидание скачивания файла в секундах. Если указан 0 - таймаут оключается
    2. selectorTimeout - ожидание появления нужных пунктов меню на странице в миллисекундах
    3. navigationTimeout - таймаут навигации в миллисекундах
    4. launchTimeout - таймаут запуска headless хрома в миллисекундах
    5. loginTimeout - таймаут ожидания логина в миллисекундах
    6. pageOpenTimeout - таймаут открытия страницы в миллисекундах
  2. ./config/get_figme_files_list.yml - настройки для скачивания файлов команд

    1. access_token - access token для вызовов методов figma api
    2. teams - список идентификаторов команд (можно подсмотреть в урле https://www.figma.com/files/<...>/team/<нужный ид команды>/...)