現在twitter4jのストリーミングのfilter()を使用して、
指定してユーザのつぶやきをリアルタイムで収集しています。
機能は正常に動いていますが、ユーザがURLを含めたつぶやきをすると
URLの部分がへんに変わっています。その時は例外は起きていません。
(※でも、WEB上(twitter.com)では正常に表示されています。)
例えば)ユーザがhttp://google.comとつぶやいた時に、ストリーミングAPI
でとれたテキストは
http://t.co/BasgikzDとなっています。
開発環境:
twitter4j-core-android-2.2.5.jar
twitter4j-stream-android-2.2.5.jar
android 2.2 API 8
JDK:1.6.0.22
Eclipse SDK:Version: 3.6.2
ソースコード:
myUserStreamAdapter = new MyUserStreamAdapter();
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey("");
builder.setOAuthConsumerSecret("");
builder.setOAuthAccessToken("");
builder.setOAuthAccessTokenSecret("");
Configuration conf = builder.build();
TwitterStreamFactory twitStreamFactory = new TwitterStreamFactory(conf);
TwitterStream twitStream = twitStreamFactory.getInstance();
twitStream.addListener(myUserStreamAdapter);
long[] listOfUserId = {1L};
FilterQuery filterQuery = new FilterQuery();
filterQuery.follow(listOfUserId);
twitStream.filter(filterQuery);
....
class MyUserStreamAdapter extends UserStreamAdapter {
@Override
public void onStatus(Status status) {
super.onStatus(status);
Log.v("onStatus", status.getText());
}
@Override
public void onException(Exception e) {
e.printStackTrace();
}
}
この問題をどう言う風に解決するかを教えて頂きないでしょうか。
以上です。
URLがt.coで短縮されることを指しておりますでしょうか?
でしたらこれは仕様です。
https://dev.twitter.com/docs/tco-url-wrapper
ストリーミングAPI、REST APIに関わらず短縮されます。
表示用のURLは status.getURLEntities().getExpandedURL() で取得できます。
# 実際のリンク先は t.co をそのまま使ってください
以上よろしくお願い致します。
> --
> Twitter4J の最新情報をフォロー: http://twitter.com/t4j_news
> 現在のバージョン - 安定: 2.2.5, 開発中: 2.2.6-SNAPSHOT
> http://twitter4j.org/jira/secure/IssueNavigator.jspa?requestId=10030
> バグトラッキング: http://twitter4j.org/jira/browse/TFJ
>
> このメールは次の Google グループの参加者に送られています: Twitter4J J
> このグループにメールで投稿: twitt...@googlegroups.com
> このグループから退会する: http://groups.google.com/group/twitter4j-j?hl=ja
急速なお返事有難うございます。
下記は納得しました。status.getURLEntities()[x].getExpandedURL() で元の
URLを取得できました。
でも、ぶやき中からURLsのみをとってしまいますね。
例えば)
◆ユーザが以下をつぶやいた。
「私は http://google.com, http://twitter.com が好きです。」
◆自分のアプリ上に表示されるテキスト
「私は http://t.co/BasgikzD, http://t.co/FrtgikzD が好きです。」
◆status.getURLEntities()[X].getExpandedURL() で取得するテキスト(URL
以外のつぶやきはとれない)
status.getURLEntities()[0].getExpandedURL() :http://google.com
status.getURLEntities()[1].getExpandedURL() :http://twitter.com
◆【やりたいこと】以下のように表示したい
「私は http://google.com, http://twitter.com が好きです。」
ユーザが打ったテキストをそのまま表示するのにするものでしょうか。
tweetのテキストを引数で渡すとURLの部分をparseして、それ以外テキストはそ
のまま返してくれる関数がありませんか。
そういう関数はないということでしょうか。
御協力ありがとうございました。
> 例えば)ユーザがhttp://google.comと つぶやいた時に、ストリーミングAPI