iterm2が画像をサポートするようになりました。
iterm2の新機能については、以下の記事が素晴らしくまとまっています。
今回はせっかくなので、node.jsでターミナルに画像を表示するコマンドラインツールを書いてみました。
popute-img
またはppt-img
でポプテピピックの4コマをランダムに表示します。
ポプテピピック、どれもパンチが効いててすごい。
コードはgithubで公開しています。
github: akameco/popute-random-img
インストール
npmからインストールできます。
$ npm install -g popute-random-img
使い方
以下のコマンドを提供します。
$ popute-img
または
$ ppt-img
実装
コマンドラインツール
node.jsによるコマンドラインツールの作り方はこちらを参照してください。
node.jsによるコマンドラインツール - Qiita
スクレイピング
httpライブラリはgotを使っています。
node.jsのhttpライブラリというとrequest
がメジャーですが、個人的には軽量でPromiseベースのgot
が好みです。
const got = require('got');
got('http://mangalifewin.takeshobo.co.jp/rensai/popute2/').then(res => {
console.log(res.body);
}).catch(e => console.log(e));
それをjQueryライクに要素を取得できるcheerio
でパースします。
got(url).then(res => {
const $ = cheerio.load(res.body);
return $('.bookR a').map((i, el) => {
return $(el).attr('href');
}).get();
}).catch(err => {
console.log(err);
});
iTerm2に画像を表示
term-img
を使いました。
sindresorhus/term-img: Display images in your terminal
画像のパスかbufferを引数に取ります。
const termImg = require('term-img');
termImg('test.jpg');
まとめ
今回は完全にお遊びですが、キャプチャをターミナルから確認したり、ログの可視化などに使えそうです。
テストがすべてpassしたらlgtmな画像を表示してもいいかもしれませんね。
akameco/popute-random-img: ポプテピピックの画像をランダムで取得