node.js と それのプラグイン(追加モジュール?) を使ってみての感想. ntwitterはあんまり使い方が説明されてない. そもそもサイトがないし、ただgithubとnpmレポジトリの上にあるだけだし. ソースを見たらoauthにtwitterのフォーマットで投げているだけだった. 使い方をまとめよう. その前に、XMLHttpRequestがnode.jsには標準には無いんですね. ググったら全く同じ使い方ができるようなモジュールがgithubにあった. https://github.com/driverdan/node-XMLHttpRequest 実際、中身ではurlモジュールとかを使ってるだけなんだけど、 矢張り使い慣れたオブジェクトが使えないなら、それはもはや違う言語だよねって. まずはコンストラクタの生成 (このくらいならreadmeにも書いてある)var twitter = require('ntwitter'); var twit = new twitter({ consumer_key: '6EurwJ9hznhlohvJHlemA', consumer_secret: 'ePJ0KSEHskh1kZyZUab6F3lcgEgOkNYFN8tGHCIRY', access_token_key: '342800325-4sLzrnDcaO8kJf6Cj9kGEUytC2ZO610ANzwEKouM', access_token_secret: 'jd1e27LuGHvlv2ldA5vaBErygVLq0u2hFDam5lcsSa4' });
consumerkey, consumersecretはdev.twitter.comでcreate appしたらそのappに 固有なもの.access token key, token secretはユーザーとそのappを 結びつけるものであるが、開発者ならdev.twitter.comでページの上で 自分用のそれを生成できる.それを利用した.(じゃあ第三者に使わせる アプリは作れないの?) 例えば書き込みは// 文字列msgをツイート var msg = "test!"; twit.post( "http://api.twitter.com/1/statuses/update.json", {status : msg}, function(er, data){console.log(data.text);} );
これがドコにも書いてなくて、で結局ソース見たんだけど そんなに量が多くなくて勉強になりそうだ. #postの引数は(url, content, content-type, callback)
でcontent, content-typeは省略可能.callbackで詰められる. ていうかcontent-typeってなんなのか分からないから(url, content, callback)
でいいでしょ. callbackに渡される引数は(error, data)
errorは真偽値としてエラーチェックに使えばいいかもしれない. dataは書き込む場合なら書き込みに成功した場合は そのツイートの情報を含むようなオブジェクト.data.text data.user.screen_name
しょっちゅう使うのはこの2つくらいでしょう. たぶんほとんど全部の情報が入ってるから何でもできる. 別のurlにpostかgetすればほかもできる. https://dev.twitter.com/docs/api GETの場合はtwit.get( "http://api.twitter.com/1/statuses/mentions.json", null, function(er, data) { console.log(data); } );
例えばこれで自分へのリプライが20件読み込まれる. 一応書いたけどこれだけだったらあんまり嬉しくはない. UserStreamが使える ずいぶんと長く書いたけれど、今まで書いたヤツだけなら別にnode.jsじゃなくても なんでもあるし、あんまりありがたくもない. UserStreamを簡単に使えて、 こちらが大事であって、 むしろ今までのは書かなくてもいいくらいだった. twit.stream()関数 引数は(method, params, callback)
であって、paramsは省略可能. methodというのは以下のような文字列である.つまり、Stream APIとしてhttps://stream.twitter.com/1/{method}.json
ここに接続しようとする.{method}が引数として渡されたmethod(をescapeしたもの)である. ただし、"user", "site"の場合はhttps://stream.twitter.com/2/user.json https://stream.twitter.com/2b/site.json
に接続する.とにかく使う側としては、数字、スラッシュ、の後から.jsonの直前までの 文字列を覚えておいてそれを書けばいいのだろう. https://dev.twitter.com/docs/streaming-api/methods ここを参考にすればいい. "statuses/filter" だとかそういうのだろう.twit.stream('user', function(stream) { stream.on('data', function (data) { //console.log(data); if (data && data.user && data.text) console.log(data.user.screen_name, data.text); //console.log(data.user.description); }); stream.on('end', function (response) { // 切断 }); stream.on('destroy', function (response) { // 接続の破棄 }); //setTimeout(stream.destroy, 30000); });
おおよそ、下のソースをパクった. node.js + socket.ioでTwitterのStreaming APIを使ってみる - 大人になったら肺呼吸 / http://d.hatena.ne.jp/replication/20120318/1332044327 stream()でコールバック関数を渡すけどコールバック関数の中にはイベントハンドラみたいなのを 一杯書くみたいな…? とりあえず上のコードをシェルから起動したら延々と自分のタイムラインをリアルタイムに更新 するから面白い.まあ今更珍しくないけど.
コメ(0) | トラ(0)