8000 GitHub - Carht/file-downloader-lisp: Descargador de archivos de gran tamaño al estilo torrent, útil para conexiones lentas.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Carht/file-downloader-lisp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Descargador de archivos sobre HTTP

Motivo

Cuando tienes acceso a internet pero es muy lento, este binario te permite descargar grandes archivos (como imágenes ISO) al estilo torrent.

Puedes detener la descarga y reanudarla en el momento que desees.

Uso

./lisp-downloader url

# ejemplo
./lisp-downloader https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.7.0-amd64-netinst.iso

Ejemplo de distribuciones a descargar (ISO)

Puedes descargar cualquier archivo de gran tamaño de la internet, aquí te dejo una lista de algunos enlaces a modo de ejemplo.

Instalación

Si sabes usar Common Lisp puedes hacer la descarga y colocarlo en el local de quicklisp.

Si NO sabes usar common Lisp, puedes proceder así:

  • Luego de descargar el repositorio, mueve el binario bin/lisp-downloader al directorio "/usr/local/bin"

API

función www-to-file(archivo-a-escribir, url-de-descarga): Descarga el archivo desde la url, siempre y cuando el servidor permita descargas parciales.

función accept-ranges?(url-de-descarga): Predicado que evalúa si el servidor permite descarga por rangos de bytes.

función request(url-de-descarga): Pregunta de pequeña descarga parcial para obtener la metadata de la cabecera.

función parts(file-size): Determina la cantidad de partes a descargar, en función a 20 megabytes.

función jump-step(start, stop &optional (step 1)): Función de rango desde start a stop y con saltos usando step, útil para el porcentaje de descarga según las partes.

función download-percent(partes): Determina el porcentaje acumulado para cada segmento del archivo.

función range(número): genera una lista de números desde 0 hasta número.

función flatten(obj): Aplana estructuras anidadas.

función group(origen cantidad): Agrupa a origen según cantidad.

función download-ranges-aux(partes-a-descargar): Genera los intervalos de descarga para cada segmento.

función donwnload-ranges(url-de-descarga): Toma la url y genera los intervalos de descarga.

función mul-mapcar(lista &rest listas): Realiza un mapcar sobre el header de múltiples listas, la lista de menor tamaño trunca el procesamiento.

función database-download-file(base-de-datos, url-de-descarga): Genera el archivo CSV que sirve como punto para activar las descargas parciales y reactivar las descargas luego de una interrupción.

función grep-line(base-de-datos, regex): Busca en un archivo de entrada el regex y retorna la línea.

función parts-for-download(base-de-datos): Retorna sólo la lista de archivos a descargar.

función part-downloader(base-de-datos): Lee el archivo a descargar desde la base de datos, lo escribe en el disco duro y actualiza que la descarga ya se realizó.

función file-parts-ordeder(base-de-datos): Lee la base de datos, verifica que ya todos los archivos fueron descargados y retorna una lista ordenada de los archivos parciales.

función cat-files(lista-parcial-ordenada, archivo-de-salida): Funciona como el binario "/usr/bin/cat" para la concatenación binaria de archivos para generar el resultante.

función clean(base-de-datos): Limpia todas las descargas parciales y base de datos, luego de que el archivo a descargar está completo.

función random-string(cantidad-de-caracteres): Genera una cadena aleatoria del tamaño de cantidad-de-caracteres.

función job-directory(): Crea el directorio base para el descargador, se encuentra en el home del usuario en modo oculto.

función main(argumentos): Captura la entrada de los argumentos en la terminal, valida si se pasaron la cantidad correcta de los mismos, crea el directorio de trabajo y realiza la descarga parcial.

Generación del binario

git clone https://gitlab.com/Charte/file-downloader-lisp
cd file-downloader-lisp
buildapp --output lisp-downloader --asdf-path . \
  --asdf-tree ~/quicklisp/dists \
  --load-system file-downloader-lisp \
  --entry file-downloader-lisp:main

Notas

  • El binario funciona para archivos mayores a 20 megabytes, es una decisión de diseño, se puede cambiar a solicitud.
  • El binario que se encuentra en el directorio bin/ es x86-64, diseñado para GNU/Linux
  • El proyecto es funcional, sin embargo, se estarán realizando actualizaciones y mejoras en funcionalidad y automatización en la instalación.
  • Las pruebas iniciales se realizaron en un equipo de 8GB de RAM, Disco duro SATA, no tengo métricas para equipos de menos hardware, cualquier sugerencia y test es bienvenido.

Autor

Licencia

GPL 3

About

Descargador de archivos de gran tamaño al estilo torrent, útil para conexiones lentas.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0