@riffyh/adapter-nhentai 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -102,7 +102,7 @@ const getTagListing = (options) => pThrottle({
|
|
|
102
102
|
sort: "date",
|
|
103
103
|
page: page.toString()
|
|
104
104
|
});
|
|
105
|
-
return searchResultMapper(await fetch(`https://nhentai.net/api/v2/galleries?${payload.toString()}`, { headers: options?.apiKey ? { Authorization: `Key ${options.apiKey}` } : {} }).then((o) => {
|
|
105
|
+
return searchResultMapper(await fetch(`https://nhentai.net/api/v2/galleries/tagged?${payload.toString()}`, { headers: options?.apiKey ? { Authorization: `Key ${options.apiKey}` } : {} }).then((o) => {
|
|
106
106
|
if (o.ok) return o.json();
|
|
107
107
|
else throw o;
|
|
108
108
|
}), page);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/language.ts","../src/getGallery.ts","../src/functions/searchResultMapper.ts","../src/getListing.ts","../src/getImage.ts","../src/getTagListing.ts","../src/index.ts"],"sourcesContent":["import type { Language } from \"@riffyh/commons\";\n\nconst languageMap: Record<number, Language> = {\n 12227: \"en\",\n 29963: \"cn\",\n 6346: \"jp\",\n};\n\nconst languageKey = Object.keys(languageMap);\n\nexport const getLanguageByTagId = (tagIds: number[]): Language | null => {\n const targetTagId = tagIds.find((id) => languageKey.includes(id.toString()));\n\n if (targetTagId) return languageMap[targetTagId] || null;\n\n return null;\n};\n","import pThrottle from \"p-throttle\";\nimport { key } from \"./key\";\n\nimport type { DataSource, Gallery } from \"@riffyh/commons\";\nimport type { NhentaiGallery } from \"./types/NhentaiGallery\";\nimport type { Options } from \"./types/Options\";\nimport { getLanguageByTagId } from \"./language\";\n\nexport const getGallery = (options?: Options): DataSource[\"getGallery\"] =>\n pThrottle({\n limit: options?.apiKey ? 45 : 20,\n interval: 60 * 1000,\n })(async ({ id }) => {\n const data = await fetch(`https://nhentai.net/api/v2/galleries/${id}`, {\n headers: options?.apiKey\n ? {\n Authorization: `Key ${options.apiKey}`,\n }\n : {},\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NhentaiGallery>;\n else throw o;\n });\n\n const gallery: Gallery = {\n id: data.id.toString(),\n key,\n title: {\n display: data.title.english ?? data.title.pretty ?? data.title.japanese,\n original: data.title.japanese || null,\n },\n cover: {\n src: `https://t4.nhentai.net/${data.cover.path}`,\n width: data.cover.width,\n height: data.cover.height,\n },\n language: getLanguageByTagId(data.tags.map((t) => t.id)),\n pages: data.pages.map((page) => ({\n order: page.number,\n src: `https://i4.nhentai.net/${page.path}`,\n width: page.width,\n height: page.height,\n })),\n tags: data.tags.map((tag) => ({\n id: tag.id.toString(),\n key,\n name: tag.name,\n type: tag.type,\n slug: tag.slug,\n })),\n };\n\n return gallery;\n });\n","import type { ListingResult } from \"@riffyh/commons\";\nimport type { NhentaiSearchResult } from \"../types/NhentaiSearchResult\";\nimport { key } from \"../key\";\nimport { getLanguageByTagId } from \"../language\";\n\nexport const searchResultMapper = (\n searchResult: NhentaiSearchResult,\n page: number,\n): ListingResult => ({\n galleries: searchResult.result.map((result) => ({\n id: result.id.toString(),\n key,\n title: {\n display: result.english_title ?? result.japanese_title,\n original: null,\n },\n language: getLanguageByTagId(result.tag_ids),\n cover: {\n src: `https://t4.nhentai.net/${result.thumbnail}`,\n width: result.thumbnail_width,\n height: result.thumbnail_height,\n },\n })),\n currentPage: page,\n maximumPages: searchResult.num_pages,\n});\n","import pThrottle from \"p-throttle\";\n\nimport type { DataSource } from \"@riffyh/commons\";\nimport type { NhentaiSearchResult } from \"./types/NhentaiSearchResult\";\nimport type { Options } from \"./types/Options\";\nimport { searchResultMapper } from \"./functions/searchResultMapper\";\n\nexport const getListing = (options?: Options): DataSource[\"getListing\"] =>\n pThrottle({\n limit: options?.apiKey ? 10 : 20,\n interval: 60 * 1000,\n })(async ({ searchQuery, page }) => {\n const payload = new URLSearchParams({\n query: searchQuery ?? \"-thisisrandomstringtomakesurethatthereisnoanytagbeingexcluded\",\n sort: \"date\",\n page: page.toString(),\n });\n\n const data = await fetch(`https://nhentai.net/api/v2/search?${payload.toString()}`, {\n headers: options?.apiKey\n ? {\n Authorization: `Key ${options.apiKey}`,\n }\n : {},\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NhentaiSearchResult>;\n else throw o;\n });\n\n return searchResultMapper(data, page);\n });\n","import type { DataSource } from \"@riffyh/commons\";\n\nexport const getImage: DataSource[\"getImage\"] = ({ url }) =>\n fetch(url).then(async (o) => {\n if (o.ok) return Buffer.from(await o.arrayBuffer());\n else throw o;\n });\n","import type { DataSource } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport type { NhentaiSearchResult } from \"./types/NhentaiSearchResult\";\nimport { searchResultMapper } from \"./functions/searchResultMapper\";\nimport pThrottle from \"p-throttle\";\n\nexport const getTagListing = (options?: Options): DataSource[\"getTagListing\"] =>\n pThrottle({\n limit: options?.apiKey ? 15 : 30,\n interval: 60 * 1000,\n })(async ({ id, page }) => {\n const payload = new URLSearchParams({\n tag_id: id,\n sort: \"date\",\n page: page.toString(),\n });\n\n const data = await fetch(`https://nhentai.net/api/v2/galleries?${payload.toString()}`, {\n headers: options?.apiKey\n ? {\n Authorization: `Key ${options.apiKey}`,\n }\n : {},\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NhentaiSearchResult>;\n else throw o;\n });\n\n return searchResultMapper(data, page);\n });\n","import type { DataSource } from \"@riffyh/commons\";\nimport { getGallery } from \"./getGallery\";\nimport { getListing } from \"./getListing\";\nimport { getImage } from \"./getImage\";\nimport { key } from \"./key\";\n\nimport type { Options } from \"./types/Options\";\nimport { getTagListing } from \"./getTagListing\";\n\nexport const nhentai = (options?: Options): DataSource => {\n return {\n key,\n name: \"nhentai\",\n iconUrl: \"https://nhentai.net/favicon.png\",\n getGallery: getGallery(options),\n getListing: getListing(options),\n getTagListing: getTagListing(options),\n getImage,\n };\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/language.ts","../src/getGallery.ts","../src/functions/searchResultMapper.ts","../src/getListing.ts","../src/getImage.ts","../src/getTagListing.ts","../src/index.ts"],"sourcesContent":["import type { Language } from \"@riffyh/commons\";\n\nconst languageMap: Record<number, Language> = {\n 12227: \"en\",\n 29963: \"cn\",\n 6346: \"jp\",\n};\n\nconst languageKey = Object.keys(languageMap);\n\nexport const getLanguageByTagId = (tagIds: number[]): Language | null => {\n const targetTagId = tagIds.find((id) => languageKey.includes(id.toString()));\n\n if (targetTagId) return languageMap[targetTagId] || null;\n\n return null;\n};\n","import pThrottle from \"p-throttle\";\nimport { key } from \"./key\";\n\nimport type { DataSource, Gallery } from \"@riffyh/commons\";\nimport type { NhentaiGallery } from \"./types/NhentaiGallery\";\nimport type { Options } from \"./types/Options\";\nimport { getLanguageByTagId } from \"./language\";\n\nexport const getGallery = (options?: Options): DataSource[\"getGallery\"] =>\n pThrottle({\n limit: options?.apiKey ? 45 : 20,\n interval: 60 * 1000,\n })(async ({ id }) => {\n const data = await fetch(`https://nhentai.net/api/v2/galleries/${id}`, {\n headers: options?.apiKey\n ? {\n Authorization: `Key ${options.apiKey}`,\n }\n : {},\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NhentaiGallery>;\n else throw o;\n });\n\n const gallery: Gallery = {\n id: data.id.toString(),\n key,\n title: {\n display: data.title.english ?? data.title.pretty ?? data.title.japanese,\n original: data.title.japanese || null,\n },\n cover: {\n src: `https://t4.nhentai.net/${data.cover.path}`,\n width: data.cover.width,\n height: data.cover.height,\n },\n language: getLanguageByTagId(data.tags.map((t) => t.id)),\n pages: data.pages.map((page) => ({\n order: page.number,\n src: `https://i4.nhentai.net/${page.path}`,\n width: page.width,\n height: page.height,\n })),\n tags: data.tags.map((tag) => ({\n id: tag.id.toString(),\n key,\n name: tag.name,\n type: tag.type,\n slug: tag.slug,\n })),\n };\n\n return gallery;\n });\n","import type { ListingResult } from \"@riffyh/commons\";\nimport type { NhentaiSearchResult } from \"../types/NhentaiSearchResult\";\nimport { key } from \"../key\";\nimport { getLanguageByTagId } from \"../language\";\n\nexport const searchResultMapper = (\n searchResult: NhentaiSearchResult,\n page: number,\n): ListingResult => ({\n galleries: searchResult.result.map((result) => ({\n id: result.id.toString(),\n key,\n title: {\n display: result.english_title ?? result.japanese_title,\n original: null,\n },\n language: getLanguageByTagId(result.tag_ids),\n cover: {\n src: `https://t4.nhentai.net/${result.thumbnail}`,\n width: result.thumbnail_width,\n height: result.thumbnail_height,\n },\n })),\n currentPage: page,\n maximumPages: searchResult.num_pages,\n});\n","import pThrottle from \"p-throttle\";\n\nimport type { DataSource } from \"@riffyh/commons\";\nimport type { NhentaiSearchResult } from \"./types/NhentaiSearchResult\";\nimport type { Options } from \"./types/Options\";\nimport { searchResultMapper } from \"./functions/searchResultMapper\";\n\nexport const getListing = (options?: Options): DataSource[\"getListing\"] =>\n pThrottle({\n limit: options?.apiKey ? 10 : 20,\n interval: 60 * 1000,\n })(async ({ searchQuery, page }) => {\n const payload = new URLSearchParams({\n query: searchQuery ?? \"-thisisrandomstringtomakesurethatthereisnoanytagbeingexcluded\",\n sort: \"date\",\n page: page.toString(),\n });\n\n const data = await fetch(`https://nhentai.net/api/v2/search?${payload.toString()}`, {\n headers: options?.apiKey\n ? {\n Authorization: `Key ${options.apiKey}`,\n }\n : {},\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NhentaiSearchResult>;\n else throw o;\n });\n\n return searchResultMapper(data, page);\n });\n","import type { DataSource } from \"@riffyh/commons\";\n\nexport const getImage: DataSource[\"getImage\"] = ({ url }) =>\n fetch(url).then(async (o) => {\n if (o.ok) return Buffer.from(await o.arrayBuffer());\n else throw o;\n });\n","import type { DataSource } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport type { NhentaiSearchResult } from \"./types/NhentaiSearchResult\";\nimport { searchResultMapper } from \"./functions/searchResultMapper\";\nimport pThrottle from \"p-throttle\";\n\nexport const getTagListing = (options?: Options): DataSource[\"getTagListing\"] =>\n pThrottle({\n limit: options?.apiKey ? 15 : 30,\n interval: 60 * 1000,\n })(async ({ id, page }) => {\n const payload = new URLSearchParams({\n tag_id: id,\n sort: \"date\",\n page: page.toString(),\n });\n\n const data = await fetch(`https://nhentai.net/api/v2/galleries/tagged?${payload.toString()}`, {\n headers: options?.apiKey\n ? {\n Authorization: `Key ${options.apiKey}`,\n }\n : {},\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NhentaiSearchResult>;\n else throw o;\n });\n\n return searchResultMapper(data, page);\n });\n","import type { DataSource } from \"@riffyh/commons\";\nimport { getGallery } from \"./getGallery\";\nimport { getListing } from \"./getListing\";\nimport { getImage } from \"./getImage\";\nimport { key } from \"./key\";\n\nimport type { Options } from \"./types/Options\";\nimport { getTagListing } from \"./getTagListing\";\n\nexport const nhentai = (options?: Options): DataSource => {\n return {\n key,\n name: \"nhentai\",\n iconUrl: \"https://nhentai.net/favicon.png\",\n getGallery: getGallery(options),\n getListing: getListing(options),\n getTagListing: getTagListing(options),\n getImage,\n };\n};\n"],"mappings":"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"}
|