Processing + Twitter
たまにはプログラミングの話。
ProcessingからTwitterに投稿する方法について
ふつうにJavaで
hwhack: Processingでtwitterと http認証 (basic auth)
- Authenticatorで認証
- http://twitter.com/statuses/update.xmlを指定し、URLConnectionでPOST
ってだけだが、POSTした後ちゃんと受信をしないとうまくいかないみたい。
import java.net.*; //ユーザ名とパスワード String user = "user"; String pass = "password" ; //リクエストURL。update.xmlを指定 String url = "http://twitter.com/statuses/update.xml" ; //認証まわり class BasicAuth extends java.net.Authenticator{ private String user; private String pass; public BasicAuth(String user, String pass) { this.user = user; this.pass = pass; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,pass.toCharArray()); } } void setup() { BasicAuth tw_authenticator = new BasicAuth(user, pass); Authenticator.setDefault(tw_authenticator); try{ URL helloURL = new URL("http://twitter.com/statuses/update.xml"); URLConnection con = helloURL.openConnection(); con.setDoOutput(true); PrintWriter out = new PrintWriter(con.getOutputStream()); //POSTするメッセージ out.print("status= test"); out.close(); //POSTした後は受信 InputStreamReader in = new InputStreamReader(con.getInputStream()); BufferedReader br = new BufferedReader(in); String line; while((line=br.readLine()) != null) { System.out.println(line); } br.close(); in.close(); }catch (IOException e) { e.printStackTrace(); } } void draw() { }
twitter4jを使う
Twitter API - TwitterまとめWiki
Twitter APIのJavaラッパを書いた人がいるのでそれを使わせてもらう。
http://yusuke.homeip.net/twitter4j/ja/index.html
準備として、libraries/twitter4j/library/
内にjarファイルを放り込んでおく。
Processingが認識してくれないっぽいので、twitter4j.jarにリネームする必要があるみたい。
import twitter4j.*; void setup(){ try{ //ユーザ名とパスワード Twitter twitter = new Twitter("user","password"); //メッセージ Status status = twitter.update("test"); //投稿したメッセージを表示 System.out.println(status.getText() + " POSTED"); }catch(Exception e){ System.out.print(e.getMessage()); } } void draw(){ }
圧倒的に簡単になりましたね。