Erlangでpublic_timelineを取得
30分プログラム、その570。Erlangでpublic_timelineを取得してみる。
前にHTTPでGETとXML解析をやったので、それを組合せてTwitterのpublic_timelineを取得してみた。
あとはBASIC認証さえできれば、立派なTwitterライブラリになると思う。
使い方
% public_timelineをXMLで取得 1>X = twitter:public_timeline(). {xmlElement,statuses,statuses,[], {xmlNamespace,[],[]}, [],1, [{xmlAttribute,type,[],[],[],[],1,[],"array",false}], .... % //textだけを表示してみる 2> twitter:show_text(Xml). first time on twitter lets see how this goes What in the world am doing waking um soo earlyyyy? =/ achgrr .....
ソースコード
-module(twitter). -include_lib("/opt/local/lib/erlang/lib/xmerl-1.1.10/include/xmerl.hrl"). -compile([export_all]). % http://twitter.com/statuses/public_timeline.xml call(Api) -> Url = io_lib:format("http://twitter.com/~s.xml",[Api]), {ok,{{_Version,200, _Reason},_Header,Body}} = http:request(Url), Body. public_timeline() -> Text = call("statuses/public_timeline"), {Xml,_} = xmerl_scan:string(Text), Xml. text_only(Xs) -> lists:flatmap(fun(X) -> case X of #xmlText{value=Text} -> Text; _ -> [] end end,Xs). show_text(Xml) -> lists:foreach( fun(Item)-> case Item of #xmlElement{content=Text} -> io:format("~s~n",[text_only(Text)]); _ -> io:format("~p~n",[Item]) end end, xmerl_xpath:string("//text",Xml)). start() -> inets:start().