Binary Coffee

4 opciones para programar descargas

bash hack internet
Este post es parte de la serie para hacer más eficiente el consumo de Internet, consumo que los cubanos debemos estar optimizando casi de manera permanente. Por todos es conocido que hay ciertos horarios donde el costo de la conexión es más barata ya que el uso del ancho de banda en el canal compartido es menor. Normalmente estos horarios son de madrugada. Si la descarga requiere monitoreo nuestro pues no nos queda más remedio que estar despiertos mientras se hace y llevar control del proceso, pero en muchas ocasiones no es necesario tal control por parte del usuario, así que podemos programarla con alguna herramienta que la haga por nosotros en el horario especificado y así dedicamos la noche a dormir y cuidar nuestro cuerpo y cerebro :) Veremos 4 opciones para programar en el futuro una descarga de un archivo desde Internet. Dos de maneras gráficas y dos por comandos en la consola. 1. [Free Download Manager](https://www.freedownloadmanager.org) Con esta aplicación multiplataforma es muy cómodo programar la descarga, en la ventana para añadir la URL a descargar marque la opción Scheduler o Programador y seleccione la hora de inicio de la descarga, si es un archivo muy grande y no deseas que la descarga continue después de cierto horario pues también puedes indicarle a este gestor de descargas que la ponga en pausa si al llegar a ese momento todavía no ha culminado la descarga. ![](https://api.binary-coffee.dev/uploads/1867001c4f974c3cbb6dc4b2a2fd1659.jpg) En la imagen también vemos que esta herramienta nos permite programar descargas recurrentes, esto es útil cuando la misma URL es actualizada periódicamente con contenido que nos interesa. 2. [Advanced Download Manager](https://play.google.com/store/apps/details?id=com.dv.adm&hl=es) Con esta aplicación para Android también es simple programar una descarga. Cuando se añade se marca el planificador y se selecciona el intervalo de horario deseado dónde la app estará descargando. ![](https://api.binary-coffee.dev/uploads/ae8531dc0bc148e59a5775ffa7edf649.jpg) Esta app la he usado par de veces para descargar usando los datos móviles en el horario de la madrugada cuando la única alternativa posible en Cuba descuenta los megas al 50%. Debe dejar los datos móviles encendidos, no hay manera de que un app pueda encender o apagar por sí sola los datos, en ocasiones el primer archivo de la lista da error y no se descarga, eso puede deberse a que la radiobase no mantiene despierta la conexión con el dispositivo si no hay actividad por mucho tiempo, por lo que es acconsejable que se añada al inicio de la lista un archivo de poco espacio como "señuelo" para que al momento de iniciarse las descargas programadas ese archivo active la conexión entre el dispositivo y la radiobase. 3. Desde la consola combinando los comandos wget y cron Esta opción es la más rica y dónde más variantes puedes probar debido que es la más cercana a las habilidades de programación. Traigo dos formas, una usando `crontab -e` y la otra usando el comando `sleep`. Primeo veamos un resumen de estos comandos: ``` $ whatis wget crontab wget (1) - The non-interactive network downloader. crontab (1) - maintains crontab files for individual users crontab (1p) - schedule periodic background work crontab (5) - files used to schedule the execution of programs ``` Como vemos Linux tiene un demonio llamado cron que permite programar tareas a ejecutarse periodicamente. Para ello ejecutamos ``` $ crontab -e ``` Esto nos abre un editor en el cual ponemos ``` 0 2 * * * wget [URL] ``` Reemplaza [URL] por el archivo que quieras descargar y cierra el editor guardando lo cambios. La expresión `0 2 * * *` le dice a cron que ejecute el comando `wget` a las 2am cada día. Para más información sobre como construir expresiones de cron puede auxiliarse de herramientas como [cron-expression-generator](https://www.freeformatter.com/cron-expression-generator-quartz.html). 4. Combinando los comandos sleep y youtube-dl Supongamos ahora que deseamos descargar un video de youtube. Usaremos ahora `youtube-dl` como alternativa a `wget`, ya que con `wget` sería más complicado obtener la URL correcta del video a descargar. Pero antes sería recomendable que leyeras este [post](https://binary-coffee.dev/post/como-descargar-videos-de-youtube-desde-la-consola) que explica como instalar `youtube-dl`. Entonces lo haremos dejando la consola dormida cierto tiempo precalculado y ejecutando el comando que hace la descarga. Ejemplo, supongamos que son las 9pm y queremos que a las 2am comiece a descargarse este video [https://www.youtube.com/watch?v=VDZQKD5BNYY](https://www.youtube.com/watch?v=VDZQKD5BNYY) ``` $ sleep 5h ; youtube-dl https://www.youtube.com/watch?v=VDZQKD5BNYY [youtube] VDZQKD5BNYY: Downloading webpage [download] Destination: How To Clone Websites With wget _ Linux-VDZQKD5BNYY.mp4 [download] 100% of 17.31MiB in 00:15 ``` Con `sleep 5h` la consola se queda dormida por 5 horas y luego ejecuta el comando a continuación del punto y coma. Otros ejemplos con `sleep`: ``` $ whatis sleep sleep (1) - delay for a specified amount of time $ sleep 10 # espera 10 segundos $ sleep 30m # espera 30 minutos $ sleep 4h; sleep 20m # espera 4 horas y 20 minutos $ sleep 1d; sleep 120m # espera 26 horas o un dia y dos horas ``` Bueno, hasta aquí este post, espero que sea de utilidad en su realación con el consumo de Internet. Para otro post estaré explicando como usar dos bots de telegram para obtener la URL descargable de videos de youtube y de esa manera usar cualquier gestor de descarga, así no depender de `youtube-dl`.
Opiniones