@scinorandex/nhentai-wrapper v0.1.2
nhentai-wrapper
A promise-based nhentai API wrapper for degenerate developers alike
Example Usage
import { NhentaiWrapper, Options } from "@scinorandex/nhentai-wrapper";
const Nhentai = new NhentaiWrapper();
(async () => {
	const options: Options = { includePages: false, includeTags: false };
	const result = await Nhentai.searchDoujin(177013, options);
	console.log(result);
})();Expected output:
{
  id: 177013,
  media_id: '987560',
  title: {
    english: '[ShindoLA] METAMORPHOSIS (Complete) [English]',
    japanese: '',
    pretty: 'METAMORPHOSIS'
  },
  images: {
    cover: { t: 'j', w: 350, h: 506 },
    thumbnail: { t: 'j', w: 250, h: 362 }
  },
  scanlator: '',
  upload_date: 1476793729,
  num_pages: 225,
  num_favorites: 44548
}Options
All the fetching/searching methods of the library take a Partial<> version of this interface
| Property | Type | Description | 
|---|---|---|
| pagination | number | The page of results to be retrieved | 
| includePages | boolean | Dictates if page dimensions will be removed | 
| includeTags | boolean | Dictates if tags will be removed | 
| sort | boolean | Dictates if the doujins will be sorted based on num_favorites | 
Methods
convertTagNameToId
converts a tag from their name to their id
const wrapper = new NhentaiWrapper();
wrapper.convertTagNameToId("unbirth").then((data) => {
	console.log(data); // output is 9116
});fetchAllDoujins
fetches all the doujin given a tag or a term, limited to the doujinsLimit property
| Property | Type | Description | 
|---|---|---|
| query | string | The query string to be used, must be compatible with the type parameter | 
| type | "term" or "tag" | The type of query to be done | 
| opts | Partial\<Options> or undefined | The options to be used | 
returns: Promise\<QueryResponse>
fetchRelatedDoujins
fetches all the doujins related to a specific doujin, based on their id
| Property | Type | Description | 
|---|---|---|
| id | number | the id of the doujin to base the results from | 
| opts | Partial\<Options> or undefined | The options to be used | 
returns: Promise\<RelatedDoujins>
getRandomDoujin
gets a single random doujin. This might take a while to resolve because it uses recursion
| Property | Type | Description | 
|---|---|---|
| opts | Partial\<Options> or undefined | The options to be used | 
returns: Promise\<Doujin>
searchDoujin
searches for a single doujin based on the id / "nuclear codes"
| Property | Type | Description | 
|---|---|---|
| id | number | the id of the doujin to search | 
| opts | Partial\<Options> or undefined | The options to be used | 
returns: Promise\<Doujin | null>
searchTag
searches for a single page of doujins containing a certain tag
| Property | Type | Description | 
|---|---|---|
| tag | string | the id of the tag | 
| opts | Partial\<Options> or undefined | The options to be used | 
returns: Promise\<QueryResponse>
searchTerm
searches for a single page of doujins containing a term in their title
| Property | Type | Description | 
|---|---|---|
| term | string | the term to be grepped against | 
| opts | Partial\<Options> or undefined | The options to be used | 
returns: Promise\<QueryResponse>
Output Interfaces
These are typed nhentai API responses
Doujin
Represents a single doujin
| Property | Type | Description | 
|---|---|---|
| id | number | The nuclear codes | 
| media_id | number | Internal ID used by nhentai for pages / covers / thumbnails | 
| title | Title | The titles of the doujin | 
| images | Images | The dimensions of the images associated with the doujin | 
| scanlator | string | |
| upload_date | number | UNIX Epoch Timestamp of doujin upload date | 
| tags | Tag[] or undefined | A list of the tags that the doujin has | 
| num_pages | number | The number of pages that the doujin has | 
| num_favorites | number | The number of times that the doujin has been favorited | 
RelatedDoujins
Represents a group of doujins
| Property | Type | Description | 
|---|---|---|
| result | Doujin[] | An array of doujins | 
| error | string or boolean or undefined | Errors encountered by the query | 
QueryResponse extends RelatedDoujins
Represents a group of doujins with pagination information
| Property | Type | Description | 
|---|---|---|
| num_pages | number | The number of queries it takes to fetch all doujins | 
| per_page | number | The number of doujins that will be fetched per query | 
TagType
A union type of all possibletag types that nhentai uses
Value: "tag" | "language" | "artist" | "category" | "group" | "parody" | "character"
Tag
Represents a single tag
| Property | Type | Description | 
|---|---|---|
| id | number | Internal tag id used by nhentai | 
| type | TagType | The type of the tag | 
| name | string | The name of the tag | 
| url | string | The path of the tag without the domain | 
| count | number | The number of doujins with this tag | 
Image
Represents the dimensions of an image
| Property | Type | Description | 
|---|---|---|
| t | string | The file extension of the image | 
| w | number | The width of the image | 
| h | number | The height of the image | 
Images
Represents the images of the doujin, such as cover, thumbnails, and pages
| Property | Type | Description | 
|---|---|---|
| pages | Image[] or undefined | The pages of the doujin | 
| cover | Image | The cover of the doujin | 
| thumbnail | Image | The thumbnail of the doujin (This is used in the doujin browser) | 
Title
Represents the different titles of the doujin
| Property | Type | 
|---|---|
| english | string | 
| japanese | string | 
| pretty | string |