ruby-tumblr
- http://d.hatena.ne.jp/keita_yamaguchi/20070820/1187556541 ¬¬日常日記 - ruby-tumblrをつくりました
gem update -y ruby-tumblr
- http://rubyforge.org/projects/ruby-tumblr/ RubyForge: ruby-tumblr: Project Info
- http://ruby-tumblr.rubyforge.org/ ruby-tumblr
■read
require "tumblr"
Tumblr::API.read("tumblr.dynamic-semantics.com") do |pager|
data = pager.page(0)
p data.tumblelog
data.posts.each do |post|
p post
end
end
■write
require "tumblr"
Tumblr::API.write($email, $password) do
regular("test body", "test title")
quote("test quote", "test source")
link("http://tumblr.dynamic-semantics.com", "test link")
end
■backup
require "tumblr"
Tumblr::API.read("tumblr.dynamic-semantics.com") do |pager|
data = Tumblr::Data.new
0.upto(pager.last_page) do |n|
puts "get #{n}/#{pager.last_page}"
data << pager.page(n)
end
data.save("backup.xml")
end
■svn
svn co svn://rubyforge.org/var/svn/ruby-tumblr
■実行
- examples/backup.rbをcopyして、自分のURLに変えて実行してみる。
■エラー
- ../lib/tumblr.rb:215:in `each': wrong number of arguments (1 for 0) (ArgumentError)
- ../lib/tumblr.rb:163:in `initialize': undefined method `text' for nil:NilClass (NoMethodError)
- ../lib/tumblr.rb:145:in `initialize': undefined method `text' for nil:NilClass (NoMethodError)
- ../lib/tumblr.rb:211:in `initialize': undefined method `text' for nil:NilClass (NoMethodError)
■patch
Index: lib/tumblr.rb
===================================================================
--- lib/tumblr.rb (revision 6)
+++ lib/tumblr.rb (working copy)
@@ -142,7 +142,8 @@
def initialize(elt, tz)
super
@text = elt.elements["quote-text"].text
- @source = elt.elements["quote-source"].text
+ e = elt.elements["quote-source"]
+ @source = e ? e.text : ''
end
def to_xml
@@ -160,7 +161,8 @@
def initialize(elt, tz)
super
- @caption = elt.elements["photo-caption"].text
+ e = elt.elements["photo-caption"]
+ @caption = e ? e.text : ''
@urls = Hash.new
elt.elements.each("photo-url") do |url|
@urls[url.attributes["max-width"].to_i] = url.text
@@ -206,10 +208,11 @@
def initialize(elt, tz)
super
- @title = elt.elements["conversation-title"].text
+ e = elt.elements["conversation-title"]
+ @title = e ? e.text : ''
@text = elt.elements["conversation-text"].text
@lines = []
- elt.each("conversation-line") do |line|
+ elt.elements.each("conversation-line") do |line|
name = line.attributes["name"]
label = line.attributes["label"]
@lines << [name, label, line.text]
Last modified: 2007-08-21