Для работы необходимо:
- bash консоль
- Установленная node (проверено на версии v16.13.0)
- Для полной версии, установленный python (проверено на Python 2.7.18)
Предусмотрен вариант запуска в режиме простого скачивания отдельного файла.
Для этого необходимо в корне проекта:
- Установить зависимости node (команда
npm i) - Выполнить команду
node figma_download_file_by_url.js figmaLogin=<ваш логин> figmaPassword=<ваш пароль> figmaUrl=<полный адрес файла, который необходимо скачать>.
В ligth запуске все файлы будут сохранены в директорию ./store/download. Если эта директория не пустая, существующие в ней файлы будут переименованы
Требует установленного python, отличается от ligth версии следующим:
- Скачивает все файлы для команд, указанных в
./config/get_figme_files_list.yml - Анализирует время изменения файла в figma и если файл не менялся с прошлого запуска пропускает их
Работает следующим образом:
- Установить зависимости node (команда
npm i) - Необходимо запустить скрипт
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 <имя проекта>/<имя файла>. Если файл был ранее загружен пердыдущая версия сохранятся с временной меткой.
-
./config/download_settings.json- настройки таймаутов для скачивания файловdownloadTimeout- ожидание скачивания файла в секундах. Если указан 0 - таймаут оключаетсяselectorTimeout- ожидание появления нужных пунктов меню на странице в миллисекундахnavigationTimeout- таймаут навигации в миллисекундахlaunchTimeout- таймаут запуска headless хрома в миллисекундахloginTimeout- таймаут ожидания логина в миллисекундахpageOpenTimeout- таймаут открытия страницы в миллисекундах
-
./config/get_figme_files_list.yml- настройки для скачивания файлов командaccess_token- access token для вызовов методов figma apiteams- список идентификаторов команд (можно подсмотреть в урле https://www.figma.com/files/<...>/team/<нужный ид команды>/...)