Created
July 15, 2010 12:52
-
-
Save rud/476889 to your computer and use it in GitHub Desktop.
Tool for migrating tasks to The Hit List from Remember The Milk
This file contains 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
# Simple script for reading all tasks from Remember The Milk and exporting them in a format usable | |
# with The Hit List. | |
# | |
# Migrating from http://www.rememberthemilk.com to http://www.potionfactory.com/thehitlist | |
# | |
# Create a config.yml file in the same folder, then simply run it with "ruby milk-extract.rb" | |
# | |
# Released under MIT License | |
# | |
# Written by Laust Rud Jacobsen, rud@personal-it.dk, 2010 | |
require 'rubygems' | |
gem 'nokogiri' | |
require "nokogiri" | |
require "open-uri" | |
require 'yaml' | |
# Config file contents: | |
# username: rtm-user | |
# password: rtm-password | |
config = YAML.load_file('config.yml') | |
source = "https://www.rememberthemilk.com/atom/#{config['username']}/" | |
atom_feed = open(source, :http_basic_authentication => [config['username'], config['password']]) | |
class TodoItem < Struct.new(:title, :tags, :list, :notes); end | |
doc = Nokogiri::XML(atom_feed, 'UTF-8') | |
# puts doc | |
items = doc.css('entry').collect do |entry| | |
item = TodoItem.new | |
item.title = entry.css('title').first.content | |
item.tags = entry.css('.rtm_tags .rtm_tags_value').first.content.split(', ') | |
item.list = entry.css('.rtm_list .rtm_list_value').first.content | |
entry.css('.rtm_notes .rtm_note').each do |note| | |
title = note.css('.rtm_note_title').first.content | |
body = note.css('.rtm_note_content').first.content | |
(item.notes ||= []) << { :title => title, :body => body } | |
end | |
item | |
end | |
grouped_items = items.group_by(&:list) | |
grouped_items.each_pair do |heading, items| | |
puts "\n\nList: #{heading}" | |
items.each do |item| | |
tags = item.tags.reject {|tag| tag == 'none' }.collect { |tag| "/#{tag}/"}.join(' ') | |
notes = unless item.notes.nil? || item.notes.empty? | |
item.notes.collect {|note| [note[:title], note[:body]].compact.join(' - ') }.join(' | ') | |
end | |
puts " #{item.title} #{notes} #{tags}" | |
end | |
end |
Hi betobetico,
What ruby version are you using? I just tried the script again with: ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0], no problem. I see something similar reported here [1], so I think an upgrade might help.
[1] http://www.ruby-forum.com/topic/129530
Regards
/Laust
betobetico found a simple way of avoiding the error: switch from https to http in the url. Depending on the importance of the data you access with this, you might be all right. I'd still recommend upgrading ruby instead, though.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi.
I'm getting the following error were executing the file:
/opt/local/lib/ruby/1.8/net/http.rb:586:in
connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) from /opt/local/lib/ruby/1.8/net/http.rb:586:in
connect'from /opt/local/lib/ruby/1.8/net/http.rb:553:in
do_start' from /opt/local/lib/ruby/1.8/net/http.rb:542:in
start'from /opt/local/lib/ruby/1.8/open-uri.rb:242:in
open_http' from /opt/local/lib/ruby/1.8/open-uri.rb:616:in
buffer_open'from /opt/local/lib/ruby/1.8/open-uri.rb:164:in
open_loop' from /opt/local/lib/ruby/1.8/open-uri.rb:162:in
catch'from /opt/local/lib/ruby/1.8/open-uri.rb:162:in
open_loop' from /opt/local/lib/ruby/1.8/open-uri.rb:132:in
open_uri'from /opt/local/lib/ruby/1.8/open-uri.rb:518:in
open' from /opt/local/lib/ruby/1.8/open-uri.rb:30:in
open'from milk-extract.rb:27
Do you know why? can you help me?
Thanks