# Nhentaikyy

## Install

```
$ npm install nhentai-ikyy
```

## Usage

```js
const Nhentaikyy = require("nhentai-ikyy");
const nhentai = new Nhentaikyy()(async () => {
  if (nhentai.exists("147476")) {
    // checks if doujin exists
    const dojin = await nhentai.getDoujin("147476");
    console.log(dojin);
    /*
{
	{
  creator: 'RzkyFdlh',
  title: '(Reitaisai 12) [Kuma-tan Flash! (Yamu)] Tanetsuke Oji-san Hazard | Jizz Geezer Hazard (Touhou Project) [English]',
  nativeTitle: '(例大祭12) [くまたんFlash! (やむっ)] 種付けおじさんハザード (幻想郷に種付けおじさんがやってきたYA-YA-YA) (東方Project) [英訳]',
  details: {
    parodies: [ 'touhou project' ],
    characters: [ 'satori komeiji' ],
    tags: [ 'impregnation', 'unusual pupils', 'bbm', 'dilf', 'nakadashi' ],
    artists: [ 'yamu' ],
    groups: [ 'reverse noise', 'kuma-tan flash' ],
    languages: [ 'english', 'translated' ],
    categories: [ 'doujinshi' ],
    pages: '6 pages',
    upload_date: 'Uploaded 30/07/2020 06:37 AM'
  },
  pages: [
    'https://t.dogehls.xyz/galleries/865683/1.png',
    'https://t.dogehls.xyz/galleries/865683/2.png',
    'https://t.dogehls.xyz/galleries/865683/3.png',
    'https://t.dogehls.xyz/galleries/865683/4.png',
    'https://t.dogehls.xyz/galleries/865683/5.png',
    'https://t.dogehls.xyz/galleries/865683/6.png'
  ],
  thumbnails: [
    'https://t.dogehls.xyz/galleries/865683/1t.png',
    'https://t.dogehls.xyz/galleries/865683/2t.png',
    'https://t.dogehls.xyz/galleries/865683/3t.png',
    'https://t.dogehls.xyz/galleries/865683/4t.png',
    'https://t.dogehls.xyz/galleries/865683/5t.png',
    'https://t.dogehls.xyz/galleries/865683/6t.png'
  ],
  link: 'https://nhentai.net/g/147476/'
}
		*/
  }
})();
```

## API

The ID of a doujin can be found can be found at after the `/g/` in the search bar or a URL.

`https://nhentai.net/g/248121` in this case `248121` is the ID.

### nhentai.exists(id)

Checks if a doujin exists.

Returns a `boolean`

### nhentai.getDoujin(id)

Gets a doujin's data.

Returns an `Object` See above for more details

### nhentai.getHomepage(page)

Gets available doujins' data from the homepage.

Returns an `Object` See examples below for more details

### nhentai.search(query, [page, sortBy])

- `page` must be an `integer`
- `sortBy` can only be `"date"` or `"popular"` and must be a `string`

Searches for doujin data according to the options passed.
The options with brackets means optional.

Returns an `Object` See examples below for more details

## Examples

### Gets a doujin's data

```js
const Nhentaikyy = require("nhentai-ikyy");
const nhentai = new Nhentaikyy();

async function getDoujin(id) {
  try {
    // try/catch is the equivalent of Promise.catch() in async/await
    const val = await nhentai.getDoujin(id);
    return val;
  } catch (err) {
    console.error(err);
  }
}

getDoujin("148936"); // Object {...}
```

### Check if a doujin exists

```js
const Nhentaikyy = require("nhentai-ikyy");
const nhentai = new Nhentaikyy();

async function doujinExists(id) {
  const val = await nhentai.exists(id);
  return val;
}

console.log(doujinExists("147476")); // true
```

### Get doujins from homepage

```js
(async () => {
  console.log(await nhentai.getHomepage(1));
})();
/*
{
  creator: 'RzkyFdlh',
  lastPage: '15591',
  results: [
    {
      code: '400903',
      thumbnailAspectRatio: '142.79999999999998',
      thumbnail: 'https://t.dogehls.xyz/galleries/2205273/thumb.jpg',
      title: '[Hamiheya (Hamihe)] TS ero manga tsumeawase'
    },
    {
      code: '400902',
      thumbnailAspectRatio: '142.79999999999998',
      thumbnail: 'https://t.dogehls.xyz/galleries/2205269/thumb.jpg',
      title: '[Crazy9 (Ichitaka)] C9-46 Sayuri 6 Shinyuu ni Kareshi o NTR-renagara Shoujo wa Otoko ni Okasareru [Chinese] [Digital]'
    },
    {
      code: '400901',
      thumbnailAspectRatio: '142.79999999999998',
      thumbnail: 'https://t.dogehls.xyz/galleries/2205263/thumb.jpg',
      title: '(C95) [Twilight Road (Tomo)] Sawatte, Onii-chan...!! (Azur Lane) [Chinese]'
    }
    ...
  ]
}
*/
```

### Search doujins by tags, parodies, etc...

```js
(async () => {
  console.log(await nhentai.search("stockings"));
})();

/*
{
  total: '3,022 Results',
  total_pages: '121',
  creator: 'RzkyFdlh',
  result: [
    {
      title: '(C96) [Tamakakeya (Tamakake)] JC x Kinbaku x Omocha | JC x Bondage x Toys [English] [LoliAce]',
      link: 'https://nhentai.net/g/400779/',
      code: '400779',
      thumb: 'https://t.dogehls.xyz/galleries/2204331/thumb.jpg'
    },
    {
      title: '(C99) [Miyazen] Lavenza to, Tokubetsu na Kankei ni Natta... (Persona 5) [Chinese] [Lolipoi汉化组]',
      link: 'https://nhentai.net/g/400738/',
      code: '400738',
      thumb: 'https://t.dogehls.xyz/galleries/2203883/thumb.jpg'
    }
    ....
  ]
}
 */
```
