emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-orgmode@gnu.org
Subject: Re: capture, attach, link files from web
Date: Mon, 07 Oct 2013 23:55:12 +0800	[thread overview]
Message-ID: <87siwdoz33.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 87wqlpuwpl.fsf@gmail.com

Myles English <mylesenglish@gmail.com> 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

  parent reply	other threads:[~2013-10-07 15:54 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-07 11:49 capture, attach, link files from web Myles English
2013-10-07 13:08 ` Oleh
2013-10-08 10:43   ` Myles English
2013-10-08 15:28     ` Oleh
2013-10-07 15:55 ` Eric Abrahamsen [this message]
2013-10-07 17:49   ` Myles English
2013-10-08  1:39     ` Eric Abrahamsen
2013-10-08 10:22       ` Myles English
2013-10-08 13:31         ` Eric Abrahamsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87siwdoz33.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).