tmegos blog

Web developer

cheerio-httpcliでダウンロードした画像が乱れた

まとめ

stream.pipeではなくstream.toBufferを使えばうまくいくかもしれません

背景

ぷちぐる1周年記念で壁紙2種、SNSアイコン338種のプレゼントがありました

とはいえ1つ1つダウンロードするのも大変なので、画像をダウンロードするスクリプトを組みました
※利用する場合はサーバに負荷がかからないように注意してください
今思えば汎用的なファイルダウンローダでよかった

github.com

記事ページからリンクをたどって画像をダウンロードする簡単なスクリプトです
動かしてみると、ダウンロードはできるものの、一部の画像が以下のように横線が入ってしまいました

オリジナル スクリプトでダウンロード
f:id:tmegos:20190425112834p:plain f:id:tmegos:20190425112341p:plain

解決方法

公式の例にあるように、stream.toBufferを使ってBuffer化してからファイルに保存することで正しい画像を保存することができました