Twitterで特定ユーザーの画像と動画を抽出するコード(Java8 StreamAPI)

数日前に、「Twitterで特定ユーザーの画像と動画を抽出するコード」でJavaのTwiterライブラリーTwitter4jを使ってユーザーの画像を動画を一括で取得するソースコードを書きました。Java8のStreamAPIを勉強しながら書き直してみました。

ソースコード

https://github.com/dev001hajipro/twime

StreamAPIの感想

Java8のStream APIを勉強しながらTwitter4jでTwitterクライアントを実装しましたが、練習問題ではなく実用的なものを作ってみるとStream APIの問題点もわかってきました。

基本的なメソッドがまだ足りない

まず、Java8 Stream APIは、関数型プログラミング言語でよく使われるAPIが揃っていないようです。Java9になるとtakeWhileメソッドなどが導入されるようです。Java8の場合は自作するか、https://github.com/poetix/protonpack などを使う必要があります。

Javaプログラマはー、まずはfor文をStream APIで変えたりするところから始めると思うので、takeWhileなどはJava8で導入してほしかったです。

既存のライブラリーと組み合わせるのは面倒

Java7までStream APIやOptionalがないため、Javaのよく使われるライブラリーはStream APIで呼び出されることを想定していません。そのためTwitter4jライブラリーもそうですが、既存のライブラリーは、普通のJavaプログラムとして例外処理を行い、戻り値をOptionalでラップしていないため、Stream APIとOptionalを使った書き方をすると{}ブロックを使う必要が出てきます。

以下のコードなどはひとまず動くようにはなったのですが、ラムダ式は1行で綺麗に書けるほうが良いので、うまい方法を今後さがすのが課題です。

 

その他

Twitter4J 4.0.6では、Extended Media Entityは廃止

http://qiita.com/takke/items/0bd8be655bc95ab78185

 

Twitterで特定ユーザーの画像と動画を抽出するコード

動画と画像を取得して、それを<img>と<video>タグで囲って、HTMLを出力するソースコードです。直接ダウンロードするコードでもよいですが、ひとまず動いたのでこれで十分。これをJava8で書き直そう。。。