読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

Twitter4Jでエバスクのツイートを分析してみた #evatfm

雑記 Twitter4J

昔、乃木坂46公式Twitterアカウントのつぶやきを見ていて「最近一番多くRTされたツイートってどんなのだろう?」と思ったことがありました。で、当時Java EEとTwitter4Jの勉強兼ねてリツイート数とファボ(いいね)数が確認できる以下Webアプリを趣味開発して公開してました。

http://46collection.sakamichi46.com/
http://cdn-ak.f.st-hatena.com/images/fotolife/k/kikutaro777/20160313/20160313235434.jpg

で、最近ラジオ「エバンジェリストスクール! - TOKYO FM Podcasting」の公式ツイートみてて全く同じことを思ったり。

twitter.com

気になったので、(さすがにWebアプリではないのですが)Twitter4Jを利用して同じことを確認をしてみました。

※2017/2/14時点での集計ですので、実際には可変する可能性があります

コードはざっくりこんな感じ。ちょっと適当すぎかも(^^;

package com.sakamichi46.evatfm;

import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import twitter4j.Paging;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;

/**
 *
 * @author kikuta
 */
public class EvatfmAnalyticsMain {

    public static int MAX_PAGE = 200;
    public static int COUNT = 100;
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws TwitterException, InterruptedException, IOException {
        Twitter twitter = TwitterFactory.getSingleton();

        List<Status> count = count(twitter);
        List<Status> sortedByRetweet = count.stream().sorted(Comparator.comparing(Status::getRetweetCount).reversed()).collect(Collectors.toList());
        List<Status> sortedByFav = count.stream().sorted(Comparator.comparing(Status::getFavoriteCount).reversed()).collect(Collectors.toList());

        FileSystem fs = FileSystems.getDefault();
        Path path = fs.getPath("./evaRetweet.txt");
        try(BufferedWriter br = Files.newBufferedWriter(path, Charset.forName("UTF-8"))) {
            br.write(sortedByRetweet.toString());
            br.close();
        }

        path = fs.getPath("./evaFav.txt");
        try(BufferedWriter br = Files.newBufferedWriter(path, Charset.forName("UTF-8"))) {
            br.write(sortedByFav.toString());
            br.close();
        }
    }
    
    public static List<Status> count(Twitter twitter) {
        List<Status> listTimeline = new ArrayList<>();
        Paging page = new Paging(MAX_PAGE, COUNT);

        IntStream.range(1, MAX_PAGE).forEach(i -> {
            page.setPage(i);
            try {
                ResponseList<Status> userTimeline = twitter.getUserTimeline("@waki_evatfm", page);
                userTimeline.stream().forEach(s -> {
                    if(!listTimeline.contains(s)) {
                        listTimeline.add(s);
                    }
                });
            } catch (TwitterException ex) {
                System.out.println(ex);
            }
        });

        return listTimeline;
    }
}

いいね数

1位 545いいね


2位 376いいね


3位 368いいね


4位 334いいね


5位 331いいね


6位 303いいね


7位 301いいね


8位 263いいね


9位 262いいね


10位 252いいね


リツイート数

1位 216RT


2位 143RT


3位 140RT


4位 135RT


5位 133RT


5位 133RT


7位 126RT


8位 118RT


9位 115RT


10位 110RT

と、こんな感じで、全般的に若ちゃんの写真系が多い(^^;;;とはいえ、ある程度予想通りでしたがw

ちなみにエバスク公式ツイートではないですが、乃木坂46の公式アカウントがつぶやいた以下が、RT/Favともに多かったです。

ホントは #evatfm のハッシュタグを含むツイートの量を分析しようと思ったのですが、TwitterのSearch APIは2週間程度分くらいしか取得できないようで確認できませんでした。残念すぎる(*´Д`)(ちなみに2/10(金)~2/13(月)の間で調べたら3871件もありました!)

IT業界に身を置く自分としては、エバスクってホントにITのトレンド情報を流してるので、色々な豆知識ツイートをもっとRT/Favして欲しいなーとも(^^;

で、この分析してて思いついたのですが、趣味で作ってる若月さんのBotに「エバスク」とか「#evatfm」って話しかけたら@evatfmアカウントの過去ツイートをランダムに引っ掛けるような機能を実装しようかなーと思いました。

若様bot、なんだかんだで利用ユーザが100近くなっているので、エバスクリスナーな方々にも是非お試ししてもらいたいなーと思います。以下サイトが詳しいですが

wakasamabot.sakamichi46.com

こちらのQRコードをLINEのQRから読み取ってもらうと友達追加できます。

f:id:kikutaro777:20170128222526p:plain

それにしてもエバスクを聴けば聴くほど若ちゃんを好きになりますね。

f:id:kikutaro777:20170215001025j:plain