# iCloud Drive Sync Скрипт для синхронизации фалов из 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==" # Секретный ключ файла, как его получить смотрите ниже ``` ## Авторизация Для того чтобы авторизоваться необходимо в первую очередь выполнить следующую команду ```sh icloud --username=mail@example.com --session-directory="C:\icloud\session_data" ``` - `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 соответственно. ## Получение секретного ключа для конвертации ![](https://git.ae-work.ru/darkeum/bars-icloud-drive/raw/branch/main/secret.gif)