特定のURLからファイルをダウンロードする - lisp-cookbook-ja/common-lisp GitHub Wiki
インターネットサービス trivial-http ライブラリ
特定のURLからファイルをダウンロードする
(ql:quickload :trivial-http)
(trivial-http:http-download
;; ファイルのURL
"http://www.lisperati.com/lisplogo_alien.svg"
;; 保存するファイル名
"/tmp/lisplogo_alien.svg"
;; エラー発生でシグナルを上げない
:signal-error? nil)
;=> 41783 ;ダウンロードしたバイト数
; "http://www.lisperati.com/lisplogo_alien.svg" ;ダウンロードしたURL
CLiki:drakmaを利用してダウンロードクライアントを作成
(defun download-file (filename uri)
(with-open-file (out filename
:direction :output
:if-exists :supersede
:element-type '(unsigned-byte 8))
(with-open-stream (input (drakma:http-request uri :want-stream t :connection-timeout nil))
(loop :for b := (read-byte input nil -1)
:until (minusp b)
:do (write-byte b out)))))
;; 利用例
(download-file "alien.svg" "http://www.lisperati.com/lisplogo_alien.svg")