AKB428は荒野を目指す

秋葉原で働くエンジニアなブログ

Twitterのツイートからキーワード指定で画像をダウンロードしまくるバッチをつくりました

f:id:rakuda00:20140723023457j:plain

7月22日は矢澤にこさんの誕生日でした。

おめでとうございます。

 

記念にNicoというTwitterのツイートから指定したキーワードをつぶやいているツイートの画像URLを保存するバッチを書いてみました。

 

f:id:rakuda00:20140723023625j:plain

https://github.com/AKB428/Nico

 

java製でWindows,OSX,Linuxで稼働確認済。

 

f:id:rakuda00:20140723024134p:plain

 

簡単な仕様は以下

  • TwitterのStreaming APIを使用
  • 重複したURL画像は保存しない
  • キュー処理のためDBを使用
  • プログラミングのポータビリティ性を高めるためH2DBを使用
  • SQLiteはマルチスレッド書き込みが無理だったので断念
  • テーブル更新はINSERT、DELETEのみで行ロックはしない

将来的に実装する予定の機能は以下

  • DBはMariaDBHadoop系にも対応
  • 現在はTwitter公式にアップロードした画像しかダウンロードしないがついっぷるとかにも対応する
  • 1ディレクトリで複数java実行起動できるようにテーブル構成を賢くする
  • Java8のコードも書きたいがポータビリティ性を考えるとJava7対応も必要なのでコードを2つにわけるとか

実装する上ではまったポイントは以下

  • SQLite複数スレッドから書き込みできずテーブルロックエラーになるo(`ω´*)oプンスカプンスカ!!
  • H2DBは大文字小文字を区別しないがテーブル名を小文字で作成して、テーブル名存在チェックを大文字でやるとヒットしなくなる。

 

 

コンソールから起動するとこんな画面になり、ひっきりなしにTwitterのStreamingAPIからデータを取得します。

 

f:id:rakuda00:20140723024228j:plain

 

7月22日は「ラブライブ」という文字列でバッチを動かしていましたが7800枚の画像が収集されました。

 

 

f:id:rakuda00:20140723024408j:plain

 

f:id:rakuda00:20140723023457j:plain

NHKのつぶやきビックデータを提供しているNTT DATAのTiwitterはみんながあこがれるTwitter Streaming Firehose APIですがこれって有償契約が必要で個人じゃハードル高いんですよね。

 

なので個人レベルでTwitterを解析する一番近道は公開されているStreaming APIを使い倒すことだと思います。

がんばって「つぶやきビックデータ」を超えるサービスを作りたいですね。

 

 

 

 

Twitter API ポケットリファレンス (POCKET REFERENCE)

Twitter API ポケットリファレンス (POCKET REFERENCE)

 

 

 

 

 

 

ラブライブ! School idol diary ~矢澤にこ~

ラブライブ! School idol diary ~矢澤にこ~