> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lampac.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Sync и TimeCode: синхронизация закладок и позиций

> Модули Sync, SyncEvents и TimeCode в Lampac синхронизируют закладки, историю и позицию воспроизведения через SQLite и WebSocket.

Lampac NextGen предоставляет систему синхронизации, которая сохраняет закладки, историю просмотров и позицию воспроизведения между всеми устройствами пользователя. Данные хранятся локально в SQLite, поэтому работают даже без внешних облачных сервисов.

## Состав системы синхронизации

| Модуль         | Эндпоинты                 | Назначение                                                                                        |
| -------------- | ------------------------- | ------------------------------------------------------------------------------------------------- |
| **Sync**       | `/storage/`, `/bookmark/` | Синхронизация закладок и истории просмотров между устройствами                                    |
| **SyncEvents** | WebSocket (NWS)           | Трансляция событий синхронизации в реальном времени через NativeWebSocket                         |
| **Storage**    | внутреннее                | Хранилище данных для Sync и NWS, работает только для зарегистрированных пользователей (`onlyreg`) |
| **TimeCode**   | `/timecode/`              | Сохранение и восстановление позиции воспроизведения для каждого фильма или серии                  |

Все четыре модуля используют SQLite в качестве хранилища. Это обеспечивает персистентность данных без необходимости подключения к внешним серверам.

## Отключение модулей

По умолчанию модули Sync, SyncEvents, Storage и TimeCode загружаются вместе с ядром. Чтобы отключить любой из них, добавьте его имя в `SkipModules` в файле `init.conf`:

```json theme={null}
{
  "BaseModule": {
    "SkipModules": ["Sync", "SyncEvents", "Storage", "TimeCode"]
  }
}
```

<Warning>
  Если вы отключите Sync, но оставите TimeCode, позиции воспроизведения будут сохраняться, а закладки и история перестанут синхронизироваться.
</Warning>

## Настройка через initPlugins

Если вы используете встроенный плагин синхронизации Lampac (`sync: true` в `initPlugins`), убедитесь, что стандартные клиентские плагины `bookmark.js` и `timecode.js` отключены. Иначе возможны конфликты между серверной и клиентской синхронизацией.

Пример корректной конфигурации в `init.conf`:

```json theme={null}
{
  "LampaWeb": {
    "initPlugins": {
      "sync": true,
      "bookmark": false,
      "timecode": false
    }
  }
}
```

<Note>
  Когда `sync: true`, Lampac выступает оркестратором синхронизации. Клиент Lampa отправляет данные на сервер Lampac, а сервер раздает их всем подключенным устройствам пользователя.
</Note>

## Как работает синхронизация

1. Пользователь добавляет фильм в закладки или начинает просмотр на одном устройстве.
2. Lampa отправляет данные на сервер Lampac через эндпоинты `/storage/` или `/timecode/`.
3. При открытии того же контента на другом устройстве Lampa запрашивает сохраненные данные с сервера.
4. Если оба устройства онлайн одновременно, WebSocket-модуль SyncEvents транслирует изменения мгновенно.
