emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] capture, attach, link files from web


From: Eric Abrahamsen
Subject: Re: [O] capture, attach, link files from web
Date: Mon, 07 Oct 2013 23:55:12 +0800
User-agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.3 (gnu/linux)

Myles English <address@hidden> writes:

> Hello,
>
> Just thought I would share something I find useful.  What the code below
> does is:
>
> 1) prompts for a link to a file on the internet
> 2) downloads the file
> 3) attaches the file to the current subtree
> 4) inserts at the current point a link to the attachment
>
> This is useful if (e.g.) you are scouring Google images for ideas and
> want to save lots of image files.

Interesting! I've done a fair amount of this, and wanted this exact sort
of function, and have been too lazy to implement it myself.

A couple of thoughts:

Rather than sending downloaded files to $TMPDIR, it might be nice to
have them just use whatever dir org-attach would have used. I use
org-attach from time to time, and notice that everything ends up under
~/org/data/. I haven't actually investigated why that happens (I've got
org-directory set to ~/org/), mostly because it strikes me as a fine
default. When we've got that directory, setting a different TMPDIR seems
unnecessary. I'll admit part of my hesitation comes from the fact that
"TMPDIR" sounds like it's going to get automatically deleted at some
point.

I've often thought it would be nice to link to images in an org file
with http: links, then at some arbitrary point in time call a
hypothetical org-localize-external-resources command. That command would
wget all the external resources, put them somewhere local, and switch
the links to the file: type. Just a thought.

Regardless, thanks for posting this. It's fun to see other people
thinking in familiar directions.

E

> Requirements: wget, set $TMPDIR.
> TODO: integrate properly with capture template
>
> #+here_is_some elisp
> (setq org-link-abbrev-alist '(("att" . org-attach-expand-link)))
>
> (defun my-attach-and-link-web-file (lnk)
>   "Download a file, attach it to our heading, insert a link"
>   (interactive "*sAttach and link to url: \n")
>   (let ((tmpdir (expand-file-name (getenv "TMPDIR")))
>       (fname (file-name-nondirectory lnk)))
>     (progn (message (concat "Downloading " lnk " to " tmpdir "/" fname))
>          (call-process "wget" nil '("*Messages*" t) nil "-P"
>                        tmpdir "-d"
>                        lnk)
>          (org-attach-attach (concat tmpdir "/" fname) nil 'mv)
>          (insert (concat "[[att:" fname "]]")))))
>
> (define-key global-map "\C-cs" 'my-attach-and-link-web-file)
> #+that_was_elisp
>
> Myles




reply via email to

[Prev in Thread] Current Thread [Next in Thread]