emacs elisp

Descarga un archivo con Emacs Lisp



emacs windows installer (4)

¿Tiene elisp una función que toma una url y un destino y descarga esa url fuera de Internet?

Descubrí que url-retrieve y url-retrieve-synchronously pero url-retrieve recibe una devolución de llamada y url-retrieve-synchronously pone todo en un búfer. ¿Hay algo más simple?


Obviamente, url-copy-file es la mejor opción, pero a los hackers Emacs más aventureros les sugiero algo como esto:

(require ''url) (defun download-file (&optional url download-dir download-name) (interactive) (let ((url (or url (read-string "Enter download URL: ")))) (let ((download-buffer (url-retrieve-synchronously url))) (save-excursion (set-buffer download-buffer) ;; we may have to trim the http response (goto-char (point-min)) (re-search-forward "^$" nil ''move) (forward-char) (delete-region (point-min) (point)) (write-file (concat (or download-dir "~/downloads/") (or download-name (car (last (split-string url "/" t))))))))))


Prueba url-copy-file . Su descripción dice,

url-copy-file es una función Lisp cargada automáticamente en `url-handlers.el ''.

(url-copy-file url newname y opcional ok-si-ya-existe-tiempo de mantenimiento)

Copia url a newname. Ambos argumentos deben ser cadenas. Señala un error de `archivo ya existe ''si ya existe el nuevo nombre del archivo, a menos que se suministre un tercer argumento ok-if-already-existing y no nulo. Un número como tercer argumento significa confirmación de solicitud si ya existe un nuevo nombre. Esto es lo que sucede en el uso interactivo con Mx. El cuarto archivo de tiempo de mantenimiento no nulo significa que el nuevo archivo tenga la misma última modificación que el anterior. (Esto funciona solo en algunos sistemas). Un argumento prefijo hace que el tiempo de mantenimiento no sea nulo.


http://steloflute.tistory.com/entry/Emacs-Lisp-urlretrieve

; synchronously (defun get-url (url) (with-current-buffer (url-retrieve-synchronously url) (buffer-string))) (print (get-url "http://www.gnu.org")) ; asynchronously (defun print-url (url) (url-retrieve url (lambda (a) (print a)))) (print-url "http://www.gnu.org")

Recuperando URLs | http://www.gnu.org/software/emacs/manual/html_node/url/Retrieving-URLs.html

Buffer actual | http://www.gnu.org/software/emacs/manual/html_node/elisp/Current-Buffer.html


(w3m-download "http://www.gnu.org/index.html")