Coder Social home page Coder Social logo

uryaaa / nhentai-api Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zekfad/nhentai-api

0.0 0.0 0.0 820 KB

Node.JS client for nhentai.net undocumented API.

Home Page: https://zekfad.github.io/nhentai-api/

License: ISC License

JavaScript 100.00%

nhentai-api's Introduction

Node.JS client for nhentai.net undocumented APIs.

npm versionnode versionBuild status - Linux/OSXBuild status - WindowsCodecov

Node.JS module for handling nhentai.net API.

Features

  • Objective-oriented API abstraction.
  • Bidirectional inspecting (get image from book/get book from image).
  • Easy proxy support by using custom Agent (like this one).
  • Return URLs for binary data (images).

Install

Install via yarn:

yarn add nhentai-api

Install via npm:

npm i nhentai-api

Docs

Read the docs on GitHub pages.

Example

Import

CommonJS

const { API, TagTypes, } = require('nhentai-api');

ES6

import { API, TagTypes, } from 'nhentai-api';

Use

Initialize API client

const api = new API();

Get the book

api.getBook(177013).then(book => {
	api.getImageURL(book.cover);    // https://t.nhentai.net/galleries/987560/cover.jpg
	api.getImageURL(book.pages[1]); // https://i.nhentai.net/galleries/987560/2.jpg
});

Get random book

await api.getRandomBook(); // Book instance

Search for the books

api.search('test').then(async search => {
	console.log(search); /*
	Search {
		api: API { hosts: [Object], ssl: true, agent: [Agent] },
		query: 'test',
		page: 1,
		perPage: 25,
		books: [
			[Book], [Book], [Book], [Book],
			[Book], [Book], [Book], [Book],
			[Book], [Book], [Book], [Book],
			[Book], [Book], [Book], [Book],
			[Book], [Book], [Book], [Book],
			[Book], [Book], [Book], [Book],
			[Book]
		],
		pages: 67
	} */
	search = await search.getNextPage(); // Same as api.search('text', 2);
	console.log(search); /*
	Search {
		// Same as above
		page: 2,
		// Same as above
		books: [
			// Books from 2nd page of search
		],
		// Same as above
	} */
});

In case you need to change API implementation (e.g. change proxy) you can pass api to

search.getNextPage(api);

You can also use async generator:

// Get first 2 pages
for await (const search of api.searchGenerator('test')) {
	console.log(search);
	if (search.page >= 2)
		break;
}

Working with tags

book.tags has type of TagsArray, it is just an Array<Tag> with helper methods.

const tag = book.tags[0]; // Tag
Get tag id
tag.id;
Get tag name (without count)
tag.name;
// or
tag.toString();
Get tag name (with count)
tag.toString(true);
Get tag type (as string)
tag.type.type;
// or
tag.type.toString();
Pre-filtered tags
book.pureTags;   // pure tags (with type 'tag')
book.categories; // category tags
book.artists;    // artist tags
book.parodies;   // parody tags
book.characters; // character tags
book.groups;     // group tags
book.languages;  // language tags
Filter tags

Get artists:

book.artists;
// or
book.getTagsWith({
	type: TagTypes.Artist, // you may also use Tag.types.Artist or Tag.types.get('artist') 
}); // TagsArray (subclass of Array<Tag>)
// or
book.getTagsWith({ type: 'artist', }); // TagsArray (subclass of Array<Tag>)

Get tag with name english:

book.getTagsWith({ name: 'english', }); // TagsArray (subclass of Array<Tag>)

Get categories

book.categories;
// or
book.getTagsWith({ type: TagTypes.Category, }); // Recommended
// or
book.getTagsWith({ type: Tag.types.Category, });
// or
book.getTagsWith({ type: Tag.types.get('category'), });
// or
book.getTagsWith({ type: 'category', });
Get tags comma separated

Without counts:

book.tags.toNames().join(', ');
// or
book.tags.join(', ');

With counts:

book.tags.toNames(true).join(', ');
// or
book.tags.map(tag => tag.toString(true)).join(', ')

Get all artists:

// With counts
book.artists.toNames(true).join(', ');
// or
book.getTagsWith({ type: TagTypes.Artist, }).toNames(true).join(', ');
// Without counts
book.artists.join(', ');
// or
book.artists.toNames().join(', ');
// or
book.getTagsWith({ type: TagTypes.Artist, }).join(', ');

nhentai-api's People

Contributors

zekfad avatar tiffceet avatar cerinoligutom avatar uryaaa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.