去年Twitterのタイムラインで画像がデフォルト表示される仕様となってから、「これ可愛い…」と思った画像をふぁぼる機会が増えた気がします(^^;
自分の場合はファンである堀北真希さんが中心なわけですが…。
そういった仕様に伴ってか、「可愛いと思ったらリツイート!」「気に入ったらリツイート!」等のツイートも着々と増えてる感じがします(^^;
こういうのはTwitterらしい面白さがあってとても良いのですが、気が付くと無意識に手動で画像収集したりして時間を浪費してしまったり…(-_-;
そこでプログラムを使ってもう少し効率よく収集できないかな…と思って、ちょっと試してみました。
Twitter4Jの準備
これは前に自分でまとめた手順で行っています。
画像取得サンプル
処理の流れとしては
- Twitterで検索(キーワード、特定のbot、ハッシュタグ…etc)
- 検索結果に含まれる画像情報を取得
- ファイルにして保存
という簡単なもので試しました。
以下、mainだけで書いてるし、エラーハンドリングはしてない雑なサンプルなので注意(^^;
package mysample.mytwitter4j;
import java.io.IOException;
import java.net.MalformedURLException;
import twitter4j.MediaEntity;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Status;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
Twitter4Jで検索結果の画像を取得してみるサンプル
@author
public class App
{
static final int TWEET_NUM = 10;
static final String TARGET_EXTENSION = ".jpg";
static final String MY_QUERY = "from:hogehoge";
public static void main( String[] args ) throws TwitterException, MalformedURLException, IOException
{
Twitter twitter = new TwitterFactory().getInstance();
Query query = new Query(MY_QUERY);
query.setCount(TWEET_NUM);
QueryResult result = twitter.search(query);
for(Status sts : result.getTweets()){
MediaEntity[] arrMedia = sts.getMediaEntities();
for(MediaEntity media : arrMedia){
if(media.getMediaURL().endsWith(TARGET_EXTENSION)){
URL website = new URL(media.getMediaURL());
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
FileOutputStream fos =
new FileOutputStream("ImageFromTwitter" + df.format(sts.getCreatedAt()) + TARGET_EXTENSION);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}
}
}
}
}
Twitter4JのAPIでほとんど何でもできてしまいますね(^^;
ちなみに検索のクエリは色々な形式で指定できそうです。Twitter APIのサイトも参考になるかと。
https://dev.twitter.com/docs/using-search
実行結果
で、とあるbotのIDを指定して実行すると、以下のプロジェクトフォルダが
(ダウンロード先とか特に指定してないので)
こんな感じに堀北さんで溢れます(´;ω;`)ぶわっ
幸せ…。
ちゃんとしたbotであれば、しっかり堀北さんの画像だけが流れてくるので安心(^^)
ちなみに昨今話題の某自画撮りハッシュタグを試しに指定してみたら…
違う世界が広がりました(^^;
当然ですが、こうしたハッシュタグ指定などによる検索だと、全く関係ないグロイ画像を付けて発信されているツイートも含んでしまうので、十分に気を付けて下さい(^^;