@riffyh/adapter-niyaniya 1.0.0 → 1.0.2

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 CHANGED
@@ -43,59 +43,43 @@ const getBookImage = async (size, bookId, bookKey, dataId, dataKey, crt, userAge
43
43
  };
44
44
  //#endregion
45
45
  //#region src/constants/namespace.ts
46
- let Namespace = /* @__PURE__ */ function(Namespace) {
47
- Namespace[Namespace["Artist"] = 1] = "Artist";
48
- Namespace[Namespace["Circle"] = 2] = "Circle";
49
- Namespace[Namespace["Parody"] = 3] = "Parody";
50
- Namespace[Namespace["Magazine"] = 4] = "Magazine";
51
- Namespace[Namespace["Character"] = 5] = "Character";
52
- Namespace[Namespace["Cosplayer"] = 6] = "Cosplayer";
53
- Namespace[Namespace["Uploader"] = 7] = "Uploader";
54
- Namespace[Namespace["Male"] = 8] = "Male";
55
- Namespace[Namespace["Female"] = 9] = "Female";
56
- Namespace[Namespace["Mixed"] = 10] = "Mixed";
57
- Namespace[Namespace["Language"] = 11] = "Language";
58
- Namespace[Namespace["Other"] = 12] = "Other";
59
- Namespace[Namespace["Reclass"] = 13] = "Reclass";
60
- return Namespace;
61
- }({});
62
46
  const namespace = {
63
- [Namespace.Artist]: "artist",
64
- [Namespace.Circle]: "circle",
65
- [Namespace.Parody]: "parody",
66
- [Namespace.Magazine]: "magazine",
67
- [Namespace.Character]: "character",
68
- [Namespace.Cosplayer]: "cosplayer",
69
- [Namespace.Uploader]: "uploader",
70
- [Namespace.Male]: "male",
71
- [Namespace.Female]: "female",
72
- [Namespace.Mixed]: "mixed",
73
- [Namespace.Language]: "language",
74
- [Namespace.Other]: "other",
75
- [Namespace.Reclass]: "reclass"
47
+ [1]: "artist",
48
+ [2]: "circle",
49
+ [3]: "parody",
50
+ [4]: "magazine",
51
+ [5]: "character",
52
+ [6]: "cosplayer",
53
+ [7]: "uploader",
54
+ [8]: "male",
55
+ [9]: "female",
56
+ [10]: "mixed",
57
+ [11]: "language",
58
+ [12]: "other",
59
+ [13]: "reclass"
76
60
  };
77
61
  //#endregion
78
62
  //#region src/constants/tagTypeMap.ts
79
63
  const tagTypeMap = {
80
- [Namespace.Artist]: TagType.Artist,
81
- [Namespace.Circle]: TagType.Artist,
82
- [Namespace.Parody]: TagType.Parody,
83
- [Namespace.Magazine]: TagType.Group,
84
- [Namespace.Character]: TagType.Character,
85
- [Namespace.Cosplayer]: TagType.Character,
86
- [Namespace.Uploader]: TagType.Tag,
87
- [Namespace.Male]: TagType.Tag,
88
- [Namespace.Female]: TagType.Tag,
89
- [Namespace.Mixed]: TagType.Tag,
90
- [Namespace.Language]: TagType.Language,
91
- [Namespace.Other]: TagType.Tag,
92
- [Namespace.Reclass]: TagType.Tag
64
+ [1]: TagType.Artist,
65
+ [2]: TagType.Artist,
66
+ [3]: TagType.Parody,
67
+ [4]: TagType.Group,
68
+ [5]: TagType.Character,
69
+ [6]: TagType.Character,
70
+ [7]: TagType.Tag,
71
+ [8]: TagType.Tag,
72
+ [9]: TagType.Tag,
73
+ [10]: TagType.Tag,
74
+ [11]: TagType.Language,
75
+ [12]: TagType.Tag,
76
+ [13]: TagType.Tag
93
77
  };
94
78
  //#endregion
95
79
  //#region src/getGalery.ts
96
80
  const getGallery = async ({ id }, options) => {
97
81
  const [bookId, bookKey] = id.split(".");
98
- if (!bookId || !bookKey) throw new Error("unalbe to parse ids");
82
+ if (!bookId || !bookKey) throw new Error("unable to parse ids");
99
83
  const [bookDetail, bookData] = await Promise.all([getBookDetail(bookId, bookKey, options.userAgent), getBookData(bookId, bookKey, options.crt, options.userAgent)]);
100
84
  const maxSize = Math.max(...Object.keys(bookData.data).map((v) => Number(v)));
101
85
  const bookImages = await getBookImage(maxSize, bookId, bookKey, bookData.data[maxSize].id.toString(), bookData.data[maxSize].key, options.crt, options.userAgent);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/headers.ts","../src/functions/getBookData.ts","../src/functions/getBookDetail.ts","../src/functions/getBookImages.ts","../src/constants/namespace.ts","../src/constants/tagTypeMap.ts","../src/getGalery.ts","../src/getListing.ts","../src/getImage.ts","../src/index.ts"],"sourcesContent":["export const headers = {\n Accept: \"*/*\",\n Origin: \"https://niyaniya.moe\",\n Referer: \"https://niyaniya.moe/\",\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaData } from \"../types/NiyaData\";\n\nexport const getBookData = async (\n bookId: string,\n bookKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/detail/${bookId}/${bookKey}?${new URLSearchParams({\n crt,\n }).toString()}`,\n {\n method: \"POST\",\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaData>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaGallery } from \"../types/NiyaGallery\";\n\nexport const getBookDetail = async (bookId: string, bookKey: string, userAgent: string) => {\n const data = await fetch(`https://api.schale.network/books/detail/${bookId}/${bookKey}`, {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaGallery>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaImages } from \"../types/NiyaImages\";\n\nexport const getBookImage = async (\n size: number,\n bookId: string,\n bookKey: string,\n dataId: string,\n dataKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/data/${bookId}/${bookKey}/${dataId}/${dataKey}/${size}?${new URLSearchParams(\n {\n crt,\n },\n ).toString()}`,\n {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaImages>;\n else throw o;\n });\n\n return data;\n};\n","export enum Namespace {\n Artist = 1,\n Circle = 2,\n Parody = 3,\n Magazine = 4,\n Character = 5,\n Cosplayer = 6,\n Uploader = 7,\n Male = 8,\n Female = 9,\n Mixed = 10,\n Language = 11,\n Other = 12,\n Reclass = 13,\n}\n\nexport const namespace: Record<number, string> = {\n [Namespace.Artist]: \"artist\",\n [Namespace.Circle]: \"circle\",\n [Namespace.Parody]: \"parody\",\n [Namespace.Magazine]: \"magazine\",\n [Namespace.Character]: \"character\",\n [Namespace.Cosplayer]: \"cosplayer\",\n [Namespace.Uploader]: \"uploader\",\n [Namespace.Male]: \"male\",\n [Namespace.Female]: \"female\",\n [Namespace.Mixed]: \"mixed\",\n [Namespace.Language]: \"language\",\n [Namespace.Other]: \"other\",\n [Namespace.Reclass]: \"reclass\",\n};\n","import { TagType } from \"@riffyh/commons\";\nimport { Namespace } from \"./namespace\";\n\nexport const tagTypeMap: Record<number, TagType> = {\n [Namespace.Artist]: TagType.Artist,\n [Namespace.Circle]: TagType.Artist,\n [Namespace.Parody]: TagType.Parody,\n [Namespace.Magazine]: TagType.Group,\n [Namespace.Character]: TagType.Character,\n [Namespace.Cosplayer]: TagType.Character,\n [Namespace.Uploader]: TagType.Tag,\n [Namespace.Male]: TagType.Tag,\n [Namespace.Female]: TagType.Tag,\n [Namespace.Mixed]: TagType.Tag,\n [Namespace.Language]: TagType.Language,\n [Namespace.Other]: TagType.Tag,\n [Namespace.Reclass]: TagType.Tag,\n};\n","import { getBookData } from \"./functions/getBookData\";\nimport { getBookDetail } from \"./functions/getBookDetail\";\nimport { getBookImage } from \"./functions/getBookImages\";\nimport { key } from \"./key\";\n\nimport { TagType, type DataSource, type Gallery } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { namespace } from \"./constants/namespace\";\nimport { tagTypeMap } from \"./constants/tagTypeMap\";\n\nexport const getGallery = async (\n { id }: Parameters<DataSource[\"getGallery\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getGallery\"]> => {\n const [bookId, bookKey] = id.split(\".\");\n\n if (!bookId || !bookKey) throw new Error(\"unalbe to parse ids\");\n\n const [bookDetail, bookData] = await Promise.all([\n getBookDetail(bookId, bookKey, options.userAgent),\n getBookData(bookId, bookKey, options.crt, options.userAgent),\n ]);\n\n // pick data in bookData that has biggest integer\n const maxSize = Math.max(...Object.keys(bookData.data).map((v) => Number(v)));\n\n const bookImages = await getBookImage(\n maxSize,\n bookId,\n bookKey,\n bookData.data[maxSize]!.id.toString(),\n bookData.data[maxSize]!.key,\n options.crt,\n options.userAgent,\n );\n\n const gallery: Gallery = {\n id: bookDetail.id.toString() + \".\" + bookDetail.key,\n key,\n title: {\n display: bookDetail.title,\n original: null,\n },\n cover: {\n src: bookDetail.thumbnails.base + bookDetail.thumbnails.main.path,\n width: bookDetail.thumbnails.main.dimensions[0],\n height: bookDetail.thumbnails.main.dimensions[1],\n },\n pages: bookImages.entries.map((page, i) => ({\n order: i + 1,\n src: bookImages.base + page.path,\n width: page.dimensions[0],\n height: page.dimensions[1],\n })),\n tags: bookDetail.tags.map((tag) => {\n return {\n id: tag.namespace ? namespace[tag.namespace]! : \"tag\" + \":\" + tag.name.replace(/\\s+/g, \"+\"),\n key,\n slug: tag.name,\n name: tag.name,\n type: tag.namespace ? tagTypeMap[tag.namespace]! : TagType.Tag,\n };\n }),\n };\n\n return gallery;\n};\n","import { headers } from \"./constants/headers\";\nimport { key } from \"./key\";\n\nimport type { DataSource, ListingResult } from \"@riffyh/commons\";\nimport type { NiyaSearchResult } from \"./types/NiyaSearchResult\";\nimport type { Options } from \"./types/Options\";\n\nexport const getListing = async (\n { searchQuery, page }: Parameters<DataSource[\"getListing\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getListing\"]> => {\n const payload = new URLSearchParams();\n\n if (searchQuery !== null && searchQuery !== \"\") payload.append(\"s\", searchQuery);\n if (page !== 1) payload.append(\"page\", page.toString());\n\n const data = await fetch(`https://api.schale.network/books?${payload.toString()}`, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaSearchResult>;\n else throw o;\n });\n\n const result: ListingResult = {\n galleries: data.entries.map((result) => ({\n id: result.id.toString() + \".\" + result.key,\n key,\n title: {\n display: result.title,\n original: null,\n },\n cover: {\n src: result.thumbnail.path,\n width: result.thumbnail.dimensions[0],\n height: result.thumbnail.dimensions[1],\n },\n })),\n currentPage: page,\n maximumPages: Math.ceil(data.total / data.limit),\n };\n\n return result;\n};\n","import type { DataSource } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { headers } from \"./constants/headers\";\n\nexport const getImage = async (\n { url }: Parameters<DataSource[\"getImage\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getImage\"]> =>\n fetch(url, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).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 { getGallery } from \"./getGalery\";\nimport { getListing } from \"./getListing\";\nimport { getImage } from \"./getImage\";\nimport { key } from \"./key\";\n\nimport type { Options } from \"./types/Options\";\n\nexport const niyaniya = (options: Options): DataSource => {\n return {\n key,\n name: \"niyaniya\",\n iconUrl: \"https://niyaniya.moe/favicon.ico\",\n getGallery: (payload) => getGallery(payload, options),\n getListing: (payload) => getListing(payload, options),\n getImage: (payload) => getImage(payload, options),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/constants/headers.ts","../src/functions/getBookData.ts","../src/functions/getBookDetail.ts","../src/functions/getBookImages.ts","../src/constants/namespace.ts","../src/constants/tagTypeMap.ts","../src/getGalery.ts","../src/getListing.ts","../src/getImage.ts","../src/index.ts"],"sourcesContent":["export const headers = {\n Accept: \"*/*\",\n Origin: \"https://niyaniya.moe\",\n Referer: \"https://niyaniya.moe/\",\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaData } from \"../types/NiyaData\";\n\nexport const getBookData = async (\n bookId: string,\n bookKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/detail/${bookId}/${bookKey}?${new URLSearchParams({\n crt,\n }).toString()}`,\n {\n method: \"POST\",\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaData>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaGallery } from \"../types/NiyaGallery\";\n\nexport const getBookDetail = async (bookId: string, bookKey: string, userAgent: string) => {\n const data = await fetch(`https://api.schale.network/books/detail/${bookId}/${bookKey}`, {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaGallery>;\n else throw o;\n });\n\n return data;\n};\n","import { headers } from \"../constants/headers\";\nimport type { NiyaImages } from \"../types/NiyaImages\";\n\nexport const getBookImage = async (\n size: number,\n bookId: string,\n bookKey: string,\n dataId: string,\n dataKey: string,\n crt: string,\n userAgent: string,\n) => {\n const data = await fetch(\n `https://api.schale.network/books/data/${bookId}/${bookKey}/${dataId}/${dataKey}/${size}?${new URLSearchParams(\n {\n crt,\n },\n ).toString()}`,\n {\n headers: {\n ...headers,\n \"User-Agent\": userAgent,\n },\n },\n ).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaImages>;\n else throw o;\n });\n\n return data;\n};\n","export enum Namespace {\n Artist = 1,\n Circle = 2,\n Parody = 3,\n Magazine = 4,\n Character = 5,\n Cosplayer = 6,\n Uploader = 7,\n Male = 8,\n Female = 9,\n Mixed = 10,\n Language = 11,\n Other = 12,\n Reclass = 13,\n}\n\nexport const namespace: Record<number, string> = {\n [Namespace.Artist]: \"artist\",\n [Namespace.Circle]: \"circle\",\n [Namespace.Parody]: \"parody\",\n [Namespace.Magazine]: \"magazine\",\n [Namespace.Character]: \"character\",\n [Namespace.Cosplayer]: \"cosplayer\",\n [Namespace.Uploader]: \"uploader\",\n [Namespace.Male]: \"male\",\n [Namespace.Female]: \"female\",\n [Namespace.Mixed]: \"mixed\",\n [Namespace.Language]: \"language\",\n [Namespace.Other]: \"other\",\n [Namespace.Reclass]: \"reclass\",\n};\n","import { TagType } from \"@riffyh/commons\";\nimport { Namespace } from \"./namespace\";\n\nexport const tagTypeMap: Record<number, TagType> = {\n [Namespace.Artist]: TagType.Artist,\n [Namespace.Circle]: TagType.Artist,\n [Namespace.Parody]: TagType.Parody,\n [Namespace.Magazine]: TagType.Group,\n [Namespace.Character]: TagType.Character,\n [Namespace.Cosplayer]: TagType.Character,\n [Namespace.Uploader]: TagType.Tag,\n [Namespace.Male]: TagType.Tag,\n [Namespace.Female]: TagType.Tag,\n [Namespace.Mixed]: TagType.Tag,\n [Namespace.Language]: TagType.Language,\n [Namespace.Other]: TagType.Tag,\n [Namespace.Reclass]: TagType.Tag,\n};\n","import { getBookData } from \"./functions/getBookData\";\nimport { getBookDetail } from \"./functions/getBookDetail\";\nimport { getBookImage } from \"./functions/getBookImages\";\nimport { key } from \"./key\";\n\nimport { TagType, type DataSource, type Gallery } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { namespace } from \"./constants/namespace\";\nimport { tagTypeMap } from \"./constants/tagTypeMap\";\n\nexport const getGallery = async (\n { id }: Parameters<DataSource[\"getGallery\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getGallery\"]> => {\n const [bookId, bookKey] = id.split(\".\");\n\n if (!bookId || !bookKey) throw new Error(\"unable to parse ids\");\n\n const [bookDetail, bookData] = await Promise.all([\n getBookDetail(bookId, bookKey, options.userAgent),\n getBookData(bookId, bookKey, options.crt, options.userAgent),\n ]);\n\n // pick data in bookData that has biggest integer\n const maxSize = Math.max(...Object.keys(bookData.data).map((v) => Number(v)));\n\n const bookImages = await getBookImage(\n maxSize,\n bookId,\n bookKey,\n bookData.data[maxSize]!.id.toString(),\n bookData.data[maxSize]!.key,\n options.crt,\n options.userAgent,\n );\n\n const gallery: Gallery = {\n id: bookDetail.id.toString() + \".\" + bookDetail.key,\n key,\n title: {\n display: bookDetail.title,\n original: null,\n },\n cover: {\n src: bookDetail.thumbnails.base + bookDetail.thumbnails.main.path,\n width: bookDetail.thumbnails.main.dimensions[0],\n height: bookDetail.thumbnails.main.dimensions[1],\n },\n pages: bookImages.entries.map((page, i) => ({\n order: i + 1,\n src: bookImages.base + page.path,\n width: page.dimensions[0],\n height: page.dimensions[1],\n })),\n tags: bookDetail.tags.map((tag) => {\n return {\n id: tag.namespace ? namespace[tag.namespace]! : \"tag\" + \":\" + tag.name.replace(/\\s+/g, \"+\"),\n key,\n slug: tag.name,\n name: tag.name,\n type: tag.namespace ? tagTypeMap[tag.namespace]! : TagType.Tag,\n };\n }),\n };\n\n return gallery;\n};\n","import { headers } from \"./constants/headers\";\nimport { key } from \"./key\";\n\nimport type { DataSource, ListingResult } from \"@riffyh/commons\";\nimport type { NiyaSearchResult } from \"./types/NiyaSearchResult\";\nimport type { Options } from \"./types/Options\";\n\nexport const getListing = async (\n { searchQuery, page }: Parameters<DataSource[\"getListing\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getListing\"]> => {\n const payload = new URLSearchParams();\n\n if (searchQuery !== null && searchQuery !== \"\") payload.append(\"s\", searchQuery);\n if (page !== 1) payload.append(\"page\", page.toString());\n\n const data = await fetch(`https://api.schale.network/books?${payload.toString()}`, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).then((o) => {\n if (o.ok) return o.json() as Promise<NiyaSearchResult>;\n else throw o;\n });\n\n const result: ListingResult = {\n galleries: data.entries.map((result) => ({\n id: result.id.toString() + \".\" + result.key,\n key,\n title: {\n display: result.title,\n original: null,\n },\n cover: {\n src: result.thumbnail.path,\n width: result.thumbnail.dimensions[0],\n height: result.thumbnail.dimensions[1],\n },\n })),\n currentPage: page,\n maximumPages: Math.ceil(data.total / data.limit),\n };\n\n return result;\n};\n","import type { DataSource } from \"@riffyh/commons\";\nimport type { Options } from \"./types/Options\";\nimport { headers } from \"./constants/headers\";\n\nexport const getImage = async (\n { url }: Parameters<DataSource[\"getImage\"]>[0],\n options: Options,\n): ReturnType<DataSource[\"getImage\"]> =>\n fetch(url, {\n headers: {\n ...headers,\n \"User-Agent\": options.userAgent,\n },\n }).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 { getGallery } from \"./getGalery\";\nimport { getListing } from \"./getListing\";\nimport { getImage } from \"./getImage\";\nimport { key } from \"./key\";\n\nimport type { Options } from \"./types/Options\";\n\nexport const niyaniya = (options: Options): DataSource => {\n return {\n key,\n name: \"niyaniya\",\n iconUrl: \"https://niyaniya.moe/favicon.ico\",\n getGallery: (payload) => getGallery(payload, options),\n getListing: (payload) => getListing(payload, options),\n getImage: (payload) => getImage(payload, options),\n };\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riffyh/adapter-niyaniya",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/rayriffy/rayriffy-h.git"
@@ -16,12 +16,13 @@
16
16
  "registry": "https://registry.npmjs.org"
17
17
  },
18
18
  "dependencies": {
19
- "@riffyh/commons": "2.0.0"
19
+ "@riffyh/commons": "2.1.2"
20
20
  },
21
21
  "devDependencies": {
22
- "tsdown": "0.21.7"
22
+ "tsdown": "0.22.3"
23
23
  },
24
24
  "scripts": {
25
+ "dev": "tsdown --watch",
25
26
  "build": "tsdown"
26
27
  }
27
28
  }