Скрипт для синхронизации фалов из 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 соответственно.