Frunk.tv ES Abrir Frunk.tv

Addons para Frunk.tv

Un addon lleva películas, series o canales a Frunk.tv: en Cine y Series y en TV, en la app de Android, en la web y en el coche. Cualquiera puede hacer uno. Es un conjunto de ficheros JSON que se piden por https: Frunk.tv los lee y los enseña, y nunca ejecuta código del addon. Esta página explica el formato. Para usar Cine y Series, mira su guía.

Cómo funciona

El manifiesto

Un JSON servido por https con Access-Control-Allow-Origin: * (la web lo pide desde frunk.tv). Las demás rutas son relativas a la carpeta del manifiesto.

{
  "frunk_addon": 1,
  "id": "org.example.cine",
  "name": "Cine de ejemplo",
  "description": "Qué tiene, en una o dos frases.",
  "version": "1.0.0",
  "publisher": { "name": "Ejemplo", "url": "https://example.org", "contact": "[email protected]" },
  "logo": "logo.png",
  "types": ["movie", "series", "channel"],
  "resources": ["catalog", "meta", "stream", "search", "live"],
  "catalogs": [
    { "type": "movie", "id": "estrenos", "name": "Estrenos", "search": true,
      "filters": [{ "key": "genre", "name": "Género", "options": ["Comedia", "Drama"] }] },
    { "type": "series", "id": "todas", "name": "Series" },
    { "type": "channel", "id": "canales", "name": "Canales", "live": true }
  ],
  "settings": [],
  "debrid": false
}

Las rutas

Todas son GET, todas terminan en .json y todas contestan JSON. Por eso un addon puede ser una carpeta de ficheros estáticos (GitHub Pages, por ejemplo); solo pierde la búsqueda y las páginas.

catalog/<tipo>/<catálogo>.json?skip=&search=&genre=
meta/<tipo>/<id>.json
stream/<tipo>/<id>.json
epg/<id del canal>.json?from=&to=

Los enlaces

stream se pide justo antes de reproducir, así que los enlaces pueden ser firmados y de corta duración:

{ "streams": [{
  "url": "https://cdn.example.org/peli/master.m3u8",
  "kind": "hls",
  "name": "1080p · castellano",
  "quality": "1080p",
  "audio": ["es", "en"],
  "subtitles": [{ "lang": "es", "url": "https://cdn.example.org/peli/es.vtt", "format": "vtt" }],
  "headers": { "Referer": "https://example.org/" },
  "drm": { "system": "widevine", "license": "https://license.example.org/wv" },
  "live": false
}] }

Ajustes

Si tu addon necesita algo del usuario (su región, su cuenta en tu servicio), decláralo en settings y Frunk.tv pinta el formulario:

"settings": [
  { "key": "region", "type": "select", "name": "Región", "options": ["es", "mx"], "default": "es" },
  { "key": "user", "type": "text", "name": "Usuario", "required": true },
  { "key": "pass", "type": "password", "name": "Contraseña", "required": true }
]

Los valores se guardan en el dispositivo del usuario y te llegan en la ruta, antes del recurso: c/<ajustes>/catalog/…, con <ajustes> el JSON de los valores en base64url.

Repositorios de addons

Si publicas varios addons, puedes reunirlos en un repositorio. Se instala con el mismo enlace que un addon, y añadirlo no instala nada: cada addon se instala aparte, con su propia confirmación.

{
  "frunk_addon_repo": 1,
  "id": "org.example.repo",
  "name": "Addons de Ejemplo",
  "publisher": { "name": "Ejemplo", "contact": "[email protected]" },
  "addons": [
    { "manifest": "cine/manifest.json", "name": "Cine de ejemplo", "types": ["movie", "series"] }
  ]
}

El enlace de instalación

https://frunk.tv/#/addons/add/ seguido de la dirección del manifiesto (o del repositorio), codificada con encodeURIComponent. Para abrirlo directamente en la app de Android, usa https://frunk.tv/addon?m= con la misma dirección.

Un catálogo en un solo fichero (el formato de catálogos) también es un addon: un manifiesto con "frunk_addon": 1 y "bundle" en lugar de rutas se trata como un catálogo, y los manifiestos frunk_catalog siguen funcionando.

Reglas que pone Frunk.tv