Skip to content

Aethercvlt/EasIPTV-Player

Repository files navigation

EasIPTV Player

EasIPTV Logo

Aplicación para Android TV que permite visualizar streams de IPTV con una interfaz estilo Netflix, soporte para EPG (guía de programación), múltiples fuentes de listas M3U y sistema de priorización de calidad de streams.

✨ Estado Actual del Proyecto

✅ Implementadas

  • ✅ Arquitectura Clean Architecture + MVVM
  • ✅ Inyección de dependencias con Hilt
  • ✅ Base de datos local con Room
  • ✅ Parser de listas M3U/M3U8/XSPF
  • ✅ Parser de EPG (XMLTV)
  • ✅ Reproductor basado en ExoPlayer (Media3 1.8.0)
  • ✅ Interfaz optimizada para Android TV con D-pad
  • ✅ Soporte para múltiples protocolos (HLS, DASH, RTSP, HTTP)
  • ✅ Navegación principal con menú lateral estilo Netflix
  • ✅ Design System completo (tema oscuro, tipografía, estados de focus)
  • ✅ Componente ChannelCard reutilizable
  • ✅ Filas horizontales de contenido (HorizontalRow)
  • ✅ Pantalla Home con últimos canales vistos
  • ✅ Pantalla de listado de canales por categoría
  • ✅ Pantalla de guía EPG tipo grid
  • ✅ Pantalla de ajustes general con pestañas (#131)
  • ✅ Gestión de fuentes de listas y EPG
  • ✅ Manejo de errores y reconexión automática
  • ✅ Importación y actualización de EPG
  • ✅ Borrado en cascada de canales al eliminar listas
  • ✅ Sistema de upsert para evitar duplicados de canales
  • ✅ Scroll infinito/virtualizado en guía EPG
  • ✅ Carga automática de programación EPG
  • ✅ Overlay del reproductor con D-pad
  • ✅ Ajuste automático de video a pantalla
  • ✅ Navegación correcta al pulsar atrás
  • ✅ Actualización reactiva de Home tras reproducir
  • ✅ Contador de streams en tiempo real
  • ✅ Menú contextual consistente en pantallas
  • ✅ Logos de canales en guía EPG
  • ✅ Parseo de entidades HTML en títulos EPG
  • ✅ Secciones de televisión en directo y favoritos en Home
  • ✅ Soporte para Xtream Codes API (#48)
  • ✅ Almacenamiento seguro de credenciales (AES-256-GCM + Keystore)
  • ✅ Renovación automática de tokens de autenticación
  • ✅ Indicadores de estado de autenticación en UI
  • ✅ Importación automática de EPG desde servidores Xtream
  • ✅ Asociación de canales EPG con streams M3U (#36)
  • ✅ Asociación de múltiples streams a un canal (#30)
  • ✅ MediaInfo del stream en tiempo real (#31)
  • ✅ Análisis de calidad de streams bajo demanda (#32)
  • ✅ Priorización de streams por calidad (#33)
  • ✅ Mostrar MediaInfo de streams en gestión (#71)
  • ✅ Soporte para múltiples pistas de audio (#18)
  • ✅ Subtítulos integrados (DVB, CEA-608/708, WebVTT) (#19)
  • ✅ Historial de fallos de streams con limpieza automática (#34)
  • ✅ Mejoras del sistema de favoritos (import/export, edición) (#100)
  • ✅ Búsqueda expandida por categorías y sistema de ocultar contenido (#118)
  • ✅ EPG del reproductor con programación completa (#117)
  • ✅ Previsualización de streams antes de asociar (#111)
  • ✅ Confirmación de salida al pulsar atrás en Home (#110)
  • ✅ Spinners de carga en popups del reproductor (#116)
  • ✅ Soporte para codec EAC3/Dolby Digital Plus (#80)
  • ✅ Soporte VOD completo: películas y series Xtream (#44)
  • ✅ Sistema de grabaciones completo:
    • Grabación instantánea de streams (#39)
    • Programación de grabaciones desde EPG (#40)
    • Soporte para almacenamiento externo (USB, SMB/CIFS) (#41)
    • Biblioteca de grabaciones (#42)
  • ✅ Backup y restauración (#47)
  • ✅ Internacionalización ES/EN (#50)
  • ✅ Ajustes de reproducción y calidad (#49)

🔄 En Desarrollo

  • 🔄 Mejoras de interfaz y UX (#128)

📋 Planificadas

  • 📋 Combinar múltiples listas en vista unificada (#45)
  • 📋 Soporte para ratón, teclado y pantalla táctil (#25)
  • 📋 Parser de EPG en formatos alternativos (#8)
  • 📋 Sistema de favoritos con categorías personalizadas (#43)

📊 Progreso del Proyecto

Categoría Completadas Total Progreso
Issues Cerrados 155 165+ 94%
Funcionalidades Core - Funcional
Reproductor - Funcional
EPG - Funcional
UI/UX - Funcional
Grabaciones - Funcional
VOD - Funcional
Backup/Restore - Funcional

🛠️ Stack Tecnológico

Componente Tecnología Versión
Lenguaje Kotlin 1.9.24
Min SDK 29 (Android 10) -
Target SDK 36 (Android 15) -
Arquitectura Clean Architecture + MVVM -
DI Hilt (Dagger) 2.52
Base de datos Room (SQLite) 2.6.1
Networking Retrofit + OkHttp 2.11.0
Reproductor ExoPlayer (Media3) 1.8.0
Async Kotlin Coroutines + Flow 1.8.1
UI Jetpack Compose for TV + Leanback BOM 2024.11.00
Build Gradle + AGP 8.9 / 8.5.2

📁 Estructura del Proyecto

app/src/main/java/com/easiptv/player/
├── data/                    # Capa de datos
│   ├── local/
│   │   ├── database/        # Room: DAOs, Entities, Database
│   │   └── preferences/     # DataStore preferences
│   ├── remote/
│   │   ├── api/             # Retrofit services
│   │   └── parser/          # Parsers M3U, XMLTV, XSPF
│   ├── repository/          # Implementaciones de repositorios
│   └── worker/              # WorkManager workers
├── di/                      # Módulos de Hilt
├── domain/                  # Capa de dominio
│   ├── model/               # Modelos de dominio
│   ├── repository/          # Interfaces de repositorios
│   └── usecase/             # Casos de uso
└── ui/                      # Capa de presentación
    ├── categories/          # Pantalla de categorías
    ├── channels/            # Gestión de canales
    ├── common/              # Componentes comunes
    ├── epg/                 # Guía de programación
    ├── home/                # Pantalla principal
    ├── main/                # Navegación principal
    ├── player/              # Reproductor de video
    ├── settings/            # Configuración
    └── theme/               # Design System

🚀 Instalación

Requisitos previos

  • Android Studio Koala (2024.1.1) o superior
  • JDK 17
  • Android SDK 36

Pasos

  1. Clona el repositorio:

    git clone https://github.com/alpargataman/EasIPTV-Player.git
    cd EasIPTV-Player
  2. Abre el proyecto en Android Studio

  3. Sincroniza las dependencias de Gradle

  4. Conecta un dispositivo Android TV o inicia un emulador:

    # Listar emuladores disponibles
    emulator -list-avds
    
    # Iniciar emulador de TV
    emulator -avd Television_1080p
  5. Ejecuta la aplicación (Run > Run 'app')

Build desde línea de comandos

# Build debug
./gradlew assembleDebug

# Instalar en dispositivo conectado
adb install -r app/build/outputs/apk/debug/app-debug.apk

# Lanzar la app
adb shell am start -n com.easiptv.player.debug/com.easiptv.player.ui.main.MainActivity

📖 Uso

  1. Añadir una lista M3U: Ve a Configuración > Fuentes > Añadir nueva fuente
  2. Añadir EPG: Ve a Configuración > EPG > Añadir fuente XMLTV
  3. Navegar canales: Usa el D-pad para navegar por categorías y canales
  4. Ver EPG: Accede a la guía de programación desde el menú lateral
  5. Reproducir: Selecciona un canal y presiona OK para reproducir

🧪 Testing

# Ejecutar tests unitarios
./gradlew test

# Ejecutar tests de instrumentación
./gradlew connectedAndroidTest

🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor:

  1. Revisa los issues abiertos
  2. Crea un fork del repositorio
  3. Crea una rama para tu feature: git checkout -b feature/issue-XX-descripcion
  4. Haz commit de tus cambios siguiendo Conventional Commits
  5. Abre un Pull Request

Convención de ramas

  • feature/issue-XX-descripcion - Nueva funcionalidad
  • fix/issue-XX-descripcion - Corrección de bug
  • refactor/descripcion - Refactorización de código

📋 Roadmap

MVP (v1.0) - ✅ Completado

  • Reproductor funcional con ExoPlayer (Media3 1.8.0)
  • Gestión de fuentes M3U/M3U8/XSPF y EPG
  • Guía de programación EPG tipo grid virtualizada
  • Navegación optimizada para D-pad
  • Sistema de favoritos con import/export
  • Priorización de streams por calidad
  • Asociación de streams a canales EPG

v1.1 - ✅ Completado

  • Sistema de grabaciones completo (instantáneas y programadas)
  • Múltiples pistas de audio
  • Subtítulos integrados (DVB, CEA-608/708, WebVTT)
  • Internacionalización (ES/EN)
  • Autenticación Xtream Codes API
  • Backup y restauración

v1.2 - 🔄 En Progreso

  • Soporte VOD completo (películas y series Xtream)
  • Pantalla de configuración con pestañas
  • Búsqueda avanzada por categorías
  • Mejoras de UX e interfaz
  • Soporte ratón/teclado/táctil

Consulta los Issues del proyecto para ver todas las tareas pendientes.

📄 Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

👥 Autores


Hecho con ❤️ para la comunidad de Android TV

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published