Scalaでコマンドラインツールを作るで紹介した方法を使って、ツールを作りました。
某エロ画像が沢山あるサイトから、画像をダウンロードするツール
僕たちはいつだって、星を追いかけてきた。届かない星に手を伸ばし、つかみとる夢を見てきた。
Halley、つまりハレー彗星、そんな思いを託してこのツールを作りました。
git clone git@github.com:numa08/halley.git cd halley sbt publish-local cs numa08/halley
と、インストール手順は面倒です。(そのうちなんとかします)
DSLの可能性
以前vambooというRubyのツールを実装した際、RubyのDSLで設定ファイルを作りました。
DSLを利用することで、自前でパースを作る必要がなくなり、コストの削減、品質の上昇を得ることができます。
今回、この機能を実現するためtwitter/utiの中のutil-mavenを利用しました。
ちなみに、なぜかTwitterのMavenリポジトリで公開されているものはバージョンが古く、Scala2.10では動きませんでした。
new urls { add("ダウンロードしたいページのURL") add("複数記入することもできる") // //から始まる行はコメントだ }
こんな内容のHalleyfile
を作り、halley
を実行することで、勝手にダウロードされます。
便利ですね。
まあ、当然利用は自己責任でお願いします。
scalaの可能性
ファイルIOの部分は若干面倒でしたが、それ以外は特に気にすること無く実装できました。
コレクション系のAPIが強力であるため、HTMLのパースとかそのを簡単に書けますね。
ただ、パース対象のHTMLが崩れていたため、実行時例外で死にました。そのため、jsoupを使ってます。
Javaのライブラリが使える点もScalaの強い点ですね、やっぱり。
今年もScalaやっていきますね。