Class: Pixiv::Illust

Inherits:
Page
  • Object
show all
Defined in:
lib/pixiv/illust.rb

Defined Under Namespace

Modules: WithClient

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Page

#bind, #doc, #fetched?, #force, #initialize, lazy_new

Constructor Details

This class inherits a constructor from Pixiv::Page

Instance Attribute Details

#anchors_in_captionArray<Nokogiri::XML::NodeSet, nil> (readonly)

Lazily returns anchors_in_caption

Returns:

  • (Array<Nokogiri::XML::NodeSet, nil>)


62
# File 'lib/pixiv/illust.rb', line 62

lazy_attr_reader(:anchors_in_caption) { doc.search('.work-info .caption a') }

#captionString (readonly)

Lazily returns caption

Returns:

  • (String)


51
52
53
54
55
56
57
58
# File 'lib/pixiv/illust.rb', line 51

lazy_attr_reader(:caption) {
  node = doc.at('.work-info .caption')
  if node
    node.inner_text
  else
    ""
  end
}

#deleted?Boolean (readonly)

Lazily returns deleted?

Returns:

  • (Boolean)


86
# File 'lib/pixiv/illust.rb', line 86

lazy_attr_reader(:deleted?) { is_deleted? }

#illust_idInteger (readonly) Also known as: id

Lazily returns illust_id

Returns:

  • (Integer)


29
# File 'lib/pixiv/illust.rb', line 29

lazy_attr_reader(:illust_id) { at!('#rpc_i_id')['title'].to_i }

#medium_image_urlString (readonly)

Lazily returns medium_image_url

Returns:

  • (String)


18
# File 'lib/pixiv/illust.rb', line 18

lazy_attr_reader(:medium_image_url) { at!('.works_display img')['src'] }

#member_idInteger (readonly) Also known as: author_id

Lazily returns member_id

Returns:

  • (Integer)


31
# File 'lib/pixiv/illust.rb', line 31

lazy_attr_reader(:member_id) { at!('.user-link').attributes['href'].text.match('id=([0-9]*)')[1].to_i }

#member_nameString (readonly) Also known as: author_name

Lazily returns member_name

Returns:

  • (String)


33
34
35
36
37
# File 'lib/pixiv/illust.rb', line 33

lazy_attr_reader(:member_name) {
  # Note: generally member_name can easily be found at +at('.profile_area a')['title']+
  # but this is not the case on your own illust page; so this hack.
  at!('title').inner_text[%r!^「#{Regexp.escape(title)}」/「(.+)」の(?:イラスト|漫画) \[pixiv\]$!, 1]
}

#mypixiv_only?Boolean (readonly)

Lazily returns mypixiv_only?

Returns:

  • (Boolean)


71
# File 'lib/pixiv/illust.rb', line 71

lazy_attr_reader(:mypixiv_only?) { doc.at('[@class="_no-item closed"]').nil?.! }

#num_pagesInteger? (readonly)

Lazily returns num_pages

Returns:

  • (Integer, nil)


43
44
45
46
47
# File 'lib/pixiv/illust.rb', line 43

lazy_attr_reader(:num_pages) {
  node = doc.at('//ul[@class="meta"]/li[2]')
  n = node ? node.inner_text[/(\d+)P$/, 1] : nil
  n && n.to_i
}

#original_image_refererString (readonly) Also known as: original_image_referrer

Lazily returns original_image_referer

Returns:

  • (String)


27
# File 'lib/pixiv/illust.rb', line 27

lazy_attr_reader(:original_image_referer) { ROOT_URL + '/' + at!('//div[@class="works_display"]/a')['href'] }

#original_image_urlString (readonly)

Lazily returns original_image_url

Returns:

  • (String)


20
# File 'lib/pixiv/illust.rb', line 20

lazy_attr_reader(:original_image_url) { illust? ? image_url_components[0] + 'img-original/img/' + image_url_components[1] + '0' + image_url_components[2] : nil }

#original_image_urlsArray<String> (readonly)

Lazily returns original_image_urls

Returns:

  • (Array<String>)


22
23
24
25
# File 'lib/pixiv/illust.rb', line 22

lazy_attr_reader(:original_image_urls) {
  illust? ? [original_image_url]
          : (0...num_pages).map {|n| image_url_components.join("_p#{n}") }
}

#rated_countInteger (readonly)

Lazily returns rated_count

Returns:

  • (Integer)


66
# File 'lib/pixiv/illust.rb', line 66

lazy_attr_reader(:rated_count) { at!('.rated-count').inner_text.to_i }

#scoreInteger (readonly)

Lazily returns score

Returns:

  • (Integer)


68
# File 'lib/pixiv/illust.rb', line 68

lazy_attr_reader(:score) { at!('.score-count').inner_text.to_i }

#small_image_urlString (readonly)

Lazily returns small_image_url

Returns:

  • (String)


16
# File 'lib/pixiv/illust.rb', line 16

lazy_attr_reader(:small_image_url) { at!('meta[property="og:image"]')['content'] }

#tag_namesArray<String> (readonly)

Lazily returns tag_names

Returns:

  • (Array<String>)


49
# File 'lib/pixiv/illust.rb', line 49

lazy_attr_reader(:tag_names) { search!('ul.tags a.text').map {|n| n.inner_text } }

#titleString (readonly)

Lazily returns title

Returns:

  • (String)


41
# File 'lib/pixiv/illust.rb', line 41

lazy_attr_reader(:title) { at!('.work-info h1.title').inner_text }

#upload_atTime (readonly)

Lazily returns upload_at

Returns:

  • (Time)


39
# File 'lib/pixiv/illust.rb', line 39

lazy_attr_reader(:upload_at) { get_upload_at }

#views_countInteger (readonly)

Lazily returns views_count

Returns:

  • (Integer)


64
# File 'lib/pixiv/illust.rb', line 64

lazy_attr_reader(:views_count) { at!('.view-count').inner_text.to_i }

Class Method Details

.url(illust_id) ⇒ String

Returns the URL for given illust_id

Parameters:

  • illust_id (Integer)

Returns:

  • (String)


11
12
13
# File 'lib/pixiv/illust.rb', line 11

def self.url(illust_id)
  "#{ROOT_URL}/member_illust.php?mode=medium&illust_id=#{illust_id}"
end

Instance Method Details

#illust?Boolean

Returns:

  • (Boolean)


81
# File 'lib/pixiv/illust.rb', line 81

def illust?; !manga? end

#manga?Boolean

Returns:

  • (Boolean)


83
# File 'lib/pixiv/illust.rb', line 83

def manga?; !!num_pages end

#urlString

Returns:

  • (String)


79
# File 'lib/pixiv/illust.rb', line 79

def url; self.class.url(illust_id) end