ヤルキデナイズド

Unclassified Articles on Software and IT

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.idillust.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 から取得できるためである。