Скрипт для синхронизации фалов из iCloud Drive в локальное хранилище. Скрипт также поддерживает конвертацию фалов `.numbers` в формат `.xlsx`
## Требования
- Python 3.9, 3.10, 3.11, 3.12 и 3.13
Протестировано на Python 3.12.3
## Установка
Для установки всех необходимых зависимостей для работы скрипта нужно выполнить следующею команду:
```sh
pip install -r requirements.txt
```
## Настройка
Все настройки хранятся в файле `config.yaml`
```yaml
app:
logger:
level: "info" # Тип логирование в консоль доступно: DEBUG, INFO, WARNING, ERROR, CRITICAL
filename: "icloud.log" # Файл где, будут записываться логи
credentials:
username: "ki@atri-energo.ru" # Имя пользователя в ICloud
retry_login_interval: 900 # Интервал повторной попытки авторизации
root: "icloud" # Корневой каталог
region: global # Регион авторизации в ICloud, доступно global, china
drive:
destination: "drive" # Каталог в котором будут сохраняться синхронизированные фалы
destination_export: "drive_export" # Каталог в котором будут сохраняться конвертированные фалы
remove_obsolete: false # Удалять ли локальные файлы, которые больше не доступны в ICloud
sync_interval: 300 # Интервал синхронизации
filters:
file_name:
# Список файлов которые необходимо синхронизировать
- "Пустой"
- "Копия Тех_2022_осн директория"
folders:
# Список каталогов которые необходимо синхронизировать
- "folder1"
- "folder2"
- "folder3"
file_extensions:
#Список расширений файлов которые необходимо синхронизировать
- "pdf"
- "png"
- "jpg"
- "jpeg"
ignore:
# Список игнорируемых каталогов и файлов
# При указании путей к папкам добавляйте /*
- "node_modules/*"
- "*.md"
# Список конвертируемых файлов из формата numbers в формат xlsx
convert:
- name: "Пустой" # Имя файла
secret: "AzkiMDEYAetglYTt75QvN+hABQhpixoT3UWVxy3ELL8=:XQnMIaEj5Ov4oBqhpxAGIA==:DVRgHa1LjxlWnwYqdlN4VA==" # Секретный ключ файла, как его получить смотрите ниже
```
## Авторизация
Для того чтобы авторизоваться необходимо в первую очередь выполнить следующую команду
-`mail@example.com` это почта (имя пользователя) для авторизации в ICloud
-`C:\icloud\session_data` это полный путь до каталога session_data в корне каталога скрипта, где будет храниться сессия авторизации
Во время выполнения вам будет предложено ввести пароль от аккаунта ICloud и сохранить ключ авторизации в хранилище `keyring` нужно согласиться.
Затем, если включена двухфакторная авторизация, то попросит ввести код из SMS или устройства.
> Внимание: В последнее время SMS на Россииские номера приходя через раз или вообще могут не прийти, поэтому стоит повторить попытку. Как вариант можно дойти до этого шага и попробовать авторизоваться в ICloud через браузер, дойти до шага ввода кода и если он пришел то ввести его не в браузер в консоль скрипта.
> Внимание: Из-за политики Apple авторизация может слететь через пару месяцев, в этом случае необходимо выполнить команду авторизации заново.
## Запуск скрипта
Если авторизация прошла успешно и файл конфигурации заполнен, то можно выполнить команду запуска скрипта:
```sh
py main.py
```
Данная команда синхронизирует необходимы каталоги и файлы, и при необходимости производит конвертацию файлов конвертацию фалов `.numbers` в формат `.xlsx` результат можно увидеть в указанных в файле конфигурации каталогов по умолчанию в /icloud/drive и /icloud/drive_export соответственно.