首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Emacs Lisp下载文件

用Emacs Lisp下载文件
EN

Stack Overflow用户
提问于 2010-12-15 16:33:16
回答 3查看 7.4K关注 0票数 23

elisp有没有一个功能,可以获取一个url和一个目的地,并从互联网上下载该url?

我发现了url-retrieveurl-retrieve-synchronously,但url-retrieve接受回调,url-retrieve-synchronously将所有内容放入缓冲区。有没有更简单的方法?

EN

回答 3

Stack Overflow用户

发布于 2010-12-16 01:02:23

显然,url-copy-file是最好的选择,但对于更有冒险精神的Emacs黑客,我建议这样做:

(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))))))))))
票数 10
EN

Stack Overflow用户

发布于 2010-12-15 17:06:05

(w3m-download "http://www.gnu.org/index.html")
票数 4
EN

Stack Overflow用户

发布于 2014-04-24 01:22:57

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")

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

当前缓冲区| http://www.gnu.org/software/emacs/manual/html_node/elisp/Current-Buffer.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4448055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档