Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Twitter4Jで画像をアップロードしてみる

Twitter4Jで画像アップロードする方法を知りたいです、とコメントを頂きました(^^)
ということで早速調べてやってみました。

補足

今回のようなものを自分が調べる場合ですが、だいたい

  • まずはググる(googleで検索)
  • 良さそうな情報があったらコード読む
  • コードに出てくるクラスをJavaDocで調べたりして理解する

Twitter4JのJavaDocは以下URLのページから利用Verのものを辿れます
http://twitter4j.org/ja/javadoc.html

  • 他に良い方法がないかググる、またはJavaDocを読んでいく

ですかね(^^;ありきたりですが…。


Twitter4Jの場合、メーリングリストがあったり、StackOverflow辺りでも情報がたくさんあるので、より良い方法を探していくには十分な情報があります。
あとTwitterでつぶやくと助け船が出たりするかも…(笑)
今回のようにブログでコメントもらうのも自分としてはありです。返信は遅いかもですが(^^;

画像のアップロードを調べるとImageUploadを利用してできるようですが、StatusUpdateクラスが持つmediaメソッドを利用することもできるようです(メーリングリストの情報にて)。今回はこちらを選びました。

package com.mycompany.makimakibot;

import java.nio.file.Path;
//import java.nio.file.Paths;
import twitter4j.StatusUpdate;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.Status;
import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.FileSystem;

/**
 * Twitter4Jで画像アップロード
 */
public class App 
{
    public static void main( String[] args ) throws TwitterException
    {
        Twitter twitter = new TwitterFactory().getInstance();

        //画像ファイルを絶対パスで指定

        //PathsよりFileSystem使うほうがよさそうなので修正しました
        //Path path = Paths.get("C:\\temp\\makimaki.jpg");
        
        FileSystem fs = FileSystems.getDefault();
        Path path = fs.getPath("C:\\temp\\makimaki.jpg");
        File file = path.toFile();
        
        //ツイートと画像添付
        Status status = twitter.updateStatus(
            new StatusUpdate("Here is one of my favorite photo.").media(file));

        //結果データの一部を表示してみる
        System.out.println(status.getCreatedAt());
    }
}

ここではサンプルなので例外をthrowしちゃってますが、本来はハンドリングして下さい(^^;

画像の読み込み方法も色々ありますが、NIO2と呼ばれるJDK7で追加された新しいファイル操作を利用するのが良いと去年JJUGで学んだので使っています。NIO2は

辺りがわかりやすく、いつも参考にさせてもらっています。

ということで、実行してみます。今回は前回アドバイスもらったのでテスト用(?)アカウントでつぶやいてみました。

かわいい(*´Д`)

ちゃんと画像が送れてます(^^)

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村