こいつです。
今回は外部ファイルから台詞を取得して、その内容をポストするという機能を実装します。

ここでは、外部ファイルにはポストしたい台詞が改行区切りで保存されているものとします。

ポスト内容はランダムに変わるようにします。Twitterの仕様上、同一内容の連続ポストはできないので一回前のポスト内容とかぶらないように注意すればOKです。

Towelie_bot クラス(メインクラス)

import java.io.IOException;

import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;

public class Towelie_bot {
   // Consumer と AccessToken をここで指定
	public static final String ConsumerKey = ";
	public static final String ConsumerSecret = ;
	public static final String Token = ;
	public static final String TokenSecret = ;

	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws IOException {
		// connect Twitter using oauth
		Twitter towel = new TwitterFactory().getInstance();
		towel.setOAuthConsumer(ConsumerKey, ConsumerSecret);
		AccessToken accessToken = new AccessToken(Token, TokenSecret);
		towel.setOAuthAccessToken(accessToken);
		
		TowelPostDialog.post(towel);
	}
}

TowelPostDialog クラス

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Random;

import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;

public class TowelPostDialog {
	public static final int FileLength = 90;
	public static final String FileName = "dialog.txt";

	public static void post(Twitter towel) {
		// open file
		FileReader in;
		String[] dialogs = new String[FileLength];
		try {
			in = new FileReader(FileName);
			BufferedReader br = new BufferedReader(in);
			String reader;
			int i = 0;
			try {
				while ( (reader = (br.readLine()) ) != null) {
					dialogs[i] = reader;
					i++;
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			br.close();
			in.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// Get bot's recent posts
		ResponseList<status> tl = null;
		try {
			tl = towel.getUserTimeline("towelie_bot");
		} catch (TwitterException e1) {
			System.out.println("maybe twitter is down");
			e1.printStackTrace();
		}

		// make random number
		int random;
		do {
			Random rnd = new Random();
			random = rnd.nextInt(FileLength);
		} while (tl.get(0).getText().equals(dialogs[random]));

		// post the dialog to Twitter
		try {
			towel.updateStatus(dialogs[random]);
			System.out.println("post successed!");
		} catch (TwitterException e) {
			System.out.println("error.");
			e.printStackTrace();
		}
	}
}

さして工夫が必要なところがないんですよねー。まぁ簡単で良いんですが。
相変わらずEclipseで作ってるのでtry-catchなどが変な位置に入ってるかもしれないけど気にしないでください。

, , ,
Trackback

2 comments untill now

  1. beginner @ 2011-07-05 01:58

    こんばんは、はじめまして。
    twitterbot作成の練習として、こちらのソースを参考におみくじbotを作ろうと思ったのですが、26行目でエラーが出てしまいます。
    これは、hrefでリンク先を選択しているみたいですが、どのような役割を果たしているのでしょうか?

    無知ですいません。教えていただけましたら幸いです。
    よろしくお願いいたします。

  2. あれれ、Wordpressの注釈表示用のプラグインのせいで、表示がおかしくなっていたようです。修正したので、確認してみてください。
    やってることは、ファイルの内容を一行ずつdaialogsという配列に入れているだけです。

Add your comment now

*