Перейти к основному содержимому

Манифест дополнения

Добро пожаловать к первому шагу создания дополнения EMET Surf! Начнём с манифеста — это «сердце» дополнения, которое сообщает приложению всё необходимое.

Манифест — это JSON‑файл по адресу /manifest.json на вашем сервере. Подумайте о нём как о визитке вашего дополнения: он представляет его EMET Surf и объясняет, что оно умеет.

Создаём первый манифест

Минимальный манифест для старта:

{
"id": "my.first.emet.addon",
"version": "1.0.0",
"name": "Hello, World",
"description": "My first EMET Surf add-on",
"logo": "https://example.com/logo-256.png",
"resources": [],
"types": []
}

Разберём поля:

Обязательные:

  • id: Уникальный идентификатор (точечная нотация: com.example.movies)
  • version: Семантическая версификация (1.0.0, 2.1.3)
  • name: Отображаемое имя дополнения
  • description: Краткое описание того, что делает дополнение

Опционально, но рекомендуется:

  • logo: Квадрат 256×256, визуальный идентификатор

Скоро добавим:

  • resources: Какие ресурсы вы предоставляете (catalog, meta, stream и др.)
  • types: Какие типы контента поддерживаете (movie, series и др.)

Расширенные возможности манифеста

Перенаправляемый манифест:

{
"location": ["https://my-addon-server.com/manifest.json"]
}

Позволяет публиковать манифест отдельно от серверов с данными.

Локализованные описания:

{
"localizedDescription": {
"en": "Provides information about movies",
"es": "Proporciona información sobre películas",
"ru": "Предоставляет информацию про фильмы",
"uk": "Надає інформацію про фільми"
}
}

Даёт пользователям описание на их языке.

Справочник жанров:

{
"genres": [
{
"id": 28,
"localizedName": {"en": "Action", "ru": "Боевик"},
"name": "Action"
},
{
"id": 12,
"localizedName": {"en": "Adventures", "ru": "Приключения"},
"name": "Adventures"
}
]
}

Структура жанра:

  • id: Числовой идентификатор жанра
  • localizedName: Локализованные названия
  • name: Базовое название (обычно на английском)

Полный пример:

{
"id": "test.addon",
"version": "1.0.0",
"name": "Test Add-on",
"description": "Provides information about movies",
"localizedDescription": {
"en": "Provides information about movies",
"es": "Proporciona información sobre películas",
"ru": "Предоставляет информацию про фильмы",
"uk": "Надає інформацію про фільми"
},
"logo": "https://example.com/logo-256.png",
"location": ["https://test-addon.example.com/manifest.json"],
"resources": ["catalog", "meta", "stream"],
"types": ["movie"],
"genres": [
{"id": 28, "localizedName": {"en": "Action", "ru": "Боевик"}, "name": "Action"},
{"id": 12, "localizedName": {"en": "Adventures", "ru": "Приключения"}, "name": "Adventures"}
]
}

Создание папки проекта

Windows:

mkdir my-emet-addon
cd my-emet-addon

macOS/Linux:

mkdir -p my-emet-addon
cd my-emet-addon

Создайте manifest.json и заполните базовым содержимым.

Важно:

  • Следите за валидностью JSON
  • Логотип должен быть публично доступен
  • id должен быть уникален

Что дальше?

У вас есть рабочий манифест! В следующих шагах добавим функциональность.

Итоги

  • Манифест описывает ваше дополнение
  • Обязательные поля: id, version, name, description
  • Рекомендуется logo
  • Поддерживаются перенаправляемые манифесты и локализации
  • Манифест доступен по /manifest.json