94 lines
5.6 KiB
Markdown
94 lines
5.6 KiB
Markdown
|
# 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/raw/commit/6813ae02265db16e71724844acf2828925cbcacd/secret.gif)
|