Pixiv gem を作った
Ruby から pixiv にアクセスする Pixiv gem を作った。 gem install pixiv
でインストールできる。
使い方
require 'pixiv' pixiv = Pixiv.client('pixiv_id', 'password') illust_id = 1 illust = pixiv.illust(illust_id) puts illust.title member_id = 1 member = pixiv.member(member_id) member.works.each {|illust| ... } member.bookmarks.each do |illust| if illust.manga? pixiv.download_manga(illust, ['manga/', :image_name]) else pixiv.download_illust(illust, ['illust/', :image_name]) end end
より詳細な使い方については README、サンプルスクリプト、 API ドキュメントを参照のこと。
注意
pixiv の利用規約はクローラーなどのプログラムを使って作品を収集する行為を禁止している。 Pixiv gem を使う場合は私的利用の範囲に留めること。
遅延アクセスについて
サーバの負荷を軽減するために、Pixiv gem は必要になるまで pixiv へのアクセスを行わない。たとえば次のコードでは、アクセスが発生するのは illust.title
を呼んだ時点である:
illust = pixiv.illust(123) puts illust.id puts illust.url puts illust.title # ここで /member_illust.php にアクセス
ID は既知であるしイラストの URL は ID から求められるので、 illust.id
や illust.url
の呼び出しはアクセスを伴わない。
さらに、タイトルや他の属性が既知である状況では illust.title
などもアクセスを行わない:
# ループ開始時に /bookmarks.php にアクセスしてイラスト一覧を取得 pixiv.bookmarks.each do |illust| puts illust.title puts illust.author.name puts illust.original_image_url puts illust.tag_names # ここで /member_illust.php にアクセス end
タイトル(それに作者名や画像の URL)は /bookmarks.php から取得できるためである。