UNPKG

@yeci226/nhentai-ts

Version:

A scraper for NHentai with types

42 lines (38 loc) 1.19 kB
import axios, { AxiosInstance } from 'axios' import { load } from 'cheerio' export const clean = (x: string[]): string[] => { const result: string[] = [] x.forEach((a) => { const text = a.split(/\d/g)[0].trim() if (text !== '') result.push(text) }) return result } export const getExtension = (type: string): 'jpg' | 'png' | 'gif' => { switch (type) { case 'g': return 'gif' case 'j': return 'jpg' default: return 'png' } } export const getAPIGalleryPages = async ( axios: AxiosInstance, data: string ): Promise<{ t: string }[]> => { const $ = load(data) const id = ($('#cover').find('a').attr('href') || 'g/') .split('g/')[1] .split('/')[0] return ( await axios.get<{ images: { pages: { t: string }[] } }>( `https://nhentai.net/api/gallery/${id}` ) ).data.images.pages } export const getPageStatus = (url: string): Promise<number> => axios.head(url) .then((res: any) => res.status as number) .catch((err: any) => (err.response?.status || 500) as number)