Skip to content

Instantly share code, notes, and snippets.

@june29
Created November 26, 2008 14:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save june29/29399 to your computer and use it in GitHub Desktop.
Save june29/29399 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby -Ku
require "rubygems"
require "open-uri"
require "rexml/document"
require "time"
require "pit"
require File.dirname(__FILE__) + "/hatena_bookmark"
require File.dirname(__FILE__) + "/couchdb"
count = 15
delicious_feed_url = "http://feeds.delicious.com/v2/rss/june29?count=#{count}"
last_processed_bookmark = "/delicious/last_processed_bookmark/"
config = Pit.get("couchdb")
cdb = CouchDB.new(config["host"], config["port"])
last = cdb.get(last_processed_bookmark)
config = Pit.get("hatena")
hbm = HatenaBookmark.new(config["username"], config["password"])
doc = REXML::Document.new(open(delicious_feed_url))
doc.elements.to_a("rss/channel/item").each do |item|
datetime = Time.parse(item.elements["pubDate"].text).strftime("%Y%m%d%H%M%S").to_i
if datetime > last["datetime"].to_i
title = item.elements["title"].text
url = item.elements["link"].text
comment = item.elements["description"].text
tags = item.get_elements("category").map { |category| category.text }
entry = Entry.new(title, url, comment, tags)
hbm.post(entry)
puts "[B!] #{title} #{url}"
cdb.put(last_processed_bookmark, {
"title" => title,
"url" => url,
"datetime" => datetime,
"_rev" => last["_rev"]
})
last = cdb.get(last_processed_bookmark)
sleep 5
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment