Myles English <mylesengl...@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