みなさん、pixiv好きですか?わたしは好きです。日々色々な絵がアップロードされ、本当に楽しいですよね。
今回は、npm install
の時間にpixivのデイリーランキングを表示して、退屈な時間を最高の時間にするハックをすることにします。
デモ
こんな感じです。
インストール
npmからインストールできます。
しかし、残念ながら最新版のiTerm2でないと画像が表示されません。iTerm2が最新版でない人はインストールをお願いします。
$ npm i -g npm-pixiv
npm-pixiv
というコマンドを提供しますが、.bashrcや.zshrcで以下のように設定するのがおすすめです。
alias npm=npm-pixiv
実装
実装については、実はほぼおなじ内容(ポプテピピック版)の記事を書いたので、そちらを参照してください。
npm installの無駄な待ち時間を圧倒的にカイゼンする方法 - Qiita
差異についてだけ説明をしようと思います。
pixivをスクレイピングし画像を取得していますが、pixivの画像はリファラが制限されています。
リファラのついての説明をググったらちょうどpixivのヘルプがでてきたので引用しておきます。
リファラとは、Webページのリンクをクリックして別のページに移動した際のリンク元(一つ前のページ)のページのことです。
pixiv ヘルプセンター|リファラとは何ですか?
これがどういうことかというと、pixivのサイトを経由せずに画像を表示しようとすると403が返るので閲覧することができないということです。これを制限しないと、いくらでも別のサイトのimgに埋め込まれてしまうのでこの対策は当然ですね。httpリクエストのヘッダーのRefererをhttp://www.pixiv.net/
にすることで回避できます。
gotでは以下のように書きますが、他のhttpライブラリでも似た感じ書けると思います。
got(url, {
encoding: null,
headers: {
Referer: 'http://www.pixiv.net/'
}
}).then(res => res.body);
まとめ
以前、npm install時にポプテピピックの4コマを流していましたが、npm installを繰り返すごとに竹書房が破壊され罪悪感がありました。しかし、pixivのランキングを流すことで最高の気分でプログラミングができるようになりました。
むしろ今は、pixivのランキングを見るために無限にnpm installをするまであります。
75行程度の簡単なコードですが、普段のプログラミングが少し楽しくなりました。仕事のコードだけではなく、役に立つかどうかは置いといて小さなハックを楽しんでみるといいかもしれません。
なお、仕事中にこれを表示して怒られたなんて、そんな責任は一切負いませんのであしからず。
githubにて公開してるので、issueやプルリクエストをお待ちしております。
github: akameco/npm-pixiv
参考
npm installの無駄な待ち時間を圧倒的にカイゼンする方法 - Qiita
node.jsによるコマンドラインツール - Qiita
iTerm2の新機能を使ってターミナルにポプテピピックの4コマをランダムに表示する - Qiita