https://github.com/eudoxia0/trivial-download.git
git clone 'https://github.com/eudoxia0/trivial-download.git'
(ql:quickload :trivial-download)
trivial-download allows you to download files from the Internet from Common Lisp. It even provides a progress bar.
cl-user> (download "http://www.google.com/robots.txt" "/tmp/robots.txt")
Downloading "http://www.google.com/robots.txt" (Unknown size)
t
cl-user> (download "https://github.com/favicon.ico" "/tmp/favicon.ico")
Downloading "https://github.com/favicon.ico" (6.518 kB)
.........10%.........20%.........30%.........40%.........50%.........60%.........70%.........80%.........90%.........100%t
You probably want the download function, which downloads files from the
network to the local disk. If you want more control over that – like, say,
writing the downloaded bytes to a database instead – you want the
with-download macro.
trivial-download downloads everything in chunks that are *chunk-size* bytes
long. *chunk-size*, by default, is 256.
download (url output)Downloads the content of url and writes it to output. The file is written as
it is downloaded, chunk-by-chunk, not downloaded into memory and written at
once.
with-download (url (file-size total-bytes-read array stream) &rest body)Downloads the contents of url, executing body in every chunk.
The extra arguments are:
stream: A flexi-io-stream bivalent stream.file-size: The size, in bytes, of the file to download.bytes-read: The number of bytes read.array: As every chunk is downloaded, its contents are written to array.Example:
(with-download "https://github.com/favicon.ico"
;; Do something
)
with-download-progress (url (file-size total-bytes-read array stream) &rest body)The same as with-download, only this prints progress information while
downloading.
Copyright (c) 2014-2015 Fernando Borretti (eudoxiahp@gmail.com)
Licensed under the MIT License.