| 1 |
1 |
package com.mizo0203.twitter.timeline.talker;
|
| 2 |
2 |
|
|
3 |
import java.util.Locale;
|
| 3 |
4 |
import twitter4j.StallWarning;
|
| 4 |
5 |
import twitter4j.Status;
|
| 5 |
6 |
import twitter4j.StatusDeletionNotice;
|
| ... | ... | |
| 10 |
11 |
|
| 11 |
12 |
public class TwitterTimelineTalker {
|
| 12 |
13 |
|
| 13 |
|
private boolean mVoice_f1 = true;
|
|
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;
|
| 14 |
20 |
private final TwitterStream mTwitterStream;
|
| 15 |
21 |
private final Talker mTalker;
|
| 16 |
22 |
|
| 17 |
23 |
public TwitterTimelineTalker(Configuration configuration, Talker talker) {
|
| 18 |
24 |
mTwitterStream = new TwitterStreamFactory(configuration).getInstance();
|
| 19 |
|
mTwitterStream.addListener(new MyStatusListener());
|
|
25 |
mTwitterStream.addListener(new OnStatusEvent());
|
| 20 |
26 |
mTalker = talker;
|
| 21 |
27 |
}
|
| 22 |
28 |
|
| 23 |
29 |
public void start() {
|
|
30 |
// OnStatusEvent に Twitter タイムラインが通知される
|
| 24 |
31 |
mTwitterStream.user();
|
| 25 |
32 |
}
|
| 26 |
33 |
|
| 27 |
|
private class MyStatusListener implements StatusListener {
|
|
34 |
private class OnStatusEvent implements StatusListener {
|
| 28 |
35 |
|
| 29 |
36 |
public void onStatus(final Status status) {
|
| 30 |
|
if (!"ja".equalsIgnoreCase(status.getLang())) {
|
|
37 |
if (!LANG_JA.equalsIgnoreCase(status.getLang())) {
|
| 31 |
38 |
return;
|
| 32 |
39 |
}
|
|
40 |
|
| 33 |
41 |
final StringBuffer buffer = new StringBuffer();
|
| 34 |
42 |
buffer.append(status.getUser().getName());
|
| 35 |
43 |
buffer.append("さんから、");
|
| 36 |
44 |
buffer.append(status.getText());
|
| 37 |
45 |
System.out.println(buffer);
|
| 38 |
46 |
|
| 39 |
|
// System.out.println("@" + status.getUser().getScreenName() + " | "
|
| 40 |
|
// + status.getText() + " 【 https://twitter.com/" +
|
| 41 |
|
// status.getUser().getScreenName() + "/status/" + status.getId() +
|
| 42 |
|
// " 】");
|
| 43 |
|
// こんな感じでstatusについている名前とかを色々表示させるとさらに欲しい情報にたどり着けると思います
|
|
47 |
mTalker.talkAsync(UrlUtil.convURLEmpty(buffer).replaceAll("\n", "。"), mYukkuriVoice);
|
| 44 |
48 |
|
| 45 |
|
|
| 46 |
|
mTalker.talkAsync(UrlUtil.convURLEmpty(buffer).replaceAll("\n", "。"),
|
| 47 |
|
(mVoice_f1 ? Talker.YukkuriVoice.REIMU : Talker.YukkuriVoice.MARISA));
|
| 48 |
|
mVoice_f1 = !mVoice_f1;
|
|
49 |
// 読み上げは、霊夢と魔理沙が交互に行なう
|
|
50 |
if (mYukkuriVoice == Talker.YukkuriVoice.REIMU) {
|
|
51 |
mYukkuriVoice = Talker.YukkuriVoice.MARISA;
|
|
52 |
} else {
|
|
53 |
mYukkuriVoice = Talker.YukkuriVoice.REIMU;
|
|
54 |
}
|
| 49 |
55 |
|
| 50 |
56 |
}
|
| 51 |
57 |
|
Refactoring TwitterTimelineTalker