Первая публикация
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# 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 соответственно.
|
||||
|
||||
## Получение секретного ключа для конвертации
|
||||

|
||||
Reference in New Issue
Block a user