指定ユーザのツイートをリツイートしたユーザ情報を取得(Twitter4J,Java,リツイート)
今回は,Twitter APIを使って任意のツイートをリツイートしたユーザ情報を取得するソースコードを載せます.
TwitterSample.javaでほとんどの動作をしているので,そこの説明をしたいと思います.
TwitterSample.javaでは,標準出力で以下のものが表示されます.
API制限別の残基数を気にしながらアレンジしてもらえれば幸いです.import twitter4j.Twitter; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; public class Retweet { public static void main(String[] args) { Twitter twitter = new TwitterFactory().getInstance(); String consumerKey = "自分のconsumerKey"; String consumerSecret = "自分のconsumerSecret"; String accessToken = "自分のaccessToken"; String accessTokenSecret = "自分のaccessTokenSecret"; twitter.setOAuthConsumer(consumerKey, consumerSecret); twitter.setOAuthAccessToken(new AccessToken(accessToken,accessTokenSecret)); TwitterSample sample = new TwitterSample(); sample.setTwitter(twitter); sample.getUserTimeLine("指定ユーザ名"); } }
- TwitterSample.java
import java.util.HashMap; import java.util.Map; import twitter4j.IDs; import twitter4j.Paging; import twitter4j.RateLimitStatus; import twitter4j.ResponseList; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.User; import twitter4j.api.HelpResources; import twitter4j.api.TweetsResources; import twitter4j.api.UsersResources; public class TwitterSample { private Twitter twitter; public Twitter getTwitter() { return twitter; } public void setTwitter(Twitter twitter) { this.twitter = twitter; } public void getUserTimeLine(String userName) { try { int firstPage = 1;// 探索開始ページ int tweetCount = 1;// ツイート番号 Maphelpmap = new HashMap (); ResponseList statuses = twitter.getUserTimeline(userName, new Paging(firstPage));// 指定ユーザのタイムライン表示されるtweetIDを取得 TweetsResources tweets = twitter.tweets();// TweetsResourceオブジェクトを作成 UsersResources users = twitter.users();// UsersResourcesオブジェクトを作成 HelpResources helps = twitter.help();// HelpResourcesオブジェクトを作成 int i=0; // 指定ユーザの Tweet を分析 for (Status status : statuses) { System.out.println("RetweetCount: " + status.getRetweetCount()); // リツイートされたことのある Tweet のみを分析 if(status.getRetweetCount()!=0 && !status.isRetweet()){ IDs retweeters = tweets.getRetweeterIds(status.getId(), -1);// リツイートユーザのIDを取得(1) long[] retweetIDs = retweeters.getIDs();// リツイートユーザのIDを取得(2) ResponseList retweet_users = users.lookupUsers(retweetIDs);// リツイートユーザの情報を取得 System.out.println("(" + tweetCount + ")@" + status.getUser().getName() + ", tweet: " + status.getText()); // リツイートユーザ情報表示 System.out.println("retweet_user_info: "); for(User retweet_user: retweet_users){ System.out.println("@" + retweet_user.getName() + ", ID: " + retweet_user.getId()); } i++; } if(i==1)break; helpmap = helps.getRateLimitStatus(); } for(Map.Entry e : helpmap.entrySet()){ System.out.println("key: " + e.getKey() + ", remain: " + e.getValue().getRemaining() + ", limit: " + e.getValue().getLimit()); } } catch (TwitterException e) {// エラー処理 e.printStackTrace(); System.out.println("失敗"); } } }