Для работы необходимо:
- 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/<нужный ид команды>/...)