Twitter4Jライブラリでツイッターボット作成中
→→→ツイッターボット「TweetBot 1.0β」を公開しました←←←
現段階
現在、JavaでTwitter4Jライブラリを使用したツイッターボットを作成中です。Twitter4Jライブラリを使うことによって、Twitter APIを簡単にJavaから操作することが可能になります。タイマー部分の論理はプログラム言語が違いますが、PCアラームと似たような感じです。
現段階では
・自動ツイート(間隔指定、例:毎10±5分、24時間おきにとか)
・自動相互フォロー(間隔指定、例:毎10±5分、24時間おきにとか)
・トレンド表示
・指定したWOEID(場所)のトレンド表示
・自分のタイムライン表示
ができています。
簡単な仕組み
ツイートは「時間指定」ではないので、パソコンをシャットダウンしても支障は出ません。ツイートは.txtファイルで一行につき1ツイート記入する感じで、改行は\nで表します。もちろん、テキスト上の「\n」(改行コード)はエスケープされていて実際の改行コードではないので、プログラム内ではストリング内の「\\n」を「\n」に置き換えています。(str = str.replace(“\\n”, “\n”);)。これのことなんですが、最初は.replaceではなく、.replaceAllで置き換えようとしていたんですが、何度試してもダメだったんで、.replaceで片づけることにしました。この単純なコードに40分くらいかかりました。orz。。。今年最大の打撃です。
で、その.txtファイルに記載されたツイートを読み取り、「ツイート」が成功した後はそのツイートは.txtファイルから削除されます。まだツイートされていないツイートはそのまんまなので、途中でプログラムを切っても支障は出ません。
基本的な「認証」、「ツイート」や「フォロー」などはライブラリでサポートされているのでさほど面倒ではありません。
実行は古き良きコマンドラインからです。Windowsのタスクスケジュラーでパソコンを起動すると同時にコマンドプロンプトでボットを起動するように設定しています。
WOEIDとは
WOEIDとは(Where On Earth IDentifier)(主の翻訳:一体、地球上のどこにあるんだ!?の識別子)の略で識別子は32ビットの数字であらわされています。アメリカのYAHOOが管理しています。
御覧のように秩父市の浦山口駅にも番号が割り当てられています。どんな場所でも割り当てられるようになっていると言ったほうが正確でしょうか。
浦山口駅:28364577
ツイッターではトレンドを取得するときの「トレンドの場所」を指定するためにWOEIDを使用しています。もちろん、浦山口駅のトレンドは取得不能ですが、ある程度大きな町ですとトレンドが表示できるようになります。試しにTwitter4JライブラリのgetAvailableTrendsでトレンドが表示できる場所を全部表示してみました。
これを見ると、ツイッターをどれだけの人が使用しているかなんとなくわかりますね。川崎市、チェリャビンスク、クラクフ、 ハイデラバッドなどかなりピンポイントな場所でもトレンド表示できます。
驚いたのは香港とハンガリー(ブダペスト)が載ってないんですね。香港は中国当局が規制しているのでしょうが、ハンガリーは・・・国民が単に興味がないんですかね。
実験結果
2年間放置していたアカウントで使用したところ、知らない間にフォローが500くらい増えてました。頻繁にフォローバックしているとほかのボットに察知されるんでしょうかねw
ボットとしてはまだまだ他のと比べると劣りますが、少しずつ機能面や性能面で上げていきたい気がします。