Skip to content

Documentation

Gael Roussel edited this page May 20, 2022 · 11 revisions

Doujinshi

Doujinshi.new(Integer) -> Doujinshi

Doujinshi.new(id: 220794)
# => #<Doujinshi:0x00007fa341dd3998 @client=#<Net::HTTPOK 200 OK readbody=true>, @count_pages=31, @id=220794, @media_id="1170172">

Doujinshi.random -> Doujinshi

Doujinshi.random # => #<Doujinshi:0x00007fe340674e88...>

exists? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.exists? # => true

doujin = Doujinshi.new(id: -1)
doujin.exists? # => false

title(type: Symbol) -> String

type can be: :pretty (default), :english or :japanese

doujin = Doujinshi.new(id: 220794)
doujin.title(type: :pretty) # => "Android no Ecchi na Yatsu | Horny Androids"

cover -> String

doujin = Doujinshi.new(id: 220794)
doujin.cover # => "https://t.nhentai.net/galleries/1170172/cover.jpg"

page -> String

page(page: Integer) -> String

doujin = Doujinshi.new(id: 220794)
doujin.page    # => "https://i.nhentai.net/galleries/1170172/1.jpg"
doujin.page(page: 5) # => "https://i.nhentai.net/galleries/1170172/5.png"

pages -> Array[String]

doujin = Doujinshi.new(id: 220794)
doujin.pages
# => [
 "https://i.nhentai.net/galleries/1170172/1.jpg",
 ...
 "https://i.nhentai.net/galleries/1170172/31.png"
]

thumbnail -> String

thumbnail(page: Integer) -> String

doujin = Doujinshi.new(id: 220794)
doujin.thumbnail    # => "https://t.nhentai.net/galleries/1170172/1t.jpg"
doujin.thumbnail(page: 5) # => "https://t.nhentai.net/galleries/1170172/5t.png"

thumbnails -> Array[String]

doujin = Doujinshi.new(id: 220794)
doujin.thumbnails
# => [
 "https://t.nhentai.net/galleries/1170172/1t.jpg",
 ...
 "https://t.nhentai.net/galleries/1170172/31t.png"
]

count_favorites -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_favorites # => 38955

upload_date -> Time

doujin = Doujinshi.new(id: 220794)
doujin.upload_date # => 2018-01-17 15:56:16.761986 +0000

related -> Array[Doujinshi]

doujin = Doujinshi.new(id: 220794)
doujin.related
# => [
 #<Doujinshi:0x00007f0e0fbf12a0...>
 ...
 #<Doujinshi:0x00007f0e0fbf12f0...>
]

tags -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.tags
# => [
 #<OpenStruct id="35762", name="sole female", count=74000, url="/tag/sole-female/">,
 ...
 #<OpenStruct id="27697", name="leotard", count=3000, url="/tag/leotard/">
]

count_tags -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_tags # => 9

tags? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.tags? # => true

parodies -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.parodies
# => [#<OpenStruct id="73370", name="nier automata", count=122, url="/parody/nier-automata/">]

count_parodies -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_parodies # => 1

parodies? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.parodies? # => true

characters -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.characters
# => [
 #<OpenStruct id="71544", name="2b", count=117, url="/character/2b/">,
 #<OpenStruct id="78281", name="9s", count=79, url="/character/9s/">
]

count_characters -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_characters # => 2

characters? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.characters? # => true

artists -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.artists
# => [#<OpenStruct id="10644", name="ogadenmon", count=67, url="/artist/ogadenmon/">]

count_artists -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_artists # => 1

artists? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.artists? # => true

groups -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.groups
# => [#<OpenStruct id="35330", name="illumination.", count=35, url="/group/illumination/">]

count_groups -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_groups # => 1

groups? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.groups? # => true

languages -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.languages
# => [
 #<OpenStruct id="17249", name="translated", count=121000, url="/language/translated/">,
 #<OpenStruct id="12227", name="english", count=92000, url="/language/english/">
]

count_languages -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_languages # => 2

languages? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.languages? # => true

categories -> Array[OpenStruct]

doujin = Doujinshi.new(id: 220794)
doujin.categories
# => [#<OpenStruct id="33172", name="doujinshi", count=243000, url="/category/doujinshi/">]

count_categories -> Integer

doujin = Doujinshi.new(id: 220794)
doujin.count_categories # => 1

categories? -> Boolean

doujin = Doujinshi.new(id: 220794)
doujin.categories? # => true

Search

Search.new(options: Hash) -> Search

Search.new(options: Hash, sort: Symbol) -> Search

Search.new(options: Hash, sort: Symbol, page: Integer) -> Search

sort can be: :none (default), :today, :week or :all_time

options = {
  keywords: {
    included: ["2b"],
    excluded: ["yaoi"],
  },
  tags: {
    included: {
      tags: [],
      parodies: ["nier automata"],
      characters: ["2b", "9s"],
      artists: [],
      groups: [],
      languages: [],
      categories: [],
    },
    excluded: {
      tags: [],
      parodies: [],
      characters: ["a2"],
      artists: [],
      groups: [],
      languages: ["english"],
      categories: [],
    }
  },
  pages: [">= 10", "<= 200"],
  dates: [">20d", "<20y"]
}

Search.new(options: options)
Search.new(options: options, sort: :today)
Search.new(options: options, sort: :today, page: 5)
# => #<Search:0x00007fb75b8ca1f8 ...>

exists?

Search.new(options: options).exists? # => true
Search.new(options: { keywords: { included: "ietnarioet" } }).exists? # => false

num_pages

Search.new(options: options).num_pages # => true

per_page

Search.new(options: options).per_page # => 25

listing -> Array[Doujinshi]

# => [
 #<Doujinshi:0x00007fc1947f9fb0...>
 ...
 #<Doujinshi:0x00007fc1947fa000...>
]

Tag (;Parody;Character;Artist;Group;Language;Category)

Tag.new(keyword: String) -> Tag

Tag.new(keyword: String, sort: Symbol) -> Tag

Tag.new(keyword: String, sort: Symbol, page: Integer) -> Tag

sort can be: :none (default), :today, :week or :all_time

Tag.new(keyword: 'ahegao')
Tag.new(keyword: 'ahegao', sort: :all_time)
Tag.new(keyword: 'ahegao', sort: :week, page: 5)
# => #<Kernel::Tag:0x00007f2d28e52228 @client=#<Net::HTTPOK 200 OK readbody=true>>

count

t = Tag.new(keyword: 'ahegao')
t.count # => 37000

listing

t = Tag.new(keyword: 'ahegao', sort: :all_time)
t.listing
# => [
 #<OpenStruct id="177013", name="[ShindoLA] METAMORPHOSIS (Complete) [English]", url="/g/177013">,
 ...
 #<OpenStruct id="366386", name="[In The Sky (Nakano Sora)] SISUANA - sister hole 4 [English] [RedLantern] [Digital]", url="/g/366386">
]

exists?

Tag.new(keyword: 'ahegao').exists? # => true
Tag.new(keyword: 'rtuneoart').exists? # => false