• IPTV europeo — 3.000+ canales, VOD y TV a la carta.
  • Contactos

EPG para todos los países en GitHub: Fuentes y guía de configuración

EPG para todos los países en GitHub: Fuentes& Guía de configuración

Si estás buscando epg para todos los países github, ya conoces lo básico: tu lista de reproducción M3U carga los canales bien, pero cada reproductor muestra "No hay datos EPG" junto a cada canal. Esta guía cubre las soluciones reales: dónde viven los mejores agregadores XMLTV de código abierto, cómo conectarlos correctamente a tu reproductor y por qué la mayoría de las configuraciones fallan en un paso específico del que casi nadie habla.

Qué es un EPG y por qué GitHub alberga las mejores fuentes gratuitas

Definición: formato XMLTV y cómo lo consumen los reproductores

Una Guía Electrónica de Programas (EPG) es un archivo estructurado que tu reproductor IPTV lee para mostrar "qué hay ahora" y "qué hay después" junto a cada canal. El formato que casi todos los reproductores aceptan es XMLTV, un estándar abierto que existe desde 2000 y que no ha necesitado muchas actualizaciones porque hace bien su trabajo.

Los archivos XMLTV son solo XML. Dos elementos principales llevan todo:<canal> define una estación con un ID único, nombre de visualización y URL de icono opcional.<programa> adjunta un intervalo de tiempo a ese ID de canal con una marca de tiempo de inicio y detención en el formatoinicio="20260511180000 +0000" — eso esYYYYMMDDHHmmss seguido de un desplazamiento UTC. Los reproductores analizan estos elementos en secuencia y construyen la cuadrícula de la guía en pantalla a partir de ellos.

Nada exótico, nada propietario. Si tu reproductor dice que soporta XMLTV, lee estas etiquetas.

Por qué los EPG mantenidos por la comunidad en GitHub superan a las alternativas raspadas

La mayoría de los "servicios de EPG" que venden o regalan URL de EPG están raspando sitios web de emisoras y revendiendo los datos sin ninguna transparencia sobre frescura, cobertura o metodología. Se caen sin aviso, cambian su formato de URL o silenciosamente eliminan ciertas regiones.

Los proyectos de código abierto alojados en GitHub son diferentes. Puedes ver el código del raspador, el flujo de trabajo de CI que lo ejecuta, cuándo ocurrió la última actualización y si el trabajo realmente tuvo éxito. Esa es una verdadera responsabilidad. Cuando algo se rompe, alguien presenta un problema y otra persona lo soluciona, a veces en cuestión de horas.

Los mantenedores de la comunidad también tienden a preocuparse por casos extremos: scripts no latinos, canales que se emiten en múltiples zonas horarias, variantes regionales de la misma emisora. Los proveedores comerciales de EPG rara vez se molestan con ese nivel de detalle.

Cómo los repositorios de agregadores obtienen información de los sitios oficiales de emisoras

La mayoría de los proyectos de agregadores serios no inventan datos. Escriben raspadores que acceden a páginas públicas oficiales: la sección "Horario" de una emisora, su guía basada en la web o su API de aplicación móvil, y transforman cualquier HTML o JSON que reciben en XMLTV válido. Los raspadores se ejecutan automáticamente, generalmente a través de GitHub Actions en un horario cron. Los archivos XMLTV frescos se comprometen al repositorio (o se cargan en una versión) cada 6 a 24 horas.

Esa es la clave: los datos provienen de los propios sistemas públicos de la emisora. El proyecto de GitHub es un estandarizador y agregador, no un fabricante de datos.

Principales agregadores de EPG de código abierto en GitHub

Repositorios que agregan fuentes de más de 100 países

Los proyectos más útiles para encontrar cobertura de epg para todos los países github son los grandes agregadores de múltiples países. Estos repositorios suelen contener archivos de guía separados por país o región (por ejemplo,guías/us.xml,guías/de.xml,guías/ar.xml) más un archivo combinado que fusiona todo. La cobertura a menudo abarca de 80 a 150 países, actualizada diariamente o con más frecuencia.

Los archivos combinados son masivos: fácilmente de 100 a 300 MB sin comprimir para una ventana completa de 7 días. Pero la mayoría de estos repositorios también publican archivos individuales por país y variantes comprimidas que rondan de 10 a 30 MB. Úsalos siempre que puedas.

Un buen proyecto de múltiples países tendrá una insignia de CI activa en su README, un cronograma de actualización claramente documentado y un diseño de carpeta estructurado que haga obvio qué archivo cubre qué región. Si no hay nada de eso presente, sé escéptico: podría ser un fork no mantenido.

Repositorios de un solo país y regionales para mercados nicho

Algunos países están bien cubiertos por proyectos dedicados de un solo país. Estos a menudo tienen mayor precisión para ese mercado específico porque el mantenedor realmente ve esos canales y nota cuando un raspador falla. Para regiones como el sudeste asiático, los países de MENA o Europa del Este, un proyecto regional dedicado generalmente tendrá mejor cobertura de canales que el agregador genérico de múltiples países.

Busca en GitHub términos como "xmltv [nombre del país]" o "epg [nombre del país] iptv" y los encontrarás. Verifica cuándo fue el último commit: cualquier cosa que tenga más de 6 meses sin actividad probablemente esté muerta.

Cómo evaluar un repositorio: estrellas, último commit, estado de CI, licencia

Las estrellas son una métrica de vanidad, pero pocas estrellas en un proyecto con commits muy recientes pueden significar que es nuevo y bueno. Muchas estrellas en un proyecto sin commits desde 2023 significa que está muerto y es popular. La fecha del último commit es la señal real para proyectos activos: quieres actividad dentro de las últimas 2–4 semanas como mínimo.

Haz clic en la pestaña de Acciones. Si hay un flujo de trabajo llamado algo como "Actualizar EPG" o "Ejecutar scrapers" corriendo en un horario, y la última ejecución fue exitosa (marca de verificación verde), los datos se mantienen activamente. Si la última ejecución del flujo de trabajo muestra una X roja y fue hace tres meses, sigue adelante.

Para la licencia: MIT y GPL son ambas adecuadas para uso personal y autoalojamiento. Si no hay un archivo LICENSE en absoluto, trata el proyecto con precaución: legalmente eso significa que no tienes derechos explícitos para usar o redistribuir los archivos.

Cómo agregar un EPG alojado en GitHub a tu reproductor IPTV

Localizando la URL XMLTV en bruto en GitHub (raw.githubusercontent.com)

El visor de archivos regular de GitHub envuelve el contenido en HTML: tu reproductor no puede usar esa URL.Necesitas el archivo en bruto. Navega hasta el archivo en el repositorio, luego haz clic en "Raw" en la esquina superior derecha de la vista del archivo. La URL cambiará araw.githubusercontent.com/username/reponame/branch/path/to/guide.xml. Esa es la URL que necesita tu reproductor.

Algunos repositorios publican sus archivos EPG como activos de lanzamiento de GitHub en su lugar. Busca en la sección de Releases en la barra lateral derecha. Las URL de los activos de lanzamiento siguen el patróngithub.com/username/reponame/releases/download/tag/guide.xml.gz — enlaces de descarga, no enlaces de contenido en bruto. Ambos funcionanpara IPTV reproductores que soportan HTTP.

Agregando la URL del EPG en reproductores que soportan entrada XMLTV

Cada reproductor principal maneja esto de manera ligeramente diferente, pero la configuración generalmente se llama "URL del EPG", "URL XMLTV" o "Fuente de Guía de Programas". Tivimate, Kodi (con PVR IPTV Simple), OTT Navigator y Spark Player todos soportan esto. Pega la URL en bruto, guarda y activa una actualización.

Si el reproductor acepta archivos comprimidos (la mayoría lo hace), siempre prefiere el.xml.gz variante. Un archivo de 200 MB comprimido a 18 MB hace una gran diferencia en conexiones lentas o cajas Android TV con RAM limitada.

Coincidencia de canales por tvg-id entre M3U y EPG

Aquí es donde el 90% de las configuraciones de EPG fallidas realmente se rompen. Eltvg-id atributo en tu lista de reproducción M3U debe coincidir exactamente con elid atributo en el correspondiente<elemento de canal> en el archivo XMLTV. Sensible a mayúsculas y minúsculas. Carácter por carácter.

Si tu M3U tienetvg-id="BBC.One.uk" y el archivo EPG tieneid="bbc1.uk", el reproductor no obtiene nada. No coinciden. Sin coincidencias difusas, sin retroceso inteligente en la mayoría de los reproductores: solo silencio.

Para depurar esto, abre ambos archivos en un editor de texto. Busca un nombre de canal que sepas que debería tener datos. Verifica qué ID usa el XMLTV para ese canal, luego encuentra la línea correspondiente en tu M3U y actualizatvg-id para que coincida exactamente. Algunos proveedores de listas de reproducción M3U publican un documento de mapeo que muestra qué IDs de EPG usa su lista de canales: verifica eso primero antes de editar manualmente.

Una variante particularmente desagradable: algunos proyectos de EPG utilizan IDs de estilo slug comobbc-one mientras que las listas de reproducción M3U utilizan IDs numéricos como70400. Esos nunca pueden coincidir sin una capa de traducción: edita el M3U, encuentra un EPG que use el mismo esquema de ID, o escribe un script corto para generar un mapeo.

Intervalos de actualización y configuraciones de caché

Establece el intervalo de actualización del EPG de tu reproductor para que coincida con la frecuencia con la que la fuente realmente se actualiza, no más a menudo. Si el repositorio envía nuevos datos cada 12 horas, actualizar cada hora consume ancho de banda, desperdicia memoria y ocasionalmente alcanza los límites de tasa de GitHub para tu IP (especialmente relevante si muchos dispositivos en la misma red solicitan el mismo archivo en bruto simultáneamente). Cada 12-24 horas suele ser lo correcto.

Cuando el EPG parece incorrecto a pesar de una actualización reciente, el problema suele ser la caché del lado del reproductor. La mayoría de los reproductores tienen una opción de "Borrar caché de EPG" o "Forzar actualización" enterrada en la configuración. Usa eso antes de asumir que los datos de la fuente están rotos.

Estructura del archivo XMLTV y problemas comunes

Anatomía de una entrada de programa: título, subtítulo, descripción, categoría, icono

Un<programa> elemento básico se ve así:

<programme start="20260511190000 +0000" stop="20260511200000 +0000" channel="bbc1.uk">  <title lang="en">The Nine O'Clock News</title>  <sub-title lang="en">Edición del lunes</sub-title>  <desc lang="en">Noticias nacionales e internacionales.</desc>  <category lang="en">Noticias</category>  <icon src="https://example.com/posters/news.jpg" /></programme>

Eltítulo elemento es el único campo requerido. Todo lo demás es opcional, perodesc ycategory hacen que la guía sea mucho más útil. Elicono elemento muestra arte del programa en reproductores compatibles; algunos repositorios lo incluyen, muchos no.

Manejo de zonas horarias y errores de compensación

La compensación UTC en la marca de tiempo (+0000,+0200,-0500, etc.) es cómo tu reproductor traduce la hora de transmisión a tu reloj local. Si un scraper codifica+0000 para un canal que realmente transmite en+0200, cada programa aparece 2 horas antes de lo que realmente se emite.

Las transiciones de horario de verano empeoran esto. Un scraper que maneja correctamente+0100 para CET en invierno pero olvida cambiar a+0200 para CEST en verano mostrará programas desplazados por una hora durante aproximadamente 6 meses del año. Este es uno de los errores más comunes en los scrapers de EPG: si notas que tu EPG está desfasado exactamente una hora después de un cambio de hora, esta es la razón. Presenta un problema en el repositorio con el canal específico y el desfase que estás viendo.

Problemas de codificación con scripts no latinos (cirílico, árabe, CJK)

Todos los archivos XMLTV deben estar codificados en UTF-8 con la declaración XML<?xml version="1.0" encoding="UTF-8"?> en la parte superior. Cuando un scraper extrae nombres de programas en árabe, cirílico, chino o hindi de una fuente y no maneja la codificación correctamente, los reproductores muestran mojibake: caracteres basura en lugar de texto legible.

Si ves caracteres comoпÑогÑамма para lo que debería ser cirílico, es probable que el archivo haya sido codificado en Latin-1 o Windows-1252 en algún lugar del proceso. Un buen proyecto tendrá esto solucionado; uno escrito apresuradamente no lo hará. Verifica si el repositorio tiene problemas abiertos que mencionen codificación o idiomas no latinos específicos antes de comprometerte con él para esas regiones.

Qué hacer cuando falta o está desactualizada la guía de un país

Abre un problema en el repositorio describiendo el problema: qué país, qué canales, cuán atrás se desactualizan los datos. La mayoría de los mantenedores aprecian un informe de error bien escrito mucho más que un "esto no funciona" de una línea.

Mejor aún: presenta una solicitud de extracción. Si el proyecto tiene un marco de scraper y puedes averiguar cómo funciona un scraper de país existente, replicarlo para un país que falta suele ser sencillo. Algunos proyectos han contribuido con scrapers para más de 30 países de esta manera. Si arreglar el proyecto existente parece demasiado lento, busca un fork regional o un proyecto de un solo país como solución temporal: úsalo como tu fuente de EPG para esa región mientras el proyecto principal se pone al día.

Autoalojamiento vs Consumo Directo de GitHub

Extrayendo el archivo XMLTV directamente de raw.githubusercontent.com

El consumo directo es la configuración más simple. Pega la URL en bruto, listo. La desventaja es que dependes de que GitHub esté operativo y de que el repositorio permanezca público. GitHub es generalmente confiable, pero los repositorios reciben ocasionalmente avisos de eliminación DMCA: un proyecto que estaba disponible ayer podría devolver un 404 hoy. Eso es raro, pero sucede.

También hay una consideración de limitación de tasa. GitHub limita las solicitudes de contenido en bruto por IP. Si estás en una red compartida (edificio de apartamentos, oficina, dormitorio) con múltiples usuarios de IPTV extrayendo el mismo archivo de 200 MB cada 12 horas, puedes comenzar a ver fallos en las solicitudes. Para uso personal en un solo hogar, esto suele estar bien.

Espejando el archivo a tu propio servidor con cron

Si tienes un VPS, una Raspberry Pi funcionando 24/7, o incluso un NAS con un programador, puedes extraer el archivo XMLTV en un trabajo cron y servirlo localmente. Un simple comando wget o curl en una entrada de crontab, ejecutándose un poco después del propio horario de actualización del repositorio, significa que siempre tienes una copia en caché fresca:

0 6 * * * curl -s -o /var/www/html/epg/guide.xml.gz \

Tu reproductor apunta entonces ahttp://your-server/epg/guide.xml.gz en lugar de GitHub. Más rápido, más confiable e inmune a las limitaciones de tasa de GitHub. Tiempo total de configuración: unos 10 minutos.

Filtrando archivos grandes de múltiples países a los canales que realmente ves

Un archivo XMLTV de 200 MB de múltiples países es realmente doloroso en cajas de Android TV de gama baja. El reproductor tiene que analizar todo el archivo para construir la guía, y en dispositivos con 1–2 GB de RAM, eso puede causar ralentizaciones o bloqueos. Filtrar solo los canales en tu lista de reproducción es la verdadera solución.

Extrae los IDs de los canales de tu M3U (grep paratvg-id=), luego usa esos IDs para filtrar el archivo XMLTV. El enfoque conceptual: lee la lista de canales, mantén solo<elementos de>canal< y>elementos deid ocanal el atributo aparece en esa lista. Un archivo de 200 MB a menudo se reduce a menos de 5 MB cuando se filtra a 100–150 canales específicos.

Generando un EPG más delgado con herramientas de línea de comandos

Para el enfoque de línea de comandos,xmlstarlet es la herramienta adecuada. Un pase de filtro se ve aproximadamente así:

xmlstarlet sel -t \> filtered.xml

Python'sxml.etree.ElementTree también maneja esto de manera limpia para cualquiera que esté más cómodo con la programación que con las herramientas de shell. Construye un conjunto de tus IDs deseados, itera el árbol fuente una vez, escribe los elementos coincidentes. Para una lista de 150 canales que ves, el paso de filtrado toma menos de un segundo y el resultado se carga instantáneamente en cualquier reproductor.

Consideraciones Legales y Éticas

Datos de programación y derechos de autor en diferentes jurisdicciones

Los horarios de programas — nombre del canal, nombre del programa, hora de inicio, hora de finalización — son datos fácticos. En la mayoría de las jurisdicciones de derecho común (EE. UU., Reino Unido, Australia), los hechos en bruto sin autoría creativa generalmente no pueden ser protegidos por derechos de autor. La UE adopta un enfoque ligeramente diferente a través de la directiva de bases de datos, que otorga protección a las bases de datos que representan una inversión sustancial, aunque los horarios fácticos cortos a menudo caen por debajo de ese umbral.

Lo que sí tiene derechos de autor: sinopsis de episodios escritas por el equipo editorial de un canal, imágenes promocionales y texto descriptivo original. Los proyectos de EPG que incluyen descripciones detalladas de episodios están en un territorio más gris que aquellos que solo incluyen título, hora y categoría. Esto no es asesoría legal: para uso comercial a gran escala, habla con un abogado que se especialice en tu jurisdicción.

Por qué la mayoría de los proyectos públicos de EPG operan bajo el precedente de uso justo

La mayoría de los proyectos de EPG de código abierto han operado públicamente durante años sin acciones legales. El patrón predominante es que los canales se benefician de tener sus datos de programación distribuidos con precisión: esto impulsa la audiencia. Los proyectos comunitarios que formatean y republican estos datos están haciendo algo similar a lo que históricamente hacían las revistas de listados de televisión: agregar horarios anunciados públicamente para la conveniencia de la audiencia.

Dicho esto, "no ha sido impugnado aún" no es lo mismo que "legalmente claro". Entiende la distinción.

Respetando los términos de servicio del canal fuente

Algunos canales prohíben explícitamente el scraping automatizado en sus términos de servicio. Los autores de scrapers de EPG tienen que sopesar eso al escribir sus herramientas. Como usuario que consume los archivos XMLTV resultantes, estás un paso alejado de eso, pero entender de dónde proviene la data es importante si planeas redistribuirla.

Revisar el README del repositorio para cualquier nota sobre su metodología de scraping y términos de origen vale unos minutos de lectura antes de que construyas un producto o servicio sobre los datos.

Contribuyendo de vuelta a la comunidad de código abierto

El ecosistema de epg para todos los países en GitHub funciona con esfuerzo voluntario. Si encuentras un error — zona horaria incorrecta, problema de codificación, un scraper roto para tu país — la decisión correcta es contribuir con una solución en lugar de solo quejarte o bifurcar en silencio. La mayoría de los mantenedores están genuinamente contentos de recibir un problema bien documentado o una solicitud de extracción funcional. Los proyectos que tienen la mejor cobertura son aquellos con comunidades de contribuyentes activas, no los que tienen un solo mantenedor sobrecargado tratando de mantener 120 scrapers funcionando solo.

¿Es legal usar archivos EPG de repositorios de GitHub?

Para uso personal, consumir datos de programación publicados públicamente es generalmente aceptado en la mayoría de las jurisdicciones. La redistribución es más complicada: depende tanto del archivo LICENSE del repositorio como de cualquier término adjunto a las fuentes del canal de origen. Lee ambos antes de redistribuir. Para uso comercial, obtén asesoría legal adecuada en lugar de confiar en publicaciones de foros o este artículo.

¿Con qué frecuencia se actualizan los EPG de GitHub?

La mayoría de los proyectos de agregadores activos ejecutan sus scrapers cada 6 a 24 horas a través de GitHub Actions o un cron externo. La cadencia exacta generalmente está documentada en el README. También puedes verificar la pestaña de Actions del repositorio: busca un flujo de trabajo programado y cuándo se ejecutó con éxito por última vez. Establece el intervalo de actualización de tu reproductor para que coincida, no más rápido.

¿Por qué mis canales no muestran datos de programas después de agregar el EPG?

Casi seguramente un desajuste de tvg-id. Abre tu archivo M3U y encuentra eltvg-id valor para un canal que sabes que debería tener datos. Luego abre el archivo XMLTV y busca un<channel id="..."> elemento que debería corresponder a él. Si las cadenas no coinciden exactamente — mismo caso, mismos caracteres — el reproductor no tiene forma de conectarlos. Corrige eltvg-id en el M3U para que coincida con el ID de canal XMLTV, o encuentra un EPG que use el mismo esquema de ID que usa tu M3U.

¿Qué formato XMLTV es compatible con la mayoría de los reproductores IPTV?

El formato estándar XMLTV DTD es lo que prácticamente todos los reproductores esperan. Tanto los archivos no comprimidos.xml y gzipped.xml.gz son ampliamente compatibles: la mayoría de los reproductores modernos manejan gzip de forma transparente. Un puñado de reproductores más antiguos requiere que la URL termine explícitamente en.xml o.xml.gz y no seguirán redirecciones que cambien la extensión, así que usa URLs directas en lugar de enlaces acortados.

¿Puedo combinar múltiples EPG de países en un solo archivo?

Sí. El formato XMLTV tiene una única raíz<tv> que contiene todos los<channel> y<programme> elementos. Para fusionar dos archivos: elimina el elemento raíz de todos menos uno, concatena los contenidos, asegúrate de que los IDs de canal sean únicos entre las fuentes (por lo general lo son por diseño), y cierra la<tv> etiqueta al final. Elxml.etree.ElementTree de Python o elxmltv-util paquete manejan esto de manera limpia sin riesgos de manipulación manual de cadenas.

¿Qué pasa si el EPG de mi país en GitHub está desactualizado?

Primero, abre un problema en el repositorio describiendo exactamente qué está roto: qué país, qué canales y cuán obsoletos están los datos. Si tienes alguna habilidad de scripting, observa cómo está estructurado un scraper de país existente que funcione y trata de replicarlo para el que está roto. Una solicitud de extracción con una solución que funcione se fusiona mucho más rápido que una queja. Como solución a corto plazo, busca en GitHub proyectos de un solo país que cubran tu región: a menudo hay proyectos más pequeños dedicados con mejor precisión para mercados específicos.

¿Qué tan grandes son los archivos XMLTV de múltiples países?

Una guía completa de 7 días que cubre más de 100 países típicamente ocupa entre 100 y 300 MB sin comprimir, bajando a 10-30 MB gzipped. En cajas de Android TV de gama baja (1-2 GB de RAM), cargar un archivo de 200 MB puede hacer que el reproductor se congele o se bloquee. Filtra el archivo hasta tu lista de canales real: 150 canales de un archivo de 200 MB a menudo producen un resultado de menos de 5 MB, que cualquier dispositivo maneja al instante.