質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

1回答

1680閲覧

twitter4Jで140文字以上のツイートを取得したい

masue101

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2018/03/07 13:33

twitter4Jを使って、ツイートを取得するプログラムを作成したのですが、
140文字以上は「・・・」となってしまいます。
twitter4jのバージョンが4.0.6であればtweet_mode=extendedをできると
あるサイトで見たので、その設定を行ったのですが、うまくいきませんでした。

ソースを一部抜粋します。
何か書き方が間違っているでしょうか?
status.getText()部分が140文字を超えると「・・・」になります。

private static ConfigurationBuilder create() { ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setDebugEnabled(true) .setOAuthConsumerKey("xxxxxxxxxx") .setOAuthConsumerSecret("xxxxxxx") .setOAuthAccessToken("xxxxxxxxx") .setOAuthAccessTokenSecret("xxxxxxxx") .setTweetModeExtended(true); return cb; } private void run() throws Throwable { TwitterFactory tf = new TwitterFactory(create().build()); Twitter twitter = tf.getInstance(); Query query = new Query(); query.setCount(100); query.setQuery("xxx"); QueryResult result = twitter.search(query); for (Status status : result.getTweets()) { logger.info("content = " + status.getText()); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

下記のコードで試してみましたところ、機能しているようです。

[pom.xml]

xml

1<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>...</groupId> 5 <artifactId>...</artifactId> 6 <version>0.0.1-SNAPSHOT</version> 7 <build> 8 <sourceDirectory>src</sourceDirectory> 9 <plugins> 10 <plugin> 11 <artifactId>maven-compiler-plugin</artifactId> 12 <version>3.7.0</version> 13 <configuration> 14 <source>9</source> 15 <target>9</target> 16 </configuration> 17 </plugin> 18 </plugins> 19 </build> 20 <dependencies> 21 <dependency> 22 <groupId>org.twitter4j</groupId> 23 <artifactId>twitter4j-core</artifactId> 24 <version>4.0.6</version> 25 </dependency> 26 </dependencies> 27</project>

[Q116545.java]

java

1import twitter4j.Status; 2import twitter4j.Twitter; 3import twitter4j.TwitterException; 4import twitter4j.TwitterFactory; 5import twitter4j.conf.ConfigurationBuilder; 6 7public class Q116545 { 8 static ConfigurationBuilder config() { 9 return new ConfigurationBuilder() 10 .setOAuthConsumerKey("...") 11 .setOAuthConsumerSecret("...") 12 .setOAuthAccessToken("...") 13 .setOAuthAccessTokenSecret("..."); 14 } 15 public static void main(String[] args) { 16 for (boolean b : new boolean[] { true, false }) { 17 System.out.println("#setTweetModeExtended = " + b); 18 Twitter twitter = new TwitterFactory(config().setTweetModeExtended(b).build()).getInstance(); 19 try { 20 for (Status status : twitter.getUserTimeline()) { 21 System.out.println(status.getText()); 22 } 23 } catch (TwitterException e) { 24 e.printStackTrace(); 25 } 26 } 27 } 28}

[実行結果]

#setTweetModeExtended = true 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 https://t.co/fKYTTT766U 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 test #setTweetModeExtended = false 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345… https://t.co/ozr7zEXN45 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 test

[ツイート内容]
ツイート内容

投稿2018/03/07 15:33

編集2018/03/07 15:40
nakazawaken1

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masue101

2018/03/08 02:32

確かに半角文字に関しては140文字以上取得できることを確認できました。 しかし、一番やりたいことは日本語のツイートで「RT @xxx」などがあった場合に その文字までカウントしてしまい、140文字で切られてしまっていることが問題です。 その点を踏まえて、140文字以上取得できる方法はあるのかご存知であれば、ご教授いただきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問