プロジェクト

全般

プロフィール

ダウンロード (2.49 KB) 統計
| ブランチ: | タグ: | リビジョン:

github / src / com / mizo0203 / twitter / timeline / talker / TwitterTimelineTalker.java @ 3c5e61d4

1
package com.mizo0203.twitter.timeline.talker;
2

    
3
import java.util.Locale;
4
import twitter4j.StallWarning;
5
import twitter4j.Status;
6
import twitter4j.StatusDeletionNotice;
7
import twitter4j.StatusListener;
8
import twitter4j.TwitterStream;
9
import twitter4j.TwitterStreamFactory;
10
import twitter4j.conf.Configuration;
11

    
12
public class TwitterTimelineTalker {
13

    
14
  /**
15
   * ISO 639 言語コード - 日本語 (ja)
16
   */
17
  public static final String LANG_JA = Locale.JAPAN.getLanguage();
18

    
19
  private Talker.YukkuriVoice mYukkuriVoice = Talker.YukkuriVoice.REIMU;
20
  private final TwitterStream mTwitterStream;
21
  private final Talker mTalker;
22

    
23
  public TwitterTimelineTalker(Configuration configuration, Talker talker) {
24
    mTwitterStream = new TwitterStreamFactory(configuration).getInstance();
25
    mTwitterStream.addListener(new OnStatusEvent());
26
    mTalker = talker;
27
  }
28

    
29
  public void start() {
30
    // OnStatusEvent に Twitter タイムラインが通知される
31
    mTwitterStream.user();
32
  }
33

    
34
  private class OnStatusEvent implements StatusListener {
35

    
36
    public void onStatus(final Status status) {
37
      if (!LANG_JA.equalsIgnoreCase(status.getLang())) {
38
        return;
39
      }
40

    
41
      final StringBuffer buffer = new StringBuffer();
42

    
43
      if (status.isRetweet()) {
44
        Status retweetedStatus = status.getRetweetedStatus();
45
        buffer.append(status.getUser().getName() + "さんがリツイート。");
46
        buffer.append(retweetedStatus.getUser().getName() + "さんから、");
47
        buffer.append(retweetedStatus.getText());
48
      } else {
49
        buffer.append(status.getUser().getName() + "さんから、");
50
        buffer.append(status.getText());
51
      }
52

    
53
      mTalker.talkAsync(UrlUtil.convURLEmpty(buffer).replaceAll("\n", "。"), mYukkuriVoice);
54

    
55
      // 読み上げは、霊夢と魔理沙が交互に行なう
56
      if (mYukkuriVoice == Talker.YukkuriVoice.REIMU) {
57
        mYukkuriVoice = Talker.YukkuriVoice.MARISA;
58
      } else {
59
        mYukkuriVoice = Talker.YukkuriVoice.REIMU;
60
      }
61

    
62
    }
63

    
64
    public void onDeletionNotice(StatusDeletionNotice sdn) {
65
      System.err.println("onDeletionNotice.");
66
    }
67

    
68
    public void onTrackLimitationNotice(int i) {
69
      System.err.println("onTrackLimitationNotice.(" + i + ")");
70
    }
71

    
72
    public void onScrubGeo(long lat, long lng) {
73
      System.err.println("onScrubGeo.(" + lat + ", " + lng + ")");
74
    }
75

    
76
    public void onException(Exception excptn) {
77
      System.err.println("onException.");
78
    }
79

    
80
    @Override
81
    public void onStallWarning(StallWarning arg0) {}
82
  }
83

    
84
}
(4-4/5)