Skip to content

Commit 6559fc0

Browse files
committed
Update
1 parent 295cf18 commit 6559fc0

File tree

2 files changed

+158
-36
lines changed

2 files changed

+158
-36
lines changed

content/post/20250220_youtube_to_podcast_docker.md

-36
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
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

Comments
 (0)