johnsu01 (johnsu01) wrote,
johnsu01
johnsu01

Posting a list of links with delicious-el

A quick hack to bookmark a list of 50 pages using del.icio.us and Emacs.

Tonight I found 50 links that I wanted to add to my del.icio.us account. They are from a site that has a series of articles comprising 50 "Writing Tools". I like to read this kind of thing, because it's kind of my trade, at least educationally speaking. I like to see how other people do it, and also see how other people teach it.

I went through the trouble of writing the delicious-el code for Emacs partially so I could handle situations like this easily. I'm currently working on some code to enable offline caching of posts which can then be batched and uploaded to the server later, for those times when I'm reading email offline and come across a link that I want to bookmark. That work will be helpful in situations like this as well, because the batch uploading function will work by taking a list of posts and related information.

But, that code's not done yet, and this situation was extra-easy, because I wanted to give all of these posts the exact same two tags. So I didn't even bother to write a function, just dumped the following in my *scratch* buffer and evaluated it.

(mapcar '(lambda (post) (let ((url (elt post 0)) (description (elt post 1)) (tags "to-read writing")) (delicious-api-post url description tags) (message "%s posted." description)) (sleep-for 3)) feed-me)

This posted everything in the list feed-me. I set up that list with something like:

(setq feed-me '(("first url" "first description")("second url" "second description")))

The need to assemble that list is the reason why it's great to do these things in Emacs rather than the web browser. I just opened w3m, loaded the source for the page with the list of links to all 50 tools, and used a series of query-replace-regexp commands to whittle the HTML down to the above list format. All in the *scratch* buffer.

Note the inclusion of the (sleep-for 3). This is to avoid hitting the server too hard. I started off with 2 seconds, but ended up with an error from the server anyway --- luckily I had included the (message) line so I could check the *Messages* buffer and see what the last successful post was, trim the list accordingly, and start again.

All in all, I think I wrote the hack, posted the links, and wrote this post in the amount of time it would have taken me to post all those links by hand via the web interface. Next time it will be faster --- and I probably won't bother you about it. I probably also could have done this by bookmarking everything in w3m and then exporting the bookmarks via the w3m functions in the same delicious-el codebase.

You can get the delicious-el code via darcs at http://www.wjsullivan.net/darcs/delicious-el , or get the tar archive. It's still developing, and I'm an amateur -- be careful, and send me your bugs.

Tags: delicious, emacs, lisp
Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments