This entry was posted on 土曜日, 5月 31st, 2008 at 18:22:47 and is filed under 日記. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.


はてなフォトライフの最近の投稿を取得する
以前から作りたいと思っていた
はてなフォトライフの最近の投稿を取得するスクリプトを書いた。
うちのサーバーはpythonに対応していないので、perlかrubyで書かなければいけないのです
まぁ、perlは昔書いていたからperlにするか、と思ったんですが
MacBookに必要なライブラリが入っておらず
cpanから落としてきたのにライブラリがないとか言われるわけで、もうワケワカラン
なのでruby初挑戦
hello world(一応やりました)とかfizzbuzzでもない
いきなりhttpRequestを送信するコードが書けるものなのか
と思ったら動くモノは出来た。
最近の若者はいきなりこんな風にwebプログラムにさわるのかな?
仕様に沿った作りをすればいいので、xmlrpc同様簡単にできた。
webの情報も多くて理解するのも早く1時間くらいでできた
rubyは思っていたよりも全然よかった。
なるほど、これは書いていてperlよりもスッキリするわ
それとpythonを勉強していたおかげで理解が早かった。あぁ〜、initialize は __init__のことか!とか
次は取得情報を表示するブログパーツを作らんと
同じ事をしているページはたくさんあるのであまり意味ないけど以下ソース
require ‘digest/sha1‘
require ‘time‘
require ‘net/http‘
require ‘time‘
require ‘net/http‘
class HatenaPL
def initialize(username, password)
#nonce生成
nonce = ”
while nonce.size < 20
nonce << rand(256)
end
nonce_base64 = [nonce].pack("m").chomp
createdTime = Time.now.utc.iso8601
digest = [Digest::SHA1.digest(nonce+createdTime+password)].pack("m").chomp
@credentials = sprintf(%Q<UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s">,
username, digest, nonce_base64, createdTime)
{ ‘X-WSSE‘ => @credentials }
#print @credentials
end
def getRecently()
uri = ‘f.hatena.ne.jp‘
http = Net::HTTP::Get.new("/atom/feed")
http['X-WSSE'] = @credentials
res = ”
Net::HTTP.start(uri) do |h|
res += h.request(http).body
end
end
end
api = HatenaPL.new("ユーザー名","パスワード")
api.getRecently()
Leave a Reply
