-
-
Save toluju/744312 to your computer and use it in GitHub Desktop.
| 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 |
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
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
Can you share the 234th bookmark? I've discovered that Google Bookmarks doesn't accept certain URLs, so once it encounters a URL it doesn't like, it just drops the rest. That's why I'm trimming off the query string and the hash fragment, because those two were already causing problems - it appears there are other ways to make Google Bookmarks choke as well.