Compartir videos con tu co-equiper

Viajamos mucho y muchas veces tenemos poca conectividad a internet. Entonces, necesitamos una forma de poder descargar la mayor cantidad de datos de internet cuando sí tenemos internet.

Para eso, hemos implementado varias ideas pequeñas que nos permiten trabajan Offline y sincronizarnos cuando estamos Online. Por ejemplo, muchas veces queremos bajar videos para ver cuando no tenemos internet.

Acá viene la cuestión. Siempre pasa que nos decimos: "¿Bajaste el video que te pedí?" y siempre tiene la misma respuesta: "¡Uh! Me re colgué". Finalmente, nunca tenemos nada para ver.

¡Basta! ¡Me cansé! Necesito hacer un programa que me ayude. Para eso combiné: Dropbox + youtube-dl + bash magic. Primero, creamos un archivo llamado urls-videos.txt y lo compartimos con Dropbox entre los dos. Cada uno agrega, cuando quiere/puede, un link al video que quiere bajar (uno por línea). Luego, en mi máquina me hice un one-line-bash-script que lo que hace es:

  1. Tomar la primera línea
  2. Bajar el video
  3. Borrar la primera línea (si tuvo éxito la descarga)
  4. Volver al primer paso

El script:

URLS=urls-videos.txt
youtube-dl --restrict-filenames --retries 50 --continue \
           --write-sub --sub-lang "en,es" --batch-file $URLS \
           --exec "tail -n +2 $URLS > /tmp/urls.txt ; mv /tmp/urls.txt $URLS ; ls"

La descripción:

--restrict-filenames:
  restringe el nombre de los archivos a algo más compatible (sin caracteres raros)
--retries 50: intenta un máximo de 50 veces
--continue: resume la descarga en caso de haberse cancelado por cualquier motivo
--write-subs: escribe los subtítulos en un archivo
--sub-lang: selecciona solo los subtítulos de los lenguajes "English" y "Español"
--batch-file: utiliza un archivo como entrada de urls a descargar
--exec: (acá está la magia) mediante tail -n +2 elimino la primera línea del archivo de urls y lo guardo en un archivo temporal. Luego, muevo ese archivo temporal al archivo original de urls (urls-videos.txt). Finalmente, pongo un ls porque youtube-dl concatena el nombre del archivo recién descargado, y como yo no quiero hacer nada con ese archivo, simplemente lo muestro en pantalla.

Así, cuando tengo internet se actualiza (con toda la magia de Dropbox) el archivo urls-videos.txt que yo modifiqué en mi máquina y también el que modificó Johanna. Después yo corro ese simple script y comienza el proceso.

¡Tenemos videos para ver! (sobre todo charlas TEDx)

Comentarios

Comments powered by Disqus