Created
December 17, 2010 01:02
-
-
Save toluju/744312 to your computer and use it in GitHub Desktop.
Delicious is shutting down, so here's a script to load the exported delicious bookmarks into Google Bookmarks.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'net/http' | |
require 'uri' | |
require 'cgi' | |
text = "<html><head><title>Delicious2Google</title></head><body>" + | |
"<h1>Upload</h1>" + | |
"<form action='https://www.google.com/bookmarks/mark?op=upload&zx=#{rand(65535)}' method='POST'>" + | |
"<input type='submit'/><input type='hidden' id='data'></form>" + | |
"<textarea id='xml' style='display:none'>\n<bookmarks>" | |
File.open(ARGV[0], "r").each_line do |line| | |
match = line.match(/<DT><A HREF="(.*)" ADD_DATE="(.*)" PRIVATE="(.*)" TAGS="(.*)">(.*)<\/A>/) | |
if match | |
link = CGI::escapeHTML(match[1].split("?")[0].split("#")[0]) | |
date = CGI::escapeHTML(match[2]) | |
tags = match[4].split(",").map! do |t| CGI::escapeHTML(t) end | |
title = CGI::escapeHTML(match[5]) | |
text += "<bookmark><url>#{link}</url><title>#{title}</title>" + | |
"<labels><label>#{tags.join(",")}</label></labels></bookmark>" | |
end | |
end | |
text += "</bookmarks>\n</textarea>" | |
text += <<eos | |
<script type='text/javascript'> | |
var src = document.getElementById('xml'); | |
var tgt = document.getElementById('data'); | |
tgt.name = "<?xml version"; | |
tgt.value = '"1.0" encoding="utf-8"?>' + src.value; | |
</script> | |
eos | |
text += "</body><html>" | |
File.new(ARGV[1], "w").puts text |
Right, I'm stripping query strings because it appeared the Google Bookmarks API was rejecting URLs with query strings. It could be the error lies elsewhere, but I couldn't find much documentation.
http://lnkr.mobi/bm/google_bookmarks_api/ seems to says that "upload capability was written to migrate "IE favorites" to Google Bookmarks, and IE favorites don't have annotations.". So I wonder if it's better to have the script find all delicious bookmarks that don't have notes/comments and continue to use the xml approach.. and for the others use the http://www.google.com/bookmarks/mark api call for each entry.
Google now has an official delicious bookmarks importer: https://www.google.com/bookmarks/deliciousimport
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Awesome script... but it think this delicious api xml method doesn't support youtube delicious bookmarks since they all have question marks in them... http://www.youtube.com/watch?v=eUB4j0n2UDU