Skip to content
fabiombPublic

About

Sistema de directorio de canales de Acestream

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

AceList

Catálogo local de enlaces Acestream. Valida el Content ID, comprueba si hay peers, intenta capturar una imagen del stream y permite abrir el canal en VLC. Guarda la fecha de cada verificación porque los enlaces mueren y se reemplazan.

Versión 1.5.0. Ver CHANGELOG.md y plan.md.

Funcionalidades

  • Alta de canales por Content ID o enlace acestream://, con verificación automática. Sin título, se usa el nombre con el que se publica el stream.
  • Importación masiva: un enlace por línea, una lista M3U o un archivo exportado desde AceList.
  • Explorador de fuentes: listas en la web o archivos del equipo (M3U, enlaces o exportaciones de AceList) que se leen para buscar en ellas y agregar al catálogo los canales elegidos. AceList no trae fuentes: las agrega cada usuario.
  • Buscador en la barra superior: muestra los canales del catálogo que coinciden mientras se escribe.
  • Exportación del catálogo (o de lo filtrado) a un archivo JSON con los datos de cada canal, para respaldo o para llevarlo a otro equipo.
  • Verificación con el engine de Ace Stream: estado, peers y una captura del stream con ffmpeg, de la que se detecta la resolución (480p, 720p, 1080p, 4K u otra).
  • Historial de verificaciones con fecha y captura de cada una.
  • Re-verificación de un canal o de todos los del listado filtrado, en segundo plano y con progreso, y regeneración de capturas.
  • Listado con orden (título, última verificación, peers, estado) y filtros (texto, categoría, idioma, país, estado, resolución), guardables en marcadores, y botón para copiar el hash.
  • Galería tipo Netflix: los canales en tarjetas con su captura, agrupados por categoría, con etiquetas de resolución, categoría, idioma y país.
  • Edición y borrado con confirmación; categoría, idioma y país por canal.
  • Botón para abrir el canal en VLC.
  • Ajustes con autodetección de VLC, ffmpeg y el engine, y prueba de conexión.

Requisitos

  • Windows 10 u 11 de 64 bits.
  • Ace Stream Media instalado (su engine responde en http://127.0.0.1:6878). AceList puede abrirlo con el botón Iniciar de la barra superior.
  • VLC para reproducir.
  • ffmpeg para las capturas (opcional: sin ffmpeg los canales se verifican igual, sin imagen).

No hace falta instalar Python: el ejecutable lo lleva dentro.

Instalación

  1. En la página de releases, descarga AceList-<versión>-win64.zip.
  2. Descomprímelo donde quieras, por ejemplo en Documentos\AceList.
  3. Haz doble clic en AceList.exe.

Se abre una consola que muestra lo que hace AceList y, cuando está listo, el navegador en http://127.0.0.1:8000/. Deja la consola abierta mientras lo uses; ciérrala para salir. Si AceList ya estaba abierto, solo se abre el navegador. Si el puerto 8000 lo usa otro programa, AceList toma el siguiente libre y lo indica en la consola.

Aviso de Windows la primera vez

AceList todavía no está firmado digitalmente, así que la primera vez Windows puede mostrar "Windows protegió su PC" (SmartScreen). Es el aviso habitual para programas que aún no son conocidos, no un diagnóstico de virus. Para abrirlo:

  1. Pulsa Más información.
  2. Pulsa Ejecutar de todos modos.

Para comprobar que el zip es el original, compara su huella con la del archivo .sha256 publicado junto a él:

Get-FileHash .\AceList-1.3.0-win64.zip -Algorithm SHA256

Tus datos

La base de datos y las capturas se guardan en %LOCALAPPDATA%\AceList (escribe esa ruta en la barra del Explorador para abrirla), no en la carpeta del programa. Para hacer una copia de seguridad, copia esa carpeta o usa Exportar en el listado.

Actualizar

Cierra AceList, borra la carpeta del programa y descomprime la versión nueva en su lugar. Tus canales siguen en %LOCALAPPDATA%\AceList y la versión nueva actualiza la base de datos sola al arrancar.

Si usabas la versión con start.bat

Esa versión guarda los datos en la carpeta data\ del código. Para llevarlos al ejecutable, una de estas dos opciones:

  • Exportar e importar: en la versión vieja, Exportar en el listado; en el ejecutable, sube el archivo en Importar. Se pasan los canales con todos sus datos, pero no el historial ni las capturas.
  • Copiar la carpeta: con las dos versiones cerradas, copia el contenido de data\ (acelist.db y screenshots\) a %LOCALAPPDATA%\AceList. Se pasa todo, incluido el historial.

Opciones

.\AceList.exe --port 8080      # usar ese puerto
.\AceList.exe --no-browser     # no abrir el navegador

Desinstalar

Borra la carpeta del programa. Si tampoco quieres conservar tus canales, borra %LOCALAPPDATA%\AceList.

Desde el código

Si prefieres ejecutarlo desde el código fuente (necesita Python 3.11 o superior):

  1. Descarga o clona el repositorio.
  2. Haz doble clic en start.bat.

La primera vez crea el entorno virtual e instala las dependencias (tarda un minuto). Después aplica las migraciones, arranca el servidor y abre el navegador. Los datos quedan en la carpeta data\ del repositorio. Desde PowerShell, .\start.ps1 -Port 8080 usa otro puerto y .\start.ps1 -NoBrowser no abre el navegador.

Uso

  1. Ace Stream. La barra superior indica si Ace Stream está abierto (verde) o apagado (rojo). Si está apagado, Iniciar lo abre y espera a que responda; mientras está apagado no se verifica nada, para no marcar los canales como fallidos por culpa del servidor.
  2. Ajustes. La primera vez, entra en Ajustes, pulsa Autodetectar rutas y luego Guardar. Con Probar conexión se comprueba que el engine de Ace Stream responde.
  3. Agregar un canal. En Canales → Agregar canal, pega un Content ID (40 caracteres hexadecimales) o un enlace acestream:// y, si quieres, título, categoría, idioma, país y resolución. Sin título se usa el nombre que publica el stream (sin las URLs que a veces trae); si el engine aún no lo conoce, queda un título provisional en cursiva que se completa en la siguiente verificación. Al guardar se verifica con el engine: puede tardar unos segundos.
  4. Importar varios. En Importar, pega una lista con un enlace por línea. El texto junto al enlace se usa como título (Partido - acestream://…), y en una lista M3U se usa el título de #EXTINF. El resumen indica qué se creó, qué estaba repetido y qué líneas no se entendieron. Los canales nuevos se verifican en segundo plano. Con Exportar (en el listado o la galería) se descarga un archivo con los datos de los canales que se ven; al subirlo en Importar en otro equipo, o en este, se suman solo los canales que falten, con su categoría, idioma, país, resolución y fecha de alta. El historial y las capturas no se exportan.
  5. Explorar fuentes. En Explorar → Fuentes, agrega una lista de la web con un nombre y su dirección (http:// o https://): una lista M3U, un texto con enlaces acestream:// o una exportación de AceList, de hasta 5 MB y 5000 canales. AceList la descarga al agregarla y cada vez que pulsas Actualizar; si una descarga falla, se conservan los canales de la anterior y se muestra el motivo. También puedes usar un archivo de tu equipo (.m3u, .m3u8, .txt o una exportación .json): arrástralo sobre el formulario, o sobre cualquier parte de Explorar, o elígelo con el selector. Toma el nombre del archivo si no escribes otro, y volver a subirlo con el mismo nombre reemplaza sus canales. En Explorar se busca por nombre, grupo (group-title de la M3U) o Content ID entre los canales de las fuentes activas, con Solo los que no tengo para ocultar los que ya están en el catálogo. Marca los que quieras y pulsa Agregar los elegidos: se crean con el nombre de la lista (o el del stream, si la lista no trae nombre), en la categoría elegida, y se verifican en segundo plano.
  6. Revisar el catálogo. El listado muestra la miniatura, la resolución, el estado y los peers de la última verificación, y hace cuánto fue (la fecha exacta al pasar el ratón). Haz clic en las cabeceras para ordenar y usa la barra de filtros; la URL guarda la vista. El texto busca en el título, la categoría y el Content ID. Desde cualquier página, el buscador de la barra superior (tecla /) muestra los primeros canales que coinciden mientras escribes; Enter abre el listado filtrado. El botón junto al hash lo copia. Verificar los N canales vuelve a comprobar la disponibilidad y los peers de lo que se ve, en segundo plano, con una barra de progreso; no toca las capturas. Regenerar capturas además saca una captura nueva de cada canal activo (y actualiza su resolución): tarda más y pide confirmación. Los canales nuevos obtienen su primera captura al agregarlos o importarlos.
  7. Galería. El selector Lista / Galería (o Galería en la barra superior) muestra los mismos canales como tarjetas con su captura, agrupadas por categoría. Usa los mismos filtros; el orden se elige en Ordenar por. Al pasar el ratón por una tarjeta aparece el botón para reproducir.
  8. Detalle. Al hacer clic en un título se ve la última captura, todos los datos y el historial de verificaciones. Desde allí se puede verificar de nuevo, sacar una nueva captura, abrir en el reproductor, editar o borrar. El historial muestra también el tamaño exacto de cada captura.
  9. Reproducir. Reproducir (en el listado) o Abrir en reproductor (en el detalle) inicia el stream en el engine y lo abre en VLC.

Estados de un canal

Estado Significado
Activo El engine descargó datos con al menos los peers mínimos configurados.
Sin peers El engine encontró el contenido pero no llegaron datos a tiempo. Puede revivir más tarde.
No encontrado El engine no pudo cargar el Content ID: el enlace probablemente murió.
Error No se pudo verificar (engine apagado, timeout, respuesta inesperada). Al pasar el ratón se ve el motivo.
Sin verificar Todavía no tiene ninguna verificación.

Configuración

Los valores de Ajustes se guardan en la base de datos y tienen prioridad. Las variables de entorno sirven de valores por defecto:

Variable Por defecto Uso
ACELIST_DATA_DIR %LOCALAPPDATA%\AceList (ejecutable) o data (código) Carpeta de la base de datos (acelist.db) y las capturas (screenshots/).
ACELIST_PORT 8000 Puerto local con start.bat; el ejecutable usa --port.
ACELIST_ENGINE_URL http://127.0.0.1:6878 URL del engine de Ace Stream.
ACELIST_ENGINE_TIMEOUT 15 Segundos de espera de cada petición al engine.
ACELIST_VLC_PATH autodetección Ruta de vlc.exe.
ACELIST_FFMPEG_PATH PATH Ruta de ffmpeg.exe.
ACELIST_SCREENSHOT_TIMEOUT 30 Segundos máximos para sacar una captura.
ACELIST_CHECK_CONCURRENCY 2 Verificaciones simultáneas en segundo plano.

Para hacer una copia de seguridad basta con copiar la carpeta de datos.

Seguridad

AceList es para uso local:

  • Escucha solo en 127.0.0.1 y rechaza peticiones dirigidas a otros nombres de host (protección contra DNS rebinding).
  • Rechaza envíos de formularios que vengan de otros sitios web (protección CSRF).
  • VLC y ffmpeg se ejecutan sin shell, con argumentos validados.

No hay usuarios ni contraseñas: no lo expongas a la red.

Solución de problemas

Síntoma Qué revisar
"Ace Stream apagado" en la barra superior Pulsa Iniciar, o abre Ace Stream a mano. Si no hay botón, indica la ruta de ace_engine.exe en Ajustes.
El indicador está en verde pero todo sale en "Error" En Ajustes, revisa la URL del engine con Probar conexión.
"No se encontró VLC" Instala VLC o indica la ruta de vlc.exe en Ajustes.
Canales activos sin captura ffmpeg no está instalado o no se encuentra: Autodetectar rutas en Ajustes o indica la ruta de ffmpeg.exe.
"Windows protegió su PC" al abrir AceList.exe Es SmartScreen con un programa sin firma: Más información → Ejecutar de todos modos (ver Aviso de Windows la primera vez).
El antivirus bloquea AceList.exe Algunos antivirus desconfían de los programas hechos con PyInstaller (falso positivo). Comprueba el SHA-256 del zip y añade una excepción para la carpeta de AceList.
La consola se cierra con un mensaje de error Léelo antes de pulsar Enter: suele ser que no hay puertos libres o que la carpeta de datos no se puede escribir.
El navegador no abre la página Mira en la consola la dirección que indica AceList (puede haber usado otro puerto) y ábrela a mano.
"Hace falta Python 3.11 o superior" (con start.bat) Instala Python desde python.org marcando Add python.exe to PATH, o usa el ejecutable.

Desarrollo

python -m venv .venv
.\.venv\Scripts\python -m pip install -e ".[dev]"
.\.venv\Scripts\ruff check .
.\.venv\Scripts\ruff format --check .
.\.venv\Scripts\pytest --cov        # falla por debajo del 95% de cobertura
.\.venv\Scripts\alembic upgrade head
.\.venv\Scripts\python -m app.main  # http://127.0.0.1:8000/

Los tests no necesitan el engine ni ffmpeg: el engine se simula con respx y nunca se contacta uno real.

Para compilar el ejecutable: pip install -e ".[build]" y python windows\build.py (ver docs/packaging.md). Al publicar una release en GitHub, el CI lo compila, lo prueba y adjunta el zip.

Stack: Python, FastAPI, SQLite + SQLAlchemy (Alembic), Jinja2 + HTMX, httpx, ffmpeg. Detalle y justificación en plan.md.

Hoja de ruta

El seguimiento se hace con issues de GitHub, etiquetados por fase (phase:N). Las siete fases de la versión 1.0 están completas.

Fase Objetivo Issues
0 Base del proyecto y spike del engine #1, #2, #3
1 Persistencia #4, #5
2 Verificación #6 a #10
3 Gestión de canales #11, #12
4 Interfaz #13 a #16
5 Reproducción y ajustes #17, #18
6 Calidad y cierre #19 a #22

Documentos

Licencia

MIT.

About

Sistema de directorio de canales de Acestream

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages