|
| 1 | +--- |
| 2 | +title: "Youtube y Twitch a Podcast en Docker" |
| 3 | +date: "2025-03-18" |
| 4 | +creation: "2025-02-20" |
| 5 | +description: "Como he creado un sencillo contenedor a partir del script yt2pcst.sh" |
| 6 | +thumbnail: "images/20250220_yt_tw_to_podcast_docker_00.jpg" |
| 7 | +disable_comments: true |
| 8 | +authorbox: false |
| 9 | +toc: false |
| 10 | +mathjax: false |
| 11 | +categories: |
| 12 | +- "computing" |
| 13 | +tags: |
| 14 | +- "bash" |
| 15 | +- "docker" |
| 16 | +draft: true |
| 17 | +weight: 5 |
| 18 | +--- |
| 19 | +Hace tiempo que uso unos sencillos scripts en bash para crear un podcast a partir del audio de unos cuantos canales de [Youtube] y [Twitch]. Ahora lo vamos a meter en un contenedor para que sea más fácil de migrar a otra máquina. |
| 20 | +<!--more--> |
| 21 | +Para [Youtube] uso [yt2pcst] y para [Twitch] hago lo mismo con [tw2pcst]. Básicamente la función de ambos es descargar vídeos del correspondiente servicio de streaming, convertirlos a audios, subirlos a un servidor y generar un feed para tratarlos como si de un podcast se tratase. La diferencia entre ambos es que para el caso de [Youtube] se descargan vídeos de varios canales mientras que para [Twitch] de sólo uno. |
| 22 | + |
| 23 | +> Se que debería dar una vuelta a ambos archivos y unirlos en uno. Para cuando tenga un rato libre... |
| 24 | +
|
| 25 | +Pero de esto ya he hablado en otros artículos así que ahora nos vamos a centrar en como unir ambos scripts en un contenedor docker que corra en nuestro servidor. |
| 26 | + |
| 27 | +### Estructura del proyecto |
| 28 | +Vamos a meter todos los archivos dentro de la carpeta "Sherlocast" y el árbol quedará como aparece a continuación. |
| 29 | + |
| 30 | +``` bash |
| 31 | +├── config |
| 32 | + └── rclone.conf |
| 33 | +├── data |
| 34 | + ├── twitch |
| 35 | + ├── jordillatzer |
| 36 | + ├── artwork.jpg |
| 37 | + ├── descargados.txt |
| 38 | + ├── feed.xml |
| 39 | + ├── items.xml |
| 40 | + └── mp3 |
| 41 | + └── yt2pcst |
| 42 | + ├── artwork.jpg |
| 43 | + ├── canales.txt |
| 44 | + ├── descargados.txt |
| 45 | + ├── feed.xml |
| 46 | + ├── items.xml |
| 47 | + └── mp3 |
| 48 | +├── docker-compose.yml |
| 49 | +├── Dockerfile |
| 50 | +├── .env |
| 51 | +├── scripts |
| 52 | + ├── start.sh |
| 53 | + ├── telegram_V2.sh |
| 54 | + ├── tw2pcst.sh |
| 55 | + └── yt2pcst.sh |
| 56 | +└── start_sherlocast.sh |
| 57 | +``` |
| 58 | + |
| 59 | +### Dockerfile |
| 60 | +Es la base de nuestro contenedor, selecciona la distribución base a utilizar, instala dependencias, crea directorios necesarios y lanza la aplicación de inicio. |
| 61 | + |
| 62 | +``` bash |
| 63 | +# Usar una imagen base de Ubuntu |
| 64 | +FROM ubuntu:22.04 |
| 65 | + |
| 66 | +# Evitar interacciones durante la instalación |
| 67 | +ENV DEBIAN_FRONTEND=noninteractive |
| 68 | +# Deshabilitar backups de rclone |
| 69 | +ENV RCLONE_BACKUP_DIR="" |
| 70 | + |
| 71 | +# Instalar dependencias necesarias |
| 72 | +RUN apt-get update && apt-get install -y \ |
| 73 | + python3 \ |
| 74 | + python3-pip \ |
| 75 | + python3-venv \ |
| 76 | + curl \ |
| 77 | + jq \ |
| 78 | + unzip \ |
| 79 | + ffmpeg \ |
| 80 | + id3v2 \ |
| 81 | + sudo \ |
| 82 | + && rm -rf /var/lib/apt/lists/* |
| 83 | + |
| 84 | +# Instalar yt-dlp |
| 85 | +RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp \ |
| 86 | + && chmod a+rx /usr/local/bin/yt-dlp |
| 87 | + |
| 88 | +# Instalar pipx y twitch-dl |
| 89 | +RUN python3 -m pip install --user pipx && \ |
| 90 | + python3 -m pipx ensurepath && \ |
| 91 | + /root/.local/bin/pipx install twitch-dl && \ |
| 92 | + ln -s /root/.local/bin/twitch-dl /usr/local/bin/twitch-dl |
| 93 | + |
| 94 | +# Verificar la instalación |
| 95 | +RUN which twitch-dl && \ |
| 96 | + twitch-dl --version |
| 97 | + |
| 98 | +# Instalar rclone |
| 99 | +RUN curl https://rclone.org/install.sh | bash |
| 100 | + |
| 101 | +# Crear directorios necesarios |
| 102 | +WORKDIR /app |
| 103 | +RUN mkdir -p /app/config /app/scripts /app/data /app/logs |
| 104 | + |
| 105 | +# Ejecutar el script directamente |
| 106 | +CMD ["/bin/bash", "/app/scripts/start.sh"] |
| 107 | +``` |
| 108 | + |
| 109 | +### start.sh |
| 110 | +Es el archivo al que llama el Dockerfile tras ser montado. Su misión es descargar los scripts de mi repositorio de Github copiarlos al volumen del contenedor y lanzarlos. Con esto realizar modificaciones en los scripts no implica tener que actualizar el contenedor y resulta muy últil en la fase de desarrollo. |
| 111 | + |
| 112 | +``` bash |
| 113 | +#!/bin/bash |
| 114 | + |
| 115 | +# Definir la URL del script y la ruta de destino |
| 116 | +SCRIPT_YT_URL="https://raw.githubusercontent.com/sherlockes/SherloScripts/refs/heads/master/bash/yt2pcst.sh" |
| 117 | +SCRIPT_YT_PATH="/app/scripts/yt2pcst.sh" |
| 118 | +SCRIPT_TW_URL="https://raw.githubusercontent.com/sherlockes/SherloScripts/refs/heads/master/bash/tw2pcst.sh" |
| 119 | +SCRIPT_TW_PATH="/app/scripts/tw2pcst.sh" |
| 120 | + |
| 121 | +# Crear la carpeta si no existe |
| 122 | +mkdir -p "$(dirname "$SCRIPT_YT_PATH")" |
| 123 | + |
| 124 | +# Descargar el script actualizado para youtube |
| 125 | +curl -fsSL "$SCRIPT_YT_URL" -o "$SCRIPT_YT_PATH" || { echo "Error al descargar el script."; exit 1; } |
| 126 | + |
| 127 | +# Dar permisos de ejecución |
| 128 | +chmod +x "$SCRIPT_YT_PATH" |
| 129 | + |
| 130 | +# Ejecutar el script principal de youtube |
| 131 | +"$SCRIPT_YT_PATH" |
| 132 | + |
| 133 | +# Descargar el script actualizado para twitch |
| 134 | +curl -fsSL "$SCRIPT_TW_URL" -o "$SCRIPT_TW_PATH" || { echo "Error al descargar el script."; exit 1; } |
| 135 | + |
| 136 | +# Dar permisos de ejecución |
| 137 | +chmod +x "$SCRIPT_TW_PATH" |
| 138 | + |
| 139 | +# Ejecutar el script principal de twitch |
| 140 | +"$SCRIPT_TW_PATH" |
| 141 | +``` |
| 142 | + |
| 143 | + |
| 144 | +![image-01] |
| 145 | + |
| 146 | +### Enlaces de interés |
| 147 | +- [enlace](www.sherblog.es) |
| 148 | + |
| 149 | +[Twitch]: https://www.twitch.tv |
| 150 | +[yt2pcst]: https://github.com/sherlockes/SherloScripts/blob/master/bash/yt2pcst.sh |
| 151 | +[tw2pcst]: https://github.com/sherlockes/SherloScripts/blob/master/bash/tw2pcst.sh |
| 152 | +[Youtube]: https://www.youtube.com |
| 153 | + |
| 154 | + |
| 155 | +[image-01]: /images/20250220_youtube_to_podcast_docker_01.jpg |
| 156 | + |
| 157 | + |
| 158 | + |
0 commit comments