bars-icloud-drive/README.md

94 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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)