Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas

sábado, 12 de septiembre de 2026

[Python] Quiet Stream

Aplicación TUI (Terminal User Interface) para gestionar y reproducir streams de audio y videos, construida con Textual, SQLModel, SQLite, python-vlc, yt-dlp y httpx.

## Funciones principales

- Gestión de streams y videos: agregar, editar y eliminar entradas.
- Reproducción integrada: streams de audio (URL directa) y videos (YouTube y similares vía yt-dlp).
- Controles de reproducción: anterior, siguiente, detener y volumen.
- Búsqueda y filtros: por nombre y por categoría.
- Importar / exportar JSON: backup y carga de listas, con omisión automática de duplicados por nombre o link.
- Validación de enlaces: comprueba si los streams responden; permite detener el proceso, seleccionar cuáles eliminar y confirmar.
- Temas Gruvbox Light / Dark: se alternan con Ctrl+T y la preferencia se guarda entre sesiones.
- Interfaz responsive: tablas y menú se adaptan al tamaño de la terminal.
- Persistencia local: los datos se guardan en SQLite (`streams.db`).

## Capturas de pantalla


 
 
 




## Requisitos

- Python 3.8+
- VLC Media Player instalado en el sistema

## Instalación

1. Clonar el repositorio:
 

git clone https://github.com/IsmaelHeredia/quiet-stream-python.git

cd quiet-stream-python

2. Instalar dependencias:

pip install -r requirements.txt

3. Ejecutar:

   ```bash
   python main.py
   ```

## Importación y exportación (Formato JSON)

Los respaldos exportados utilizan una lista con la siguiente estructura por cada elemento, la cual también se requiere para importar datos:

[
  {
    "nombre": "Mi stream",
    "link": "https://ejemplo.com/stream.mp3",
    "categorias": "rock, radio",
    "tipo": "stream"
  },
  {
    "nombre": "Video de ejemplo",
    "link": "https://www.youtube.com/watch?v=...",
    "categorias": "musica",
    "tipo": "video"
  }
]

 Link del proyecto 

sábado, 5 de septiembre de 2026

[FastAPI + Jinja2] Fenix Downloader

Una aplicación web moderna y ligera para descargar y convertir contenido de YouTube, orientada a un uso local y sencillo. Permite gestionar canciones en MP3, videos en MP4, listas de reproducción completas, búsqueda directa por nombre y conversión de archivos locales, con progreso en tiempo real y control total de cancelación.

## Stack Tecnológico

| Capa | Tecnologías |
|------|-------------|
| Backend | FastAPI + Jinja2 |
| Frontend | HTMX + Tailwind CSS + JavaScript |
| Extracción y media | yt-dlp + FFmpeg |

---

## Funcionalidades Principales

### Descarga desde YouTube

 
* Links sueltos: Soporte para uno o varios URLs simultáneos (canciones o videos).
* Playlists: Lectura y descarga secuencial de listas completas (audio o video).
* Exportar playlist: Genera un archivo .txt con todos los links de una playlist, sin necesidad de descargar el contenido.
* Búsqueda integrada: Búsqueda directa por nombre de canción (obteniendo el primer resultado relevante).
* Calidad de video: Selección entre 720p, 1080p (recomendado) o máxima calidad (evitando formatos AV1 pesados cuando aplica).
* Audio en español: Preferencia automática de doblaje si YouTube lo ofrece.
* Subtítulos optimizados: Español (oficial o automático) con fallback a inglés.
* Cookies opcionales: Soporte para formato Netscape (data/cookies.txt o variables de entorno) para evitar restricciones de edad, rate limits o bloqueos por región.

### Conversión Local


* MP4 / Video / Audio a MP3: Conversión flexible indicando la ruta del archivo en disco, con nombre y carpeta de salida personalizados, acompañado de una barra de progreso impulsada por FFmpeg.

### Experiencia de Uso

 
* Interfaz dinámica (HTMX): Sin recargas de página completas; incluye consolas de logs y barras de progreso independientes por cada job.
* Cancelación cooperativa: Un único botón inteligente para iniciar y detener la descarga o conversión en curso.
* Tema Claro / Oscuro: Diseño elegante con acentos verdes estilo *Gruvbox*, patrones de fondo sutiles y formularios totalmente adaptados.
* Toasts y alertas sonoras: Notificaciones visuales y de audio al finalizar una tarea (éxito, error, parcial o cancelada), incluso con la pestaña en segundo plano.
Omitir duplicados: Si el archivo final (MP3/MP4) ya existe en el disco, la descarga se omite automáticamente.

---

## Capturas de Pantalla 

 


---

## Requisitos del Sistema

* Python: 3.10+ (se recomienda 3.11+)
* yt-dlp: Con soporte para extensiones (yt-dlp-ejs)
* Runtime de JavaScript (para YouTube moderno): Deno 2.3 o superior (o Node 22 o superior)
* Opcional: curl_cffi para simulación de cliente (impersonation y reducción de errores 403)
* FFmpeg y FFprobe: Disponibles en el PATH del sistema

---

## Instalación y Configuración

### 1. Clonar el repositorio


git clone https://github.com/IsmaelHeredia/fenix-downloader-fastapi-jinja2.git
cd fenix-downloader-fastapi-jinja2
 

 ### 2. Crear entorno virtual e instalar dependencias

python -m venv .venv
# En Linux/macOS:
source .venv/bin/activate
# En Windows (CMD/PowerShell):
# .venv\Scripts\activate

pip install -U pip
pip install -r requirements.txt
pip install -U "yt-dlp[default]" yt-dlp-ejs "curl_cffi>=0.10"


### 3. Instalar Deno (Recomendado para la extracción de YouTube)

 
curl -fsSL https://deno.land/install.sh | sh

(Reiniciá tu terminal y comprobá la instalación con `deno --version`).

### 4. Ejecutar en modo desarrollo

uvicorn app.main:app --reload --host 127.0.0.1 --port 8000

Abrí en tu navegador: http://127.0.0.1:8000

 

Link del proyecto  

viernes, 28 de febrero de 2025

[Python + Tkinter] Fast Music 1.0

En este proyecto se hizo un completo reproductor de música en Python usando ttkbootstrap para la interfaz gráfica, usa Sqlalchemy para trabajar con una base de datos Sqlite que gestiona la configuración y manejo de multimedia del programa.

Las funciones incorporadas son :

* Reproducción de música, videos y streams.
* Sincronización de toda la muisca usando Google Drive.
* Se pueden descargar uno o varios videos de youtube para convertir en MP3 o MP4 según se necesite.
* Permite descargar playlists completas de youtube y convertir en música o videos.
* El reproductor registra en la base de datos las ultimas playlists seleccionadas para cargarlas siempre al inicio de la aplicación.  

A continuación se muestran unas imágenes del programa en funcionamiento.

 






 

Para instalar las dependencias se necesita ejecutar el siguiente comando :

pip install -r requirements.txt

Ademas se tienen que crear las credenciales para el servicio "Google Drive API" en la URL https://console.cloud.google.com, una vez creado todo se descargan las credenciales y se guardan en el mismo directorio del programa con el nombre de client_secrets.json.

Una vez configurado todo, se puede ejecutar la aplicación app.py para iniciar el programa, cuando se inicie se debe cargar la ventana "Configuración" y configurar todos los directorios que se necesitan para escanear las canciones y videos, también es necesario especificar el directorio donde están guardadas las canciones en Google Drive y se deben configurar los directorios donde se van almacenar las canciones descargadas. Cuando todos esos datos estén configurados se podrá iniciar el escáner desde ese misma ventana y reproducir cualquier archivo multimedia que se necesite.

 

 Github

jueves, 31 de octubre de 2024

[Flask] Quick Launcher 1.0

En este proyecto se hizo un sistema para lanzar procesos en segundo plano que usa Flask con Bootstrap 5, usando MySQL para gestionar los datos de la aplicación. Esta pensando para gestionar servidores y facilitar los manejos de los comandos de cada uno, ya sean de proyectos de Laravel, NodeJS, Angular, React o cualquier otro. También incluye una función para que ejecute en el navegador la URL del proceso ejecutado después de un tiempo de espera asignado en el sistema.

Las funciones incorporadas son :

Inicio de sesión obligatorio para usar el sistema protegido con JWT.

Posibilidad de cambiar usuario y contraseña.

Posibilidad de cambiar el theme completo del sistema a un modo oscuro o claro.

Se puede agregar, editar y borrar procesos. En la sección de procesos se pueden gestionar las tareas de cada proceso.

En la página principal se listan todas los procesos registrados donde se pueden ejecutar y detener las tareas de cada uno. También hay una sección de logs donde se muestran los procesos activos con sus PID asociados y se pueden cerrar por tarea o por proceso.

A continuación se muestran unas imágenes del sistema en funcionamiento.







 


Para la correcta instalación del sistema se deben seguir los siguiente pasos.

En la carpeta principal se debe renombrar el archivo .env.example a solo .env y editar la configuración con los datos de tu conexión MySQL, el SECRET_KEY que seria la clave para generar el JWT.

Para instalar la librería de conexión a MySQL en Linux el comando debería ser :

sudo apt-get install python3-pymysql

De lo contrario si están usando Windows seria :

pip install PyMySQL

Posteriormente debemos terminar de instalar las dependencias con el siguiente comando :

pip install -r requirements.txt

Para ejecutar Flask en Windows se debe hacer de la siguiente manera :

python -m flask

De lo contrario si están usando Linux bastaría con usar simplemente el comando flask, teniendo en cuenta esto para ejecutar las migraciones de Flask deben ejecutar los siguientes comandos :

flask db init

flask db migrate

flask db upgrade

flask seed


Finalmente para iniciar el sistema se debe ejecutar este comando :

flask --app main.py --debug run --port=8888

 

Github




miércoles, 16 de octubre de 2024

[Django + Angular] Fast Music 1.0

En este proyecto se hizo un completo reproductor de música, las tecnologías que usa son Django como Backend y Angular como Frontend, la base de datos que usa es MySQL.

Las funciones incorporadas son :

Inicio de sesión obligatorio para usar el sistema protegido con JWT.

Posibilidad de cambiar usuario y contraseña.

Posibilidad de cambiar el theme completo del sistema a un modo oscuro o claro.

Se puede sincronizar una carpeta de Google Drive con la carpeta local del sistema donde se guardara toda la música, también se puede hacer el efecto contrario, que seria sincronizar la carpeta local del sistema con la carpeta de Google Drive.

Incorpora un escaneo de carpeta local donde se deben registrar todas las canciones guardadas cada una en su playlist o carpeta correspondiente.

En el reproductor de música se puede filtrar por playlists que serán guardadas en Redux, lo mismo seria para filtrar por nombre de canción. Ademas se pueden fijar canciones como favoritas lo que hará que se cree una playlist aparte al principio de la lista para poder localizar de una forma mas eficiente.

También incorpora un reproductor de estaciones o streams, en esa sección se pueden registrar, editar y borrar estaciones, para mayor comodidad incorpora un buscador por nombre que usa Redux. Ademas contiene las funciones de importar las estaciones en formato json, exportar las estaciones para descargar en formato json y la función de validar todas las estaciones para verificar su correcto funcionamiento y borrarlas en caso de no estén funcionando.

A continuación se muestran unas imágenes del sistema en funcionamiento.


 

Para la correcta instalación del sistema se deben seguir los siguiente pasos.

En la carpeta del Backend que sería "sistemaApi" se debe renombrar el archivo .env.example a solo .env y editar la configuración con los datos de tu conexión MySQL. También se debe editar el SECRET_KEY con tu propia clave, se puede generar una con el siguiente comando :

python3 -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'

Después se tienen que crear las credenciales para el servicio "Google Drive API" en la URL https://console.cloud.google.com, una vez creado todo se descargan las credenciales y se guardan en el mismo directorio del archivo manage.py con el nombre de client_secrets.json.

Una vez terminado todo se deben seguir estos pasos :

Para instalar las dependencias de Django :

pip install django djangorestframework djangorestframework_simplejwt

sudo apt install pkg-config

sudo apt-get install gcc libmysqlclient-dev python3-dev

pip install mysqlclient

pip install django-cors-headers

pip install python-dotenv


Para instalar el modulo necesario para sincronizar con Google Drive :

pip install PyDrive

Para realizar las migraciones de Django :

python3 manage.py makemigrations

python3 manage.py migrate


Para crear el usuario por defecto :

python3 manage.py createsuperuser

Finalmente para iniciar el servidor se debe ejecutar este comando :

python3 manage.py runserver 7777

En la carpeta del Frontend que sería "sistemaFrontend" se debe ejecutar el siguiente comando para instalar las dependencias :

npm install

En esa misma carpeta deben ir al directorio "environments" para modificar los archivos environment.ts reemplazando las variables "apiUrl" y "filesUrl" por la ruta de su servidor Backend.

Finalmente para iniciar el servidor se debe ejecutar este comando :

npm run start


Github



domingo, 2 de junio de 2024

Video Manager 1.0

Este proyecto seria un script hecho en Python con una versión GUI aparte con las opciones mas importantes. La mayoría de las funciones están orientadas a videos de YouTube.

En el caso del script, los comandos para su uso serian : 

-download-video : Se pide como argumento el link del video para descargar en formato en MP4, se puede combinar con -output-name.

-download-song : Se pide como argumento el link el video para descargar en formato MP3, se puede combinar con -output-name.

-download-videos : Se pide como argumento un archivo con una lista de links para descargar los videos en formato MP4.

-download-songs : Se pide como argumento un archivo con una lista de links para descargar en formato MP3.

-convert-to-mp3 : Se pide como argumento la ubicación local de un video para convertirlo en MP3, se debe combinar con -output-name para guardar la canción.

-findsong-and-download : Se pide como argumento el nombre de la canción para buscar en Google y posteriormente descargar en formato MP3.

-findsongs-and-download : Se pide como argumento un archivo con una lista de nombres para buscar en Google y descargar en formato MP3.

-read-playlist : Se pide como argumento el link de la playlist para listar los links correspondientes, se debe combinar con el comando -output-name para fijar el nombre del archivo en el que se guardara los resultados.

-download-playlist-videos : Se pide como argumento el link de la playlist para descargar todos los videos en formato MP4.

-download-playlist-songs : Se pide como argumento el link de la playlist para descargar todos los videos en formato en MP3.

-output-name : Se pide como argumento el nombre con el que se guardara el archivo, tiene que ser solo el nombre, sin extensión.

-output-folder : Se pide como argumento el nombre de la carpeta en el que se guardara, si no existe, la crea, esta opción se puede combinar con todas las funciones en el que se descargan videos o canciones.

En la versión GUI solo se permite descargar videos y canciones con la opción de elegir nombre y carpeta. Ademas al iniciar detectara si en el portapapeles hay un link válido para insertarlo directamente en el textbox de Link.

El proyecto fue pensado para usar en Windows por lo que todas las descargas se guardaran en las carpetas "Música" y "Vídeos", la subcarpeta se llamara "Video_downloads", el script mismo detectara si es una canción o un video y lo guardara en su correspondiente carpeta.

Unas imágenes de ejemplo de uso para cada versión : 





Github

domingo, 10 de septiembre de 2023

Generador de tutoriales 1.1

Un programa hecho en Django con VueJS para generar tutoriales para canciones de guitarra, primero se crea un nuevo tutorial, para después ir a la sección de capturas, cargar el video y realizar capturas de imagen con descripción que se irán guardando, las capturas se pueden editar, ordenar y borrar. Una vez hecho este proceso se va a la sección de generar y se mostraran las imágenes con las descripciones ordenadas en una galería que permite mostrar las imágenes con las aclaraciones de cada una.

El proyecto ha sido actualizado a su version 1.1 y ahora puede buscar por título ademas de filtrar por dificultad y genéro. Tambien puede mostrar estadísticas que muestran cuantos tutoriales hay por dificultad y genéro.

Si ejecutan el proyecto por primera vez deben crear la base de datos SQLite con los siguientes comandos : 

manage.py makemigrations

manage.py migrate 

Para ejecutar el proyecto se debe usar el comando : 

manage.py runserver 9999

Unas imágenes :






Github

sábado, 20 de mayo de 2023

Generador de tutoriales 1.0

Un programa hecho en Django con VueJS para generar tutoriales para canciones de guitarra, primero se crea un nuevo tutorial, para después ir a la sección de capturas, cargar el video y realizar capturas de imagen con descripción que se irán guardando, las capturas se pueden editar, ordenar y borrar. Una vez hecho este proceso se va a la sección de generar y se mostraran las imágenes con las descripciones ordenadas en una galería que permite mostrar las imágenes con las aclaraciones de cada una.

Para ejecutar el proyecto se debe usar el comando "manage.py runserver 9999".

Unas imágenes : 






Github

[Python] Quiet Stream

Aplicación TUI (Terminal User Interface) para gestionar y reproducir streams de audio y videos, construida con Textual, SQLModel, SQLite, py...