Ivan Komarov 54ff9fa305 | ||
---|---|---|
.vscode | ||
icloudpy | ||
src | ||
.gitignore | ||
README.md | ||
config.yaml | ||
main.py | ||
requirements.txt | ||
secret.gif |
README.md
iCloud Drive Sync
Скрипт для синхронизации фалов из iCloud Drive в локальное хранилище. Скрипт также поддерживает конвертацию фалов .numbers
в формат .xlsx
Требования
- Python 3.9, 3.10, 3.11, 3.12 и 3.13
Протестировано на Python 3.12.3
Установка
Для установки всех необходимых зависимостей для работы скрипта нужно выполнить следующею команду:
pip install -r requirements.txt
Настройка
Все настройки хранятся в файле config.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==" # Секретный ключ файла, как его получить смотрите ниже
Авторизация
Для того чтобы авторизоваться необходимо в первую очередь выполнить следующую команду
icloud --username=mail@example.com --session-directory="C:\icloud\session_data"
mail@example.com
это почта (имя пользователя) для авторизации в ICloudC:\icloud\session_data
это полный путь до каталога session_data в корне каталога скрипта, где будет храниться сессия авторизации
Во время выполнения вам будет предложено ввести пароль от аккаунта ICloud и сохранить ключ авторизации в хранилище keyring
нужно согласиться.
Затем, если включена двухфакторная авторизация, то попросит ввести код из SMS или устройства.
Внимание: В последнее время SMS на Россииские номера приходя через раз или вообще могут не прийти, поэтому стоит повторить попытку. Как вариант можно дойти до этого шага и попробовать авторизоваться в ICloud через браузер, дойти до шага ввода кода и если он пришел то ввести его не в браузер в консоль скрипта.
Внимание: Из-за политики Apple авторизация может слететь через пару месяцев, в этом случае необходимо выполнить команду авторизации заново.
Запуск скрипта
Если авторизация прошла успешно и файл конфигурации заполнен, то можно выполнить команду запуска скрипта:
py main.py
Данная команда синхронизирует необходимы каталоги и файлы, и при необходимости производит конвертацию файлов конвертацию фалов .numbers
в формат .xlsx
результат можно увидеть в указанных в файле конфигурации каталогов по умолчанию в /icloud/drive и /icloud/drive_export соответственно.