node.jsのpixivクライアント
pixivのAPIが変わった。 で、解析してる人がいて、pythonのライブラリを公開している。
Sniffer for iOS 6.x Common API · upbit/pixivpy Wiki
APIの出来は前のAPIが最悪だったのを考えると、異常によくなった。 ただ、残念なことにr-18フラグがなくなった。 これはまじで残念だ。 アカウントでr-18を許可してても気分によってr-18画像見たくないことも多分にあるのに。
で、node.js用にAPIクライアントを書いた。 pythonとライブラリと同じことができる。
akameco/pixiv-app-api: Promise base pixiv API client
インストール
$ npm install --save pixiv-app-api
pixiv-img
とセットで使うと20行ぐらいでダウンローダーが書ける。
const PixivAppApi = require('pixiv-app-api'); const pixivImg = require('pixiv-img'); const pixiv = new PixivAppApi('your username', 'your password'); const word = '艦これ10000users入り'; pixiv.searchIllust(word) .then(json => { console.log(json); return pixiv.next(); }) .then(json => { console.log(`downloading ${json.illusts[0].title}`); return pixivImg(json.illusts[0].image_urls.large); }).then(() => { console.log('finish'); });
使えるクエリとか、できることはreadmeに書いたのみ見てほしい。
akameco/pixiv-app-api: Promise base pixiv API client
面白いのはnext_url
パラメータで、次のリクエストのurlが入っている。
pixiv-app-api
では、next()
で次のAPIが叩ける。
あと、おそらくAPIのバグなんだけど、次のURL情報が入っていてもoffsetというパラメータが5000を超えるとエラーが変える。 このエラーが400で返ってきて他のエラーと区別がつかなくてやっかい。 サーバサイドでnext_urlパラメータを渡さないようにすればいいと思うのだけど。
pixivダウンローダー
akameco/pixiv-dl: pixiv image downloader
タグ検索もしくはランキング情報から画像をダウンロードする。
最近CUIの描画にはまってるのでオシャンティな感じにした。 残り時間やダウンロードしてるイラスト情報を表示する。
画像のファイル名をユーザ名-タイトルとかにリネームする機能付き。 デフォルトはイラストID。
名前とパスワードは最初の一回でキャッシュされるの、2回目からは必要ない。 リクエスト間隔は5秒にしてある。 が、サブ垢つくってやるのが吉。
$ npm install -g pixiv-dl
$ pixiv-dl --help pixiv image downloader Usage $ pixiv-dl [input] Options --uername, -u pixiv username (use cache)↲ --password, -p pixiv password (use cache)↲ --output, -o output directory [Default: curret dir] --name, -n custom filename ranking ranking mode day | week | month | day_male | day_female | week_original | week_rookie | day_mang day_r18 | day_male_r18 | day_female_r18 | week_r18 | week_r18g Examples $ pixiv-dl リゼロ10000users入り --username hoge --password fuga $ pixiv-dl リゼロ10000users入り --output rezero --name user.account-title $ pixiv-dl ranking day --output rezero --name user.account-title
ダウンローダープレビュー
どんな画像が保存されたかをリアルタイムでみたいので、ダウンロードのプレビューライブラリ書いた。 まあこれはディレクトリ監視して新しい画像を表示させてるだけで、すごい雑。
基本は上記のpixiv-dl
と同じ。プレビューだけがついてる。
akameco/pixiv-dl-preview: pixivイラストダウンローダー + 画像プレビュー
$ npm install -g pixiv-dl-preview
アカウントBAN
今はリクエスト間隔を変えてBANされなくなったけど、一度BANされた。
BANされたアカウントと同じアカウントでつくってほぼ復元できたので、論理削除じゃないっぽい。
余談だけど、全画像ダウンロードして、完全なpixivのコピーをつくるなら pixivのオリジナルサイズの画像は認証してなくてもとれるので、 APIを使わずにillust_idをひとつずつ増やしてダウンロードすればいい。 ログインしてなくてもいいので、適当に串をさしてしまえばアカウントBANとかipのアクセス制限とか何も考えずにすべてを画像をもってこれる。 僕はしてないしする気もないけど。