前回の続きではないが入力情報として使用する #三国志大戦登用 のツイートをプログラムで取得したい。
ゴールは #三国志大戦登用 のツイートから 解任済み武将カード の 画像URL を取得するまで。
Java で Twitter と言えば Twitter4J なので、こちらを使用する。
Twitter4J - A Java library for the Twitter API
プログラムから Twitter を操作するには Key と Token が必要になるみたい。
Twitter Application Management にアクセスして発行する。
Twitter Application Management
以下、公式のサンプルとJavaDocを眺めつつ参考になるサイトを見て作成。
public class HashTag { public static void main(String[] args) { Twitter twitter = new TwitterFactory().getInstance(); try { Query query = new Query("#三国志大戦登用 -rt -bot"); query.setSince("2017-10-23"); QueryResult result; do { result = twitter.search(query); List<Status> tweets = result.getTweets(); for (Status tweet : tweets) { for (MediaEntity entity : tweet.getMediaEntities()) { System.out.println(entity.getMediaURL()); } System.out.println("----------------------------------------------"); } } while ((query = result.nextQuery()) != null); System.exit(0); } catch (TwitterException te) { te.printStackTrace(); System.out.println("Failed to search tweets: " + te.getMessage()); System.exit(-1); } } }
重要なのは検索ワードに -rt -bot を含める事。
最低でも -rt は必須。
これを付けないと取得結果にリツイートが含まれる事になり重複した値を何件も取得する事になる。
以下、取得結果です。
... http://pbs.twimg.com/media/DMzoUU0U8AArVPc.jpg ---------------------------------------------- http://pbs.twimg.com/media/DIHiVpqUMAAi7wh.jpg ---------------------------------------------- http://pbs.twimg.com/media/DMzZzOsVAAALLG6.jpg ---------------------------------------------- ---------------------------------------------- http://pbs.twimg.com/media/DMzL2TcVAAAgRt9.jpg ---------------------------------------------- ...
ちゃんと画像のみが取得できてます。
Twitter4J まじ便利。