2 Commits

Author SHA1 Message Date
1cf174e896 feat: add inclusion and exclusion filters for channel names in playlist generation
Some checks failed
CI/CD Pipeline / test-and-lint (push) Failing after 22s
CI/CD Pipeline / publish-container (push) Has been skipped
2026-02-02 16:23:45 +00:00
ab9ccd16aa feat: add .dockerignore to exclude unnecessary files from Docker builds
All checks were successful
CI/CD Pipeline / test-and-lint (push) Successful in 44s
CI/CD Pipeline / publish-container (push) Has been skipped
2026-02-02 16:17:38 +00:00
3 changed files with 57 additions and 1 deletions

30
.dockerignore Normal file
View File

@@ -0,0 +1,30 @@
# Control de versiones
.git
.gitignore
# Entornos virtuales y dependencias locales
.venv
venv
env
__pycache__
*.pyc
*.pyo
*.pyd
# Testing y calidad
.pytest_cache
.coverage
htmlcov
.ruff_cache
tests
# Configuración de IDE y dev
.vscode
.idea
.devcontainer
devcontainer.json
# Salidas de build
dist
build
*.egg-info

View File

@@ -24,6 +24,20 @@ class Settings(BaseSettings):
env_file=".env", env_file_encoding="utf-8", extra="ignore"
)
# Filtros por prefijo de nombre de canal
include_text: list[str] = Field(
default_factory=list,
description="Lista de textos obligatorios. Si se define, el canal DEBE contener al menos uno.",
)
exclude_text: list[str] = Field(
default_factory=list,
description="Lista de textos prohibidos. Si el canal contiene uno, se descarta.",
)
model_config = SettingsConfigDict(
env_file=".env", env_file_encoding="utf-8", extra="ignore"
)
# Instancia única de configuración
settings = Settings()

View File

@@ -61,7 +61,19 @@ class PlaylistManager:
stream_id = channel.get("stream_id")
icon = channel.get("stream_icon", "")
cat_id = channel.get("category_id", "")
# Filtros de inclusión/exclusión por prefijo de nombre
if settings.include_text:
if not any(
name.lower().startswith(inc_text.lower())
for inc_text in settings.include_text
):
continue
if settings.exclude_text:
if any(
exc_text.lower() in name.lower()
for exc_text in settings.exclude_text
):
continue
# Construir URL directa
stream_url = (
f"{settings.host}/live/{settings.username}/"