bars-icloud-drive/README.md

5.6 KiB
Raw Permalink Blame History

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 это почта (имя пользователя) для авторизации в ICloud
  • C:\icloud\session_data это полный путь до каталога session_data в корне каталога скрипта, где будет храниться сессия авторизации

Во время выполнения вам будет предложено ввести пароль от аккаунта ICloud и сохранить ключ авторизации в хранилище keyring нужно согласиться. Затем, если включена двухфакторная авторизация, то попросит ввести код из SMS или устройства.

Внимание: В последнее время SMS на Россииские номера приходя через раз или вообще могут не прийти, поэтому стоит повторить попытку. Как вариант можно дойти до этого шага и попробовать авторизоваться в ICloud через браузер, дойти до шага ввода кода и если он пришел то ввести его не в браузер в консоль скрипта.

Внимание: Из-за политики Apple авторизация может слететь через пару месяцев, в этом случае необходимо выполнить команду авторизации заново.

Запуск скрипта

Если авторизация прошла успешно и файл конфигурации заполнен, то можно выполнить команду запуска скрипта:

py main.py

Данная команда синхронизирует необходимы каталоги и файлы, и при необходимости производит конвертацию файлов конвертацию фалов .numbers в формат .xlsx результат можно увидеть в указанных в файле конфигурации каталогов по умолчанию в /icloud/drive и /icloud/drive_export соответственно.

Получение секретного ключа для конвертации