# Облачная синхронизация

Cata может просматривать календари из облачных сервисов, таких как календарь Google, Nextcloud и т. д. По сути, вы можете просматривать любой файл .ics, опубликованный в Интернете или сохраненный на вашем компьютере. Для этого вам необходимо либо указать URL-адрес вашего файла .ics, либо синхронизировать файлы .ics с вашим компьютером и указать путь к одному файлу или папке с файлами .ics. Ниже приведены несколько примеров:

## Получение персональных URL-адресов файлов .ics (календарь Google) <a href="#obtaining-secret-urls-of-.ics-files-google-calendar" id="obtaining-secret-urls-of-.ics-files-google-calendar"></a>

Самый простой способ просматривать события из календаря Google — получить персональный URL-адрес. Откройте календарь Google в браузере, в разделе «Мои календари» нажмите три точки > «Настройки и обмен» > «Скопировать секретный адрес в формате iCal». Это должно выглядеть так:

```
https://calendar.google.com/calendar/ical/myemail%40gmail.com/private-xxx/basic.ics
```

Перейдите к разделу о [чтении из файлов .ics](#reading-from-.ics-files-in-calcure).

У этого метода есть несколько минусов, а именно то, что загрузка с URL-адреса обычно занимает много времени и работает только при наличии Интернета. Также возможно синхронизировать календари Google локально, как в примере ниже, но это сложнее.

## Локальная синхронизация файлов .ics (календарь Nextcloud) <a href="#syncing-.ics-files-locally-nextcloud-calendar" id="syncing-.ics-files-locally-nextcloud-calendar"></a>

Установите [vdirsyncer](https://vdirsyncer.pimutils.org/en/stable/index.html) для синхронизации файлов .ics из облака на компьютер:

```
pip install vdirsyncer
```

Создайте файл конфигурации с `config` именем `.config/vdirsyncer/config`. В этом примере показан типичный файл конфигурации для сервера Nextcloud. Для других серверов смотрите [обучающие материалы здесь](https://vdirsyncer.readthedocs.io/en/stable/tutorials/index.html#servers) . Например, если у вас есть личный и рабочий календари, вам необходимо создать разные записи синхронизации и получить два файла .ics (или две папки с файлами .ics). В примере ниже показаны типичные записи для синхронизации двух календарей: «рабочего» и «личного»:

```
[general]
status_path = "~/.vdirsyncer/status/"


# Sync personal events:

[pair events_personal]
a = "events_personal_local"
b = "events_personal_remote"
collections = null

[storage events_personal_local]
type = "singlefile"
path = "~/.config/vdirsyncer/data/events_personal.ics"

[storage events_personal_remote]
type = "caldav"
url = "https://nextcloud.yourserver.com/remote.php/dav/calendars/admin/personal" # this points to personal calendar (not all calendars)
username = "..."
password = "..." # this is your app password in nextcloud


# Sync work events:

[pair events_work]
a = "events_work_local"
b = "events_work_remote"
collections = null

[storage events_work_local]
type = "singlefile"
path = "~/.config/vdirsyncer/data/events_work.ics"

[storage events_work_remote]
type = "caldav"
url = "https://nextcloud.yourserver.com/remote.php/dav/calendars/admin/work" # this points to work calendar (not all calendars)
username = "..."
password = "..." # this is your app password in nextcloud


# Sync tasks:

[pair tasks]
a = "tasks_local"
b = "tasks_remote"
collections = null

[storage tasks_local]
type = "singlefile"
path = "~/.config/vdirsyncer/data/tasks.ics"

[storage tasks_remote]
type = "caldav"
url = "https://nextcloud.yourserver.com/remote.php/dav/calendars/admin/tasks/"
username = "..."
password = "..." # this is your app password in nextcloud
```

После создания файла конфигурации выполните следующую команду, чтобы обнаружить конфигурацию:

```
vdirsyncer discover
```

Согласитесь на создание всех необходимых файлов и папок и запустите следующую команду для синхронизации:

```
vdirsyncer sync
```

Это должно синхронизировать ваши задачи и события с файлами `.config/vdirsyncer/data`. Однако вы также можете использовать эту `type = "fylesystem"` опцию, если хотите синхронизировать каждое событие как отдельный файл .ics.

Для синхронизации файлов периодически запускайте (подробнее [здесь](http://vdirsyncer.pimutils.org/en/stable/tutorials/systemd-timer.html) ): `systemctl --user enable vdirsyncer.timer`

## Чтение файлов .ics в Cata <a href="#reading-from-.ics-files-in-calcure" id="reading-from-.ics-files-in-calcure"></a>

Теперь добавьте пути или URL-адреса файлов .ics в конфигурацию Cata по адресу `.config/cata/config.ini`. Cata примет URL-адрес (начинающийся с http) или путь к одному файлу (заканчивающийся на .ics) или путь к папке с файлами .ics, и в этом случае вся папка будет анализироваться как один календарь. Вот пример:

Копировать

```
ics_task_files = /home/username/.config/vdirsyncer/data/tasks.ics
ics_event_files = https://calendar.google.com/calendar/ical/myemail%40gmail.com/private-xxxxxxxx/basic.ics
```

Вы можете синхронизировать более одного пути или URL-адреса. Можно смешивать несколько типов записей, но записи должны быть разделены запятой без пробела, например:

```
ics_event_files = /home/username/.config/vdirsyncer/data/events_personal.ics,/home/username/.config/vdirsyncer/data/events_work.ics
```

Запустите `cata`, и вы увидите синхронизированные задачи и события. Если ничего не появилось, значит, произошла ошибка. Дважды проверьте все и посмотрите файл info.log в папке конфигурации.

#### Пока не поддерживается <a href="#not-supported-yet" id="not-supported-yet"></a>

* Время окончания (отображается только время начала)
* Цвета (на данный момент элементы раскрашены в соответствии с цветами в конфиге, но вы можете установить их такими же, как в вашем облаке)
* Редактирование (задачи и события из .ics только отображаются, но редактировать их пока нельзя)

#### Поиск неисправностей <a href="#troubleshooting" id="troubleshooting"></a>

[На этой странице](https://anufrievroman.gitbook.io/calcure/troubleshooting#syncing-and-displaying-.ics-files) представлены типичные проблемы и решения.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://svyatov-hub.gitbook.io/cata/oblachnaya-sinkhronizaciya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
