Scrap and build a PDF of a doujin from NHentai. Check the available sites here.
yarn add @shineiichijo/nhentai-ts
If you're choosing nhentai.net
for the site, make sure to follow the following steps (as the site has enabled cloudflare protection):
- Open https://nhentai.net/ in your browser.
- Open Dev Tools and set the User Agent to what you want (you'll need the user agent).
- Reload the site and wait for the clearance of cloudflare (without closing the Dev Tools).
- Save the cookie value from the Network Tab (
cf_clearance
value).
After following all these steps, you are all set. You can also check the example of it (at the first one). Remember, the cookie value expires after 30 minutes of inactivity. So, you might have to do the above steps again (in case you're gonna use it again).
import { NHentai } from '@shineiichijo/nhentai-ts'
const user_agent = 'User Agent'
const cookie_value = 'cf_clearance=abcdefghijklmnopq'
const nhentai = new NHentai({ site: 'nhentai.net', user_agent, cookie_value }) //check above
;(async () => {
//Explores the home page
const { data } = await nhentai.explore()
console.log(data)
})()
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai()
;(async () => {
//searches for manga
const { data } = await nhentai.search('loli' /* title of the doujin to search */, { page: 1 } /* Page of the search */)
const doujin = data[0]
//gets the contents of a doujin
const { images } = await doujin.getContents()
console.log(images.pages) //pages of the doujin
//builds a PDF from the doujin pages
await images.PDF('loli.pdf' /* Filename of where the PDF should be saved */) //will return a Buffer if no filename is provided
})()
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai({ site: 'nhentai.to' }) //configuring a mirror site of the class (you can check the available sites here: https://github.com/LuckyYam/nhentai-ts/blob/master/src/lib/constants.ts#L1)
//validates the ID of a doujin
nhentai.validate('172').then(console.log)
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai()
//explores all of the available doujin (homepage)
nhentai.explore(2 /* Page number of exploring the doujin */).then(console.log)
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai()
//gets a random doujin with its contents
nhentai.getRandom().then(console.log)
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai()
//gets a doujin contents by its ID
nhentai.getDoujin(172).then(console.log)
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai()
nhentai.getDoujin('2456').then(
async (res) =>
//downloads the pages of a doujin and saves it in a folder
await res.images.download(
'nhentai' /* Folder name where the downloaded pages should be saved */
)
)
import { NHentai } from '@shineiichijo/nhentai-ts'
const nhentai = new NHentai()
nhentai.getRandom().then(
async (res) =>
//Builds a zip of doujin pages
await res.images.zip(
'nhentai.zip' /* Filname of where the zip should be saved */
) //it will return a Buffer if no filename is provided
)