Documentación API - Reproductor IPTV

Referencia completa para el uso de la API del reproductor IPTV

Autenticación

GET /player_api.php

Autentica al usuario en el sistema y devuelve información básica del usuario y servidor.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
Respuesta

Devuelve un objeto JSON con información del usuario y del servidor.

Ejemplo de respuesta exitosa:

{
    "user_info": {
        "auth": 1,
        "status": "Active",
        "username": "example_user",
        "password": "password123",
        "message": "Autenticación exitosa",
        "exp_date": "2023-12-31",
        "is_trial": 0,
        "active_cons": 1,
        "created_at": "2023-01-01",
        "max_connections": 5,
        "allowed_output_formats": ["m3u8", "ts", "rtmp"]
    },
    "server_info": {
        "url": "example.com",
        "port": 80,
        "https_port": 443,
        "server_protocol": "http",
        "rtmp_port": 1935,
        "timezone": "America/New_York",
        "timestamp_now": 1621234567,
        "time_now": "2023-05-17 12:34:56"
    }
}

Ejemplo de respuesta fallida:

{
    "user_info": {
        "auth": 0,
        "status": "Error de autenticación",
        "username": "example_user",
        "message": "Credenciales inválidas",
        "exp_date": null,
        "is_trial": 0,
        "active_cons": 0,
        "created_at": null,
        "max_connections": 1,
        "allowed_output_formats": ["m3u8", "ts", "rtmp"]
    },
    "server_info": {
        "url": "",
        "port": 80,
        "https_port": 443,
        "server_protocol": "http",
        "rtmp_port": 1935,
        "timezone": "UTC",
        "timestamp_now": 1621234567,
        "time_now": "2023-05-17 12:34:56"
    }
}
Notas
  • Esta petición es necesaria antes de usar cualquier otra funcionalidad de la API.
  • El campo auth con valor 1 indica autenticación exitosa.
  • La fecha de expiración (exp_date) se proporciona en formato YYYY-MM-DD.
  • El campo max_connections indica el número máximo de dispositivos que pueden conectarse simultáneamente.
  • El campo active_cons muestra el número actual de conexiones activas.

Canales en Vivo

GET /player_api.php?username={user}&password={pass}&action=get_live_streams

Obtiene la lista completa de canales en vivo disponibles para el usuario.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_live_streams" o "202"
category_id integer No ID de categoría para filtrar canales
Respuesta

Devuelve un objeto JSON con la lista de canales en vivo.

Ejemplo de respuesta:

{
    "user_info": { ... },
    "server_info": { ... },
    "streams": [
        {
            "num": 1,
            "name": "Canal Deportes HD",
            "stream_type": "live",
            "stream_id": 123,
            "stream_icon": "http://example.com/images/sports.png",
            "epg_channel_id": "sports.tv",
            "added": "2023-01-15",
            "category_id": 5,
            "custom_sid": "",
            "tv_archive": 1,
            "direct_source": "http://source.example.com/stream.m3u8"
        },
        // Más canales...
    ]
}
Notas
  • Se puede usar category_id para filtrar canales de una categoría específica.
  • El campo tv_archive indica si el canal soporta la función de grabación (1) o no (0).
  • El campo stream_type siempre será "live" para canales en vivo.
  • Para compatibilidad con versiones anteriores, la acción "202" también es válida.

Películas (VOD)

GET /player_api.php?username={user}&password={pass}&action=get_vod_streams

Obtiene la lista completa de películas (Video On Demand) disponibles para el usuario.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_vod_streams" o "203"
category_id integer No ID de categoría para filtrar películas
Respuesta

Devuelve un objeto JSON con la lista de películas.

Ejemplo de respuesta:

{
    "user_info": { ... },
    "server_info": { ... },
    "movies": [
        {
            "num": 1,
            "name": "El Señor de los Anillos",
            "stream_type": "movie",
            "stream_id": 456,
            "stream_icon": "http://example.com/images/lotr.jpg",
            "rating": 8.8,
            "rating_5based": 4.4,
            "added": "2023-02-10",
            "category_id": 10,
            "container_extension": "mp4",
            "custom_sid": "",
            "direct_source": "http://source.example.com/movie.mp4"
        },
        // Más películas...
    ]
}
Notas
  • Se puede usar category_id para filtrar películas de una categoría específica.
  • El campo stream_type siempre será "movie" para películas.
  • El campo rating es la puntuación en escala de 10, mientras que rating_5based es la misma puntuación convertida a escala de 5.
  • El campo container_extension indica el formato del archivo (mp4, mkv, avi, etc).
  • Para compatibilidad con versiones anteriores, la acción "203" también es válida.

Series

GET /player_api.php?username={user}&password={pass}&action=get_series

Obtiene la lista completa de series disponibles para el usuario.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_series" o "204"
category_id integer No ID de categoría para filtrar series
Respuesta

Devuelve un objeto JSON con la lista de series.

Ejemplo de respuesta:

{
    "user_info": { ... },
    "server_info": { ... },
    "series": [
        {
            "num": 1,
            "name": "Breaking Bad",
            "series_id": 789,
            "cover": "http://example.com/images/breaking_bad.jpg",
            "plot": "Un profesor de química diagnosticado con cáncer...",
            "cast": "Bryan Cranston, Aaron Paul, Anna Gunn",
            "director": "Vince Gilligan",
            "genre": "Drama, Crimen",
            "releaseDate": "2008-01-20",
            "last_modified": "2023-03-15",
            "rating": 9.4,
            "rating_5based": 4.7,
            "backdrop_path": ["http://example.com/images/breaking_bad_backdrop.jpg"],
            "youtube_trailer": "HhesaQXLuRY",
            "episode_run_time": 45,
            "category_id": 15
        },
        // Más series...
    ]
}
Notas
  • Se puede usar category_id para filtrar series de una categoría específica.
  • El campo series_id es necesario para obtener información detallada de temporadas y episodios.
  • El campo episode_run_time indica la duración aproximada de los episodios en minutos.
  • El campo youtube_trailer contiene solo el ID del video de YouTube, no la URL completa.
  • Para compatibilidad con versiones anteriores, la acción "204" también es válida.

Categorías

GET /player_api.php?username={user}&password={pass}&action=get_live_categories

Obtiene las categorías de canales en vivo disponibles para el usuario.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_live_categories"
Respuesta

Devuelve un array JSON con las categorías de canales en vivo.

Ejemplo de respuesta:

[
    {
        "category_id": "1",
        "category_name": "Deportes",
        "parent_id": 0
    },
    {
        "category_id": "2",
        "category_name": "Noticias",
        "parent_id": 0
    },
    {
        "category_id": "3",
        "category_name": "Entretenimiento",
        "parent_id": 0
    }
]
Notas
  • Esta información es útil para construir menús de navegación en la aplicación del cliente.
  • El campo parent_id permite estructuras de categorías jerárquicas, pero generalmente es 0.
GET /player_api.php?username={user}&password={pass}&action=get_vod_categories

Obtiene las categorías de películas (VOD) disponibles para el usuario.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_vod_categories"
Respuesta

Devuelve un array JSON con las categorías de películas.

Ejemplo de respuesta:

[
    {
        "category_id": "10",
        "category_name": "Acción",
        "parent_id": 0
    },
    {
        "category_id": "11",
        "category_name": "Comedia",
        "parent_id": 0
    },
    {
        "category_id": "12",
        "category_name": "Drama",
        "parent_id": 0
    }
]
Notas
  • El ID de categoría puede usarse para filtrar películas en la llamada a get_vod_streams.
GET /player_api.php?username={user}&password={pass}&action=get_series_categories

Obtiene las categorías de series disponibles para el usuario.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_series_categories"
Respuesta

Devuelve un array JSON con las categorías de series.

Ejemplo de respuesta:

[
    {
        "category_id": "15",
        "category_name": "Drama",
        "parent_id": 0
    },
    {
        "category_id": "16",
        "category_name": "Ciencia Ficción",
        "parent_id": 0
    },
    {
        "category_id": "17",
        "category_name": "Documentales",
        "parent_id": 0
    }
]
Notas
  • El ID de categoría puede usarse para filtrar series en la llamada a get_series.

Guía de Programación (EPG)

GET /player_api.php?username={user}&password={pass}&action=get_epg&stream_id={id}&limit={num}

Obtiene la guía de programación completa para un canal específico.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_epg"
stream_id integer ID del canal
limit integer No Número máximo de programas a devolver (por defecto: todos)
Respuesta

Devuelve un objeto JSON con la programación del canal.

Ejemplo de respuesta:

{
    "epg_listings": [
        {
            "id": "123456",
            "epg_id": "sports.tv",
            "title": "Partido de fútbol: Barcelona vs Real Madrid",
            "lang": "es",
            "start": "2023-05-17 20:00:00",
            "end": "2023-05-17 22:00:00",
            "description": "Partido de la liga española entre FC Barcelona y Real Madrid",
            "channel_id": "123",
            "start_timestamp": 1621278000,
            "stop_timestamp": 1621285200
        },
        {
            "id": "123457",
            "epg_id": "sports.tv",
            "title": "Post partido",
            "lang": "es",
            "start": "2023-05-17 22:00:00",
            "end": "2023-05-17 22:30:00",
            "description": "Análisis post partido con los comentaristas",
            "channel_id": "123",
            "start_timestamp": 1621285200,
            "stop_timestamp": 1621287000
        }
    ]
}
Notas
  • Esta información es útil para mostrar la programación de un canal específico.
  • Los timestamps están en formato UNIX (segundos desde el 1 de enero de 1970).
  • No todos los canales tienen información EPG disponible.

EPG Resumido

GET /player_api.php?username={user}&password={pass}&action=get_short_epg&stream_id={id}&limit={num}

Obtiene una versión resumida de la guía de programación para un canal específico.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_short_epg"
stream_id integer ID del canal
limit integer No Número máximo de programas a devolver (por defecto: 4)
Respuesta

Devuelve un objeto JSON con la programación resumida del canal.

Ejemplo de respuesta:

{
    "epg_listings": [
        {
            "id": "123456",
            "title": "Partido de fútbol: Barcelona vs Real Madrid",
            "start": "2023-05-17 20:00:00",
            "end": "2023-05-17 22:00:00",
            "description": "Partido de la liga española entre FC Barcelona y Real Madrid",
            "now_playing": 1,
            "start_timestamp": 1621278000,
            "stop_timestamp": 1621285200
        },
        {
            "id": "123457",
            "title": "Post partido",
            "start": "2023-05-17 22:00:00",
            "end": "2023-05-17 22:30:00",
            "description": "Análisis post partido con los comentaristas",
            "now_playing": 0,
            "start_timestamp": 1621285200,
            "stop_timestamp": 1621287000
        }
    ]
}
Notas
  • Esta versión es más ligera que get_epg y es ideal para mostrar "Ahora y Siguiente".
  • El campo now_playing indica si el programa está actualmente en emisión (1) o no (0).
  • Por defecto devuelve 4 programas, pero puede limitarse con el parámetro limit.

Archivo TV

GET /player_api.php?username={user}&password={pass}&action=get_simple_data_table&stream_id={id}

Obtiene las grabaciones disponibles para un canal con funcionalidad de Archivo TV (Catch-up).

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_simple_data_table"
stream_id integer ID del canal
Respuesta

Devuelve un objeto JSON con la lista de grabaciones disponibles.

Ejemplo de respuesta:

{
    "epg_listings": [
        {
            "id": "123456",
            "title": "Noticias de la mañana",
            "description": "Resumen de las noticias más importantes del día",
            "start": "2023-05-16 08:00:00",
            "end": "2023-05-16 09:00:00",
            "channel_id": "123",
            "start_timestamp": 1621152000,
            "stop_timestamp": 1621155600,
            "has_archive": 1
        },
        {
            "id": "123457",
            "title": "El tiempo",
            "description": "Previsión meteorológica para los próximos días",
            "start": "2023-05-16 09:00:00",
            "end": "2023-05-16 09:15:00",
            "channel_id": "123",
            "start_timestamp": 1621155600,
            "stop_timestamp": 1621156500,
            "has_archive": 1
        }
    ]
}
Notas
  • Solo los canales con tv_archive=1 en la respuesta de get_live_streams tienen esta funcionalidad.
  • El campo has_archive indica si la grabación está disponible (1) o no (0).
  • Para reproducir una grabación, se debe construir una URL especial que incluye el timestamp de inicio.

Detalles de Stream

GET /player_api.php?username={user}&password={pass}&action=get_vod_info&vod_id={id}

Obtiene información detallada sobre una película específica.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_vod_info"
vod_id integer ID de la película
Respuesta

Devuelve un objeto JSON con información detallada de la película.

Ejemplo de respuesta:

{
    "info": {
        "name": "El Señor de los Anillos: La Comunidad del Anillo",
        "o_name": "The Lord of the Rings: The Fellowship of the Ring",
        "movie_image": "http://example.com/images/lotr_poster.jpg",
        "description": "Un hobbit de la Comarca y ocho compañeros emprenden un viaje para destruir el poderoso Anillo Único y salvar la Tierra Media del Señor Oscuro Sauron.",
        "releasedate": "2001-12-19",
        "year": "2001",
        "genre": "Aventura, Fantasía",
        "cast": "Elijah Wood, Ian McKellen, Orlando Bloom",
        "director": "Peter Jackson",
        "duration": "178",
        "rating": 8.8,
        "trailer": "https://www.youtube.com/watch?v=V75dMMIW2B4"
    },
    "movie_data": {
        "stream_id": 456,
        "stream_url": "http://example.com/movies/lotr.mp4",
        "container_extension": "mp4"
    }
}
Notas
  • Esta información es útil para mostrar detalles completos de una película antes de reproducirla.
  • El campo duration está en minutos.
  • El campo trailer proporciona la URL completa al tráiler en YouTube.
GET /player_api.php?username={user}&password={pass}&action=get_series_info&series_id={id}

Obtiene información detallada sobre una serie específica, incluyendo temporadas y episodios.

Parámetros
Parámetro Tipo Requerido Descripción
username string Nombre de usuario
password string Contraseña del usuario
action string Debe ser "get_series_info"
series_id integer ID de la serie
Respuesta

Devuelve un objeto JSON con información detallada de la serie, incluyendo temporadas y episodios.

Ejemplo de respuesta:

{
    "info": {
        "name": "Breaking Bad",
        "cover": "http://example.com/images/breaking_bad.jpg",
        "plot": "Un profesor de química diagnosticado con cáncer inoperable de pulmón recurre a la fabricación y venta de metanfetamina para asegurar el futuro de su familia.",
        "cast": "Bryan Cranston, Aaron Paul, Anna Gunn",
        "director": "Vince Gilligan",
        "genre": "Drama, Crimen",
        "releaseDate": "2008-01-20",
        "last_modified": "2023-03-15",
        "rating": 9.4,
        "backdrop_path": ["http://example.com/images/breaking_bad_backdrop.jpg"],
        "youtube_trailer": "HhesaQXLuRY",
        "episode_run_time": 45
    },
    "episodes": {
        "1": [
            {
                "id": "1001",
                "episode_num": 1,
                "title": "Piloto",
                "container_extension": "mp4",
                "info": {
                    "plot": "Un profesor de química descubre que tiene cáncer de pulmón y decide utilizar sus conocimientos para producir y vender metanfetamina.",
                    "duration": 58,
                    "releasedate": "2008-01-20"
                }
            },
            {
                "id": "1002",
                "episode_num": 2,
                "title": "Gato metido en la bolsa",
                "container_extension": "mp4",
                "info": {
                    "plot": "Walter y Jesse intentan deshacerse de dos cadáveres dificultando su trabajo en el proceso.",
                    "duration": 48,
                    "releasedate": "2008-01-27"
                }
            }
        ],
        "2": [
            {
                "id": "2001",
                "episode_num": 1,
                "title": "Siete treinta y siete",
                "container_extension": "mp4",
                "info": {
                    "plot": "Walt y Jesse enfrentan problemas con un distribuidor de drogas local después de que Jesse le roba un alijo de droga.",
                    "duration": 47,
                    "releasedate": "2009-03-08"
                }
            }
        ]
    }
}
Notas
  • La estructura de episodes es un objeto donde las claves son los números de temporada y los valores son arrays de episodios.
  • Cada episodio tiene un id único que se utiliza para la reproducción.
  • El campo duration de cada episodio está en minutos.