animob 1.0.0
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/LICENSE +674 -0
- package/README.md +245 -0
- package/animb.png +0 -0
- package/dist/extractors/index.d.ts +11 -0
- package/dist/extractors/index.js +27 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/kwik.d.ts +18 -0
- package/dist/extractors/kwik.js +117 -0
- package/dist/extractors/kwik.js.map +1 -0
- package/dist/extractors/lplayer.d.ts +11 -0
- package/dist/extractors/lplayer.js +131 -0
- package/dist/extractors/lplayer.js.map +1 -0
- package/dist/extractors/megacloud.d.ts +10 -0
- package/dist/extractors/megacloud.js +44 -0
- package/dist/extractors/megacloud.js.map +1 -0
- package/dist/extractors/megaup.d.ts +31 -0
- package/dist/extractors/megaup.js +79 -0
- package/dist/extractors/megaup.js.map +1 -0
- package/dist/extractors/mixdrop.d.ts +7 -0
- package/dist/extractors/mixdrop.js +32 -0
- package/dist/extractors/mixdrop.js.map +1 -0
- package/dist/extractors/movearnpre.d.ts +9 -0
- package/dist/extractors/movearnpre.js +154 -0
- package/dist/extractors/movearnpre.js.map +1 -0
- package/dist/extractors/sendvid.d.ts +8 -0
- package/dist/extractors/sendvid.js +76 -0
- package/dist/extractors/sendvid.js.map +1 -0
- package/dist/extractors/sibnet.d.ts +8 -0
- package/dist/extractors/sibnet.js +44 -0
- package/dist/extractors/sibnet.js.map +1 -0
- package/dist/extractors/streamsb.d.ts +11 -0
- package/dist/extractors/streamsb.js +65 -0
- package/dist/extractors/streamsb.js.map +1 -0
- package/dist/extractors/streamtape.d.ts +7 -0
- package/dist/extractors/streamtape.js +32 -0
- package/dist/extractors/streamtape.js.map +1 -0
- package/dist/extractors/streamwish.d.ts +11 -0
- package/dist/extractors/streamwish.js +46 -0
- package/dist/extractors/streamwish.js.map +1 -0
- package/dist/extractors/vidcloud.d.ts +11 -0
- package/dist/extractors/vidcloud.js +109 -0
- package/dist/extractors/vidcloud.js.map +1 -0
- package/dist/extractors/videostr.d.ts +10 -0
- package/dist/extractors/videostr.js +44 -0
- package/dist/extractors/videostr.js.map +1 -0
- package/dist/extractors/vidmoly.d.ts +7 -0
- package/dist/extractors/vidmoly.js +75 -0
- package/dist/extractors/vidmoly.js.map +1 -0
- package/dist/extractors/voe.d.ts +10 -0
- package/dist/extractors/voe.js +44 -0
- package/dist/extractors/voe.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/models/anime-parser.d.ts +26 -0
- package/dist/models/anime-parser.js +14 -0
- package/dist/models/anime-parser.js.map +1 -0
- package/dist/models/base-parser.d.ts +10 -0
- package/dist/models/base-parser.js +7 -0
- package/dist/models/base-parser.js.map +1 -0
- package/dist/models/base-provider.d.ts +40 -0
- package/dist/models/base-provider.js +45 -0
- package/dist/models/base-provider.js.map +1 -0
- package/dist/models/base-types.d.ts +22 -0
- package/dist/models/base-types.js +3 -0
- package/dist/models/base-types.js.map +1 -0
- package/dist/models/book-parser.d.ts +4 -0
- package/dist/models/book-parser.js +7 -0
- package/dist/models/book-parser.js.map +1 -0
- package/dist/models/comic-parser.d.ts +4 -0
- package/dist/models/comic-parser.js +7 -0
- package/dist/models/comic-parser.js.map +1 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/index.js +39 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/lightnovel-parser.d.ts +16 -0
- package/dist/models/lightnovel-parser.js +7 -0
- package/dist/models/lightnovel-parser.js.map +1 -0
- package/dist/models/manga-parser.d.ts +17 -0
- package/dist/models/manga-parser.js +10 -0
- package/dist/models/manga-parser.js.map +1 -0
- package/dist/models/movie-parser.d.ts +26 -0
- package/dist/models/movie-parser.js +7 -0
- package/dist/models/movie-parser.js.map +1 -0
- package/dist/models/news-parser.d.ts +4 -0
- package/dist/models/news-parser.js +7 -0
- package/dist/models/news-parser.js.map +1 -0
- package/dist/models/proxy.d.ts +25 -0
- package/dist/models/proxy.js +83 -0
- package/dist/models/proxy.js.map +1 -0
- package/dist/models/type-objects.d.ts +48 -0
- package/dist/models/type-objects.js +57 -0
- package/dist/models/type-objects.js.map +1 -0
- package/dist/models/types.d.ts +515 -0
- package/dist/models/types.js +118 -0
- package/dist/models/types.js.map +1 -0
- package/dist/models/video-extractor.d.ts +19 -0
- package/dist/models/video-extractor.js +10 -0
- package/dist/models/video-extractor.js.map +1 -0
- package/dist/providers/anime/animekai.d.ts +94 -0
- package/dist/providers/anime/animekai.js +661 -0
- package/dist/providers/anime/animekai.js.map +1 -0
- package/dist/providers/anime/animepahe.d.ts +41 -0
- package/dist/providers/anime/animepahe.js +270 -0
- package/dist/providers/anime/animepahe.js.map +1 -0
- package/dist/providers/anime/animesama.d.ts +25 -0
- package/dist/providers/anime/animesama.js +504 -0
- package/dist/providers/anime/animesama.js.map +1 -0
- package/dist/providers/anime/animesaturn.d.ts +32 -0
- package/dist/providers/anime/animesaturn.js +298 -0
- package/dist/providers/anime/animesaturn.js.map +1 -0
- package/dist/providers/anime/animeunity.d.ts +27 -0
- package/dist/providers/anime/animeunity.js +157 -0
- package/dist/providers/anime/animeunity.js.map +1 -0
- package/dist/providers/anime/hianime.d.ts +150 -0
- package/dist/providers/anime/hianime.js +825 -0
- package/dist/providers/anime/hianime.js.map +1 -0
- package/dist/providers/anime/index.d.ts +17 -0
- package/dist/providers/anime/index.js +22 -0
- package/dist/providers/anime/index.js.map +1 -0
- package/dist/providers/anime/kickassanime.d.ts +65 -0
- package/dist/providers/anime/kickassanime.js +582 -0
- package/dist/providers/anime/kickassanime.js.map +1 -0
- package/dist/providers/books/index.d.ts +2 -0
- package/dist/providers/books/index.js +4 -0
- package/dist/providers/books/index.js.map +1 -0
- package/dist/providers/comics/getComics.d.ts +9 -0
- package/dist/providers/comics/getComics.js +54 -0
- package/dist/providers/comics/getComics.js.map +1 -0
- package/dist/providers/comics/index.d.ts +5 -0
- package/dist/providers/comics/index.js +8 -0
- package/dist/providers/comics/index.js.map +1 -0
- package/dist/providers/index.d.ts +9 -0
- package/dist/providers/index.js +23 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/light-novels/index.d.ts +5 -0
- package/dist/providers/light-novels/index.js +8 -0
- package/dist/providers/light-novels/index.js.map +1 -0
- package/dist/providers/light-novels/novelupdates.d.ts +26 -0
- package/dist/providers/light-novels/novelupdates.js +155 -0
- package/dist/providers/light-novels/novelupdates.js.map +1 -0
- package/dist/providers/manga/asurascans.d.ts +16 -0
- package/dist/providers/manga/asurascans.js +143 -0
- package/dist/providers/manga/asurascans.js.map +1 -0
- package/dist/providers/manga/comick.d.ts +36 -0
- package/dist/providers/manga/comick.js +141 -0
- package/dist/providers/manga/comick.js.map +1 -0
- package/dist/providers/manga/comix.d.ts +36 -0
- package/dist/providers/manga/comix.js +265 -0
- package/dist/providers/manga/comix.js.map +1 -0
- package/dist/providers/manga/index.d.ts +21 -0
- package/dist/providers/manga/index.js +26 -0
- package/dist/providers/manga/index.js.map +1 -0
- package/dist/providers/manga/mangadex.d.ts +26 -0
- package/dist/providers/manga/mangadex.js +301 -0
- package/dist/providers/manga/mangadex.js.map +1 -0
- package/dist/providers/manga/mangahere.d.ts +29 -0
- package/dist/providers/manga/mangahere.js +376 -0
- package/dist/providers/manga/mangahere.js.map +1 -0
- package/dist/providers/manga/mangakakalot.d.ts +56 -0
- package/dist/providers/manga/mangakakalot.js +461 -0
- package/dist/providers/manga/mangakakalot.js.map +1 -0
- package/dist/providers/manga/mangapill.d.ts +15 -0
- package/dist/providers/manga/mangapill.js +104 -0
- package/dist/providers/manga/mangapill.js.map +1 -0
- package/dist/providers/manga/mangareader.d.ts +15 -0
- package/dist/providers/manga/mangareader.js +110 -0
- package/dist/providers/manga/mangareader.js.map +1 -0
- package/dist/providers/manga/weebcentral.d.ts +12 -0
- package/dist/providers/manga/weebcentral.js +169 -0
- package/dist/providers/manga/weebcentral.js.map +1 -0
- package/dist/providers/meta/anilist.d.ts +206 -0
- package/dist/providers/meta/anilist.js +2025 -0
- package/dist/providers/meta/anilist.js.map +1 -0
- package/dist/providers/meta/index.d.ts +9 -0
- package/dist/providers/meta/index.js +10 -0
- package/dist/providers/meta/index.js.map +1 -0
- package/dist/providers/meta/mal.d.ts +39 -0
- package/dist/providers/meta/mal.js +529 -0
- package/dist/providers/meta/mal.js.map +1 -0
- package/dist/providers/meta/tmdb.d.ts +48 -0
- package/dist/providers/meta/tmdb.js +364 -0
- package/dist/providers/meta/tmdb.js.map +1 -0
- package/dist/providers/movies/dramacool.d.ts +98 -0
- package/dist/providers/movies/dramacool.js +367 -0
- package/dist/providers/movies/dramacool.js.map +1 -0
- package/dist/providers/movies/flixhq.d.ts +90 -0
- package/dist/providers/movies/flixhq.js +438 -0
- package/dist/providers/movies/flixhq.js.map +1 -0
- package/dist/providers/movies/goku.d.ts +80 -0
- package/dist/providers/movies/goku.js +369 -0
- package/dist/providers/movies/goku.js.map +1 -0
- package/dist/providers/movies/himovies.d.ts +102 -0
- package/dist/providers/movies/himovies.js +445 -0
- package/dist/providers/movies/himovies.js.map +1 -0
- package/dist/providers/movies/index.d.ts +17 -0
- package/dist/providers/movies/index.js +22 -0
- package/dist/providers/movies/index.js.map +1 -0
- package/dist/providers/movies/netmirror.d.ts +27 -0
- package/dist/providers/movies/netmirror.js +259 -0
- package/dist/providers/movies/netmirror.js.map +1 -0
- package/dist/providers/movies/sflix.d.ts +106 -0
- package/dist/providers/movies/sflix.js +490 -0
- package/dist/providers/movies/sflix.js.map +1 -0
- package/dist/providers/movies/turkish123.d.ts +32 -0
- package/dist/providers/movies/turkish123.js +141 -0
- package/dist/providers/movies/turkish123.js.map +1 -0
- package/dist/providers/news/animenewsnetwork.d.ts +30 -0
- package/dist/providers/news/animenewsnetwork.js +105 -0
- package/dist/providers/news/animenewsnetwork.js.map +1 -0
- package/dist/providers/news/index.d.ts +5 -0
- package/dist/providers/news/index.js +8 -0
- package/dist/providers/news/index.js.map +1 -0
- package/dist/providers/others/index.d.ts +0 -0
- package/dist/providers/others/index.js +2 -0
- package/dist/providers/others/index.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/providers-list.d.ts +11 -0
- package/dist/utils/providers-list.js +40 -0
- package/dist/utils/providers-list.js.map +1 -0
- package/dist/utils/queries.d.ts +13 -0
- package/dist/utils/queries.js +31 -0
- package/dist/utils/queries.js.map +1 -0
- package/dist/utils/utils.d.ts +32 -0
- package/dist/utils/utils.js +324 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const models_1 = require("../../models");
|
|
8
|
+
const cheerio_1 = require("cheerio");
|
|
9
|
+
class ComicK extends models_1.MangaParser {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.name = 'ComicK';
|
|
13
|
+
this.baseUrl = 'https://comick.art';
|
|
14
|
+
this.logo = 'https://th.bing.com/th/id/OIP.fw4WrmAoA2PmKitiyMzUIgAAAA?pid=ImgDet&rs=1';
|
|
15
|
+
this.classPath = 'MANGA.ComicK';
|
|
16
|
+
this.apiUrl = 'https://comick.art/api';
|
|
17
|
+
this.referer = 'https://comick.art';
|
|
18
|
+
/**
|
|
19
|
+
* @description Fetches info about the manga
|
|
20
|
+
* @param mangaId Comic slug
|
|
21
|
+
* @returns Promise<IMangaInfo>
|
|
22
|
+
*/
|
|
23
|
+
this.fetchMangaInfo = async (mangaId) => {
|
|
24
|
+
var _a, _b, _c, _d, _e, _f;
|
|
25
|
+
try {
|
|
26
|
+
const data = await this.getComicData(mangaId);
|
|
27
|
+
const links = Object.values((_a = data.links) !== null && _a !== void 0 ? _a : []).filter(link => link !== null);
|
|
28
|
+
const mangaInfo = {
|
|
29
|
+
id: data.slug,
|
|
30
|
+
title: data.title,
|
|
31
|
+
altTitles: data.md_titles ? data.md_titles.map(title => title.title) : [],
|
|
32
|
+
description: data.desc,
|
|
33
|
+
genres: (_b = data.md_comic_md_genres) === null || _b === void 0 ? void 0 : _b.map(genre => genre.md_genres.name),
|
|
34
|
+
status: ((_c = data.status) !== null && _c !== void 0 ? _c : 0 === 0) ? models_1.MediaStatus.ONGOING : models_1.MediaStatus.COMPLETED,
|
|
35
|
+
image: data.default_thumbnail,
|
|
36
|
+
malId: (_d = data.links) === null || _d === void 0 ? void 0 : _d.mal,
|
|
37
|
+
links: links,
|
|
38
|
+
chapters: [],
|
|
39
|
+
};
|
|
40
|
+
const allChapters = await this.fetchAllChapters(mangaInfo.id, 1);
|
|
41
|
+
for (const chapter of allChapters) {
|
|
42
|
+
(_e = mangaInfo.chapters) === null || _e === void 0 ? void 0 : _e.push({
|
|
43
|
+
id: `${mangaInfo.id}/${chapter.hid}-chapter-${chapter.chap}-${chapter.lang}`,
|
|
44
|
+
title: (_f = chapter.title) !== null && _f !== void 0 ? _f : chapter.chap,
|
|
45
|
+
chapterNumber: chapter.chap,
|
|
46
|
+
volumeNumber: chapter.vol,
|
|
47
|
+
releaseDate: chapter.created_at,
|
|
48
|
+
lang: chapter.lang,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return mangaInfo;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (err.code == 'ERR_BAD_REQUEST')
|
|
55
|
+
throw new Error(`[${this.name}] Bad request. Make sure you have entered a valid query.`);
|
|
56
|
+
throw new Error(err.message);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @param chapterId Chapter ID '{slug}/{hid}-chapter-{chap}-{lang}'
|
|
62
|
+
* @returns Promise<IMangaChapterPage[]>
|
|
63
|
+
*/
|
|
64
|
+
this.fetchChapterPages = async (chapterId) => {
|
|
65
|
+
try {
|
|
66
|
+
const data = await this._axios().get(`/comics/${chapterId}`);
|
|
67
|
+
const pages = [];
|
|
68
|
+
data.data.chapter.images.map((image, index) => {
|
|
69
|
+
pages.push({
|
|
70
|
+
img: image.url,
|
|
71
|
+
page: index,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
return pages;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
throw new Error(err.message);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
// also need to implement and advanced search with filters
|
|
81
|
+
/**
|
|
82
|
+
* @param query search query
|
|
83
|
+
* @param page page number (default: 1)
|
|
84
|
+
* @param limit limit of results to return (default: 20) (max: 100) (min: 1)
|
|
85
|
+
*/
|
|
86
|
+
this.search = async (query, cursor) => {
|
|
87
|
+
var _a;
|
|
88
|
+
try {
|
|
89
|
+
const req = await this._axios().get(`/search?q=${encodeURIComponent(query)}&cursor=${cursor}`);
|
|
90
|
+
const results = {
|
|
91
|
+
results: [],
|
|
92
|
+
prev_cursor: req.data.prev_cursor,
|
|
93
|
+
next_cursor: req.data.next_cursor,
|
|
94
|
+
};
|
|
95
|
+
const data = await req.data.data;
|
|
96
|
+
for (const manga of data) {
|
|
97
|
+
results.results.push({
|
|
98
|
+
id: manga.slug,
|
|
99
|
+
title: (_a = manga.title) !== null && _a !== void 0 ? _a : manga.slug,
|
|
100
|
+
altTitles: manga.md_titles ? manga.md_titles.map(title => title.title) : [],
|
|
101
|
+
image: manga.default_thumbnail,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return results;
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
throw new Error(err.message);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
this.fetchAllChapters = async (hid, page) => {
|
|
111
|
+
if (page <= 0) {
|
|
112
|
+
page = 1;
|
|
113
|
+
}
|
|
114
|
+
const req = await this._axios().get(`/comics/${hid}/chapter-list?page=${page}`);
|
|
115
|
+
return req.data.data;
|
|
116
|
+
};
|
|
117
|
+
this.getComicData = async (mangaId) => {
|
|
118
|
+
const req = await this._axios().get(`${this.baseUrl}/comic/${mangaId}`);
|
|
119
|
+
const $ = (0, cheerio_1.load)(req.data);
|
|
120
|
+
return JSON.parse($("script[id='comic-data']").text());
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
_axios() {
|
|
124
|
+
return axios_1.default.create({
|
|
125
|
+
baseURL: this.apiUrl,
|
|
126
|
+
headers: {
|
|
127
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
|
|
128
|
+
Referer: this.referer,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// (async () => {
|
|
134
|
+
// const md = new MangaDex();
|
|
135
|
+
// const search = await md.search('solo leveling');
|
|
136
|
+
// const manga = await md.fetchMangaInfo(search.results[0].id);
|
|
137
|
+
// const chapterPages = await md.fetchChapterPages(manga.chapters![0].id);
|
|
138
|
+
// console.log(chapterPages);
|
|
139
|
+
// })();
|
|
140
|
+
exports.default = ComicK;
|
|
141
|
+
//# sourceMappingURL=comick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comick.js","sourceRoot":"","sources":["../../../src/providers/manga/comick.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { IMangaChapterPage, IMangaInfo, IMangaResult, MangaParser } from '../../models';
|
|
2
|
+
declare class Comix extends MangaParser {
|
|
3
|
+
readonly name = "Comix";
|
|
4
|
+
protected baseUrl: string;
|
|
5
|
+
protected classPath: string;
|
|
6
|
+
private readonly apiUrl;
|
|
7
|
+
referer: string;
|
|
8
|
+
private baseHeaders;
|
|
9
|
+
/**
|
|
10
|
+
* @description Fetches info about the manga
|
|
11
|
+
* @param mangaId just the id
|
|
12
|
+
* @returns Promise<IMangaInfo>
|
|
13
|
+
*/
|
|
14
|
+
fetchMangaInfo: (mangaId: string) => Promise<IMangaInfo>;
|
|
15
|
+
fetchChapters(hid: string, page?: number): Promise<{
|
|
16
|
+
chapters: any[];
|
|
17
|
+
pagination: any;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param chapterId Chapter ID '{hashid-slug}/{chapterid}'
|
|
22
|
+
* @returns Promise<IMangaChapterPage[]>
|
|
23
|
+
*/
|
|
24
|
+
fetchChapterPages: (chapterId: string) => Promise<IMangaChapterPage[]>;
|
|
25
|
+
/**
|
|
26
|
+
* @param query search query
|
|
27
|
+
* @param page page number (default: 1)
|
|
28
|
+
* @param limit limit of results to return (default: 20) (max: 100) (min: 1)
|
|
29
|
+
*/
|
|
30
|
+
search: (query: string, page?: number) => Promise<Search<IMangaResult>>;
|
|
31
|
+
}
|
|
32
|
+
export default Comix;
|
|
33
|
+
interface Search<T> {
|
|
34
|
+
results: T[];
|
|
35
|
+
pagination?: any;
|
|
36
|
+
}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const models_1 = require("../../models");
|
|
8
|
+
const cheerio_1 = require("cheerio");
|
|
9
|
+
class Comix extends models_1.MangaParser {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.name = 'Comix';
|
|
13
|
+
this.baseUrl = 'https://comix.to';
|
|
14
|
+
this.classPath = 'MANGA.Comix';
|
|
15
|
+
this.apiUrl = 'https://comick.art/api';
|
|
16
|
+
this.referer = 'https://comix.to';
|
|
17
|
+
this.baseHeaders = {
|
|
18
|
+
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:144.0) Gecko/20100101 Firefox/144.0',
|
|
19
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
20
|
+
'Accept-Language': 'en-US,en;q=0.5',
|
|
21
|
+
'Sec-GPC': '1',
|
|
22
|
+
Connection: 'keep-alive',
|
|
23
|
+
'Upgrade-Insecure-Requests': '1',
|
|
24
|
+
'Sec-Fetch-Dest': 'document',
|
|
25
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
26
|
+
'Sec-Fetch-Site': 'same-origin',
|
|
27
|
+
Priority: 'u=0, i',
|
|
28
|
+
Pragma: 'no-cache',
|
|
29
|
+
'Cache-Control': 'no-cache',
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* @description Fetches info about the manga
|
|
33
|
+
* @param mangaId just the id
|
|
34
|
+
* @returns Promise<IMangaInfo>
|
|
35
|
+
*/
|
|
36
|
+
this.fetchMangaInfo = async (mangaId) => {
|
|
37
|
+
var _a, _b, _c, _d, _e;
|
|
38
|
+
try {
|
|
39
|
+
const { data } = await axios_1.default.get(`${this.baseUrl}/title/${mangaId}`, {
|
|
40
|
+
headers: this.baseHeaders,
|
|
41
|
+
});
|
|
42
|
+
const $ = (0, cheerio_1.load)(data);
|
|
43
|
+
let extractedData = null;
|
|
44
|
+
$('script').each((_, el) => {
|
|
45
|
+
const content = $(el).html() || '';
|
|
46
|
+
const pushMatches = Array.from(content.matchAll(/self\.__next_f\.push\(\[1,"([\s\S]*?)"\]\)/g));
|
|
47
|
+
for (const match of pushMatches) {
|
|
48
|
+
let payloadString = match[1];
|
|
49
|
+
try {
|
|
50
|
+
const unescaped = JSON.parse(`"${payloadString}"`);
|
|
51
|
+
if (unescaped.startsWith('d:')) {
|
|
52
|
+
const jsonPart = unescaped.substring(2);
|
|
53
|
+
const data = JSON.parse(jsonPart);
|
|
54
|
+
if (Array.isArray(data)) {
|
|
55
|
+
for (const item of data) {
|
|
56
|
+
if (item && typeof item === 'object') {
|
|
57
|
+
if (item.manga) {
|
|
58
|
+
extractedData = item.manga;
|
|
59
|
+
if (item.scanlationGroups)
|
|
60
|
+
extractedData.scanlationGroups = item.scanlationGroups;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
// ignore
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (!extractedData) {
|
|
73
|
+
throw new Error('Failed to extract manga data');
|
|
74
|
+
}
|
|
75
|
+
const mangaInfo = {
|
|
76
|
+
id: mangaId,
|
|
77
|
+
title: extractedData.title,
|
|
78
|
+
altTitles: extractedData.alt_titles,
|
|
79
|
+
description: extractedData.synopsis,
|
|
80
|
+
genres: ((_a = extractedData.genre) === null || _a === void 0 ? void 0 : _a.map((g) => g.title)) || [],
|
|
81
|
+
status: ((_b = extractedData.status) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'releasing' ? models_1.MediaStatus.ONGOING : models_1.MediaStatus.COMPLETED,
|
|
82
|
+
rating: extractedData.rated_avg,
|
|
83
|
+
views: extractedData.follows_total,
|
|
84
|
+
image: (_c = extractedData.poster) === null || _c === void 0 ? void 0 : _c.large,
|
|
85
|
+
authors: ((_d = extractedData.author) === null || _d === void 0 ? void 0 : _d.map((a) => a.title)) || [],
|
|
86
|
+
artist: ((_e = extractedData.artist) === null || _e === void 0 ? void 0 : _e.map((a) => a.title)) || [],
|
|
87
|
+
};
|
|
88
|
+
return mangaInfo;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
if (err.code == 'ERR_BAD_REQUEST')
|
|
92
|
+
throw new Error(`[${this.name}] Bad request. Make sure you have entered a valid query.`);
|
|
93
|
+
throw new Error(err.message);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
*
|
|
98
|
+
* @param chapterId Chapter ID '{hashid-slug}/{chapterid}'
|
|
99
|
+
* @returns Promise<IMangaChapterPage[]>
|
|
100
|
+
*/
|
|
101
|
+
this.fetchChapterPages = async (chapterId) => {
|
|
102
|
+
try {
|
|
103
|
+
const { data } = await axios_1.default.get(`${this.baseUrl}/title/${chapterId}`, {
|
|
104
|
+
headers: this.baseHeaders,
|
|
105
|
+
});
|
|
106
|
+
const $ = (0, cheerio_1.load)(data);
|
|
107
|
+
let images = [];
|
|
108
|
+
$('script').each((_, el) => {
|
|
109
|
+
const content = $(el).html() || '';
|
|
110
|
+
const pushMatches = Array.from(content.matchAll(/self\.__next_f\.push\(\[1,"([\s\S]*?)"\]\)/g));
|
|
111
|
+
for (const match of pushMatches) {
|
|
112
|
+
let payloadString = match[1];
|
|
113
|
+
try {
|
|
114
|
+
const unescaped = JSON.parse(`"${payloadString}"`);
|
|
115
|
+
if (unescaped.startsWith('d:')) {
|
|
116
|
+
const jsonPart = unescaped.substring(2);
|
|
117
|
+
const data = JSON.parse(jsonPart);
|
|
118
|
+
if (Array.isArray(data)) {
|
|
119
|
+
for (const item of data) {
|
|
120
|
+
if (item && typeof item === 'object') {
|
|
121
|
+
// Check for chapter data with images
|
|
122
|
+
if (item.chapter && Array.isArray(item.chapter.images)) {
|
|
123
|
+
images = item.chapter.images;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
// ignore
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
if (images.length === 0) {
|
|
136
|
+
throw new Error('Failed to extract chapter images');
|
|
137
|
+
}
|
|
138
|
+
return images.map((image, index) => ({
|
|
139
|
+
img: image.url,
|
|
140
|
+
page: index,
|
|
141
|
+
headersForUrl: this.baseUrl,
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
throw new Error(err.message);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* @param query search query
|
|
150
|
+
* @param page page number (default: 1)
|
|
151
|
+
* @param limit limit of results to return (default: 20) (max: 100) (min: 1)
|
|
152
|
+
*/
|
|
153
|
+
this.search = async (query, page) => {
|
|
154
|
+
try {
|
|
155
|
+
const { data } = await axios_1.default.get(`${this.baseUrl}/api/v2/manga`, {
|
|
156
|
+
params: {
|
|
157
|
+
'order[relevance]': 'desc',
|
|
158
|
+
keyword: query,
|
|
159
|
+
genres_mode: 'or',
|
|
160
|
+
limit: 28,
|
|
161
|
+
page: page,
|
|
162
|
+
},
|
|
163
|
+
headers: {
|
|
164
|
+
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:144.0) Gecko/20100101 Firefox/144.0',
|
|
165
|
+
Accept: '*/*',
|
|
166
|
+
Referer: `${this.baseUrl}/browser?keyword=${encodeURIComponent(query)}&order=relevance%3Adesc&genres_mode=or`,
|
|
167
|
+
'Content-Type': 'application/json',
|
|
168
|
+
'Sec-Fetch-Dest': 'empty',
|
|
169
|
+
'Sec-Fetch-Mode': 'cors',
|
|
170
|
+
'Sec-Fetch-Site': 'same-origin',
|
|
171
|
+
Connection: 'keep-alive',
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
const results = {
|
|
175
|
+
results: [],
|
|
176
|
+
};
|
|
177
|
+
if (data.result && data.result.items) {
|
|
178
|
+
data.result.items.forEach((item) => {
|
|
179
|
+
var _a;
|
|
180
|
+
results.results.push({
|
|
181
|
+
id: item.slug,
|
|
182
|
+
title: item.title,
|
|
183
|
+
altTitles: item.alt_titles || [],
|
|
184
|
+
image: (_a = item.poster) === null || _a === void 0 ? void 0 : _a.large,
|
|
185
|
+
description: item.synopsis,
|
|
186
|
+
status: item.status === 'releasing' ? models_1.MediaStatus.ONGOING : models_1.MediaStatus.COMPLETED,
|
|
187
|
+
rating: item.rated_avg,
|
|
188
|
+
views: item.follows_total,
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
if (data.result.pagination) {
|
|
192
|
+
results.pagination = data.result.pagination;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return results;
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
throw new Error(err.message);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
async fetchChapters(hid, page) {
|
|
203
|
+
const chapters = [];
|
|
204
|
+
let currentPage = page || 1;
|
|
205
|
+
let hasNextPage = true;
|
|
206
|
+
let pagination = undefined;
|
|
207
|
+
// If page is provided, we only fetch that page.
|
|
208
|
+
// If not provided, we loop.
|
|
209
|
+
const loop = !page;
|
|
210
|
+
while (hasNextPage) {
|
|
211
|
+
try {
|
|
212
|
+
const { data } = await axios_1.default.get(`${this.baseUrl}/api/v2/manga/${hid}/chapters`, {
|
|
213
|
+
params: {
|
|
214
|
+
limit: 100, // fetching more at once
|
|
215
|
+
page: currentPage,
|
|
216
|
+
'order[number]': 'desc',
|
|
217
|
+
},
|
|
218
|
+
headers: this.baseHeaders,
|
|
219
|
+
});
|
|
220
|
+
if (data.result && data.result.items) {
|
|
221
|
+
data.result.items.forEach((item) => {
|
|
222
|
+
var _a;
|
|
223
|
+
chapters.push({
|
|
224
|
+
id: item.chapter_id.toString(), // Using chapter_id as key
|
|
225
|
+
title: item.name || `Chapter ${item.number}`,
|
|
226
|
+
number: item.number,
|
|
227
|
+
releaseDate: item.created_at ? new Date(item.created_at * 1000).toISOString() : undefined,
|
|
228
|
+
isOfficial: item.is_official === 1,
|
|
229
|
+
scanlationGroup: (_a = item.scanlation_group) === null || _a === void 0 ? void 0 : _a.name,
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
pagination = data.result.pagination;
|
|
233
|
+
if (loop && pagination && pagination.current_page < pagination.last_page) {
|
|
234
|
+
currentPage++;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
hasNextPage = false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
hasNextPage = false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
console.error('Error fetching chapters page', currentPage, e);
|
|
246
|
+
hasNextPage = false;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return { chapters, pagination };
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//IIFE
|
|
253
|
+
// (async () => {
|
|
254
|
+
// const comix = new Comix();
|
|
255
|
+
// const search = await comix.search('solo leveling');
|
|
256
|
+
// console.log(search)
|
|
257
|
+
// const manga = await comix.fetchMangaInfo("rm2xv-the-grand-dukes-bride-is-a-hellborn-warrior");
|
|
258
|
+
// console.log(manga)
|
|
259
|
+
// const { chapters, pagination } = await comix.fetchChapters("rm2xv", 1);
|
|
260
|
+
// console.log(chapters, pagination);
|
|
261
|
+
// const pages = await comix.fetchChapterPages("rm2xv-the-grand-dukes-bride-is-a-hellborn-warrior/7304879-chapter-44");
|
|
262
|
+
// console.log(pages);
|
|
263
|
+
// })();
|
|
264
|
+
exports.default = Comix;
|
|
265
|
+
//# sourceMappingURL=comix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comix.js","sourceRoot":"","sources":["../../../src/providers/manga/comix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import MangaDex from './mangadex';
|
|
2
|
+
import ComicK from './comick';
|
|
3
|
+
import MangaHere from './mangahere';
|
|
4
|
+
import MangaPill from './mangapill';
|
|
5
|
+
import MangaReader from './mangareader';
|
|
6
|
+
import AsuraScans from './asurascans';
|
|
7
|
+
import WeebCentral from './weebcentral';
|
|
8
|
+
import MangaKakalot from './mangakakalot';
|
|
9
|
+
import Comix from './comix';
|
|
10
|
+
declare const _default: {
|
|
11
|
+
MangaDex: typeof MangaDex;
|
|
12
|
+
ComicK: typeof ComicK;
|
|
13
|
+
MangaHere: typeof MangaHere;
|
|
14
|
+
MangaPill: typeof MangaPill;
|
|
15
|
+
MangaReader: typeof MangaReader;
|
|
16
|
+
AsuraScans: typeof AsuraScans;
|
|
17
|
+
WeebCentral: typeof WeebCentral;
|
|
18
|
+
MangaKakalot: typeof MangaKakalot;
|
|
19
|
+
Comix: typeof Comix;
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const mangadex_1 = __importDefault(require("./mangadex"));
|
|
7
|
+
const comick_1 = __importDefault(require("./comick"));
|
|
8
|
+
const mangahere_1 = __importDefault(require("./mangahere"));
|
|
9
|
+
const mangapill_1 = __importDefault(require("./mangapill"));
|
|
10
|
+
const mangareader_1 = __importDefault(require("./mangareader"));
|
|
11
|
+
const asurascans_1 = __importDefault(require("./asurascans"));
|
|
12
|
+
const weebcentral_1 = __importDefault(require("./weebcentral"));
|
|
13
|
+
const mangakakalot_1 = __importDefault(require("./mangakakalot"));
|
|
14
|
+
const comix_1 = __importDefault(require("./comix"));
|
|
15
|
+
exports.default = {
|
|
16
|
+
MangaDex: mangadex_1.default,
|
|
17
|
+
ComicK: comick_1.default,
|
|
18
|
+
MangaHere: mangahere_1.default,
|
|
19
|
+
MangaPill: mangapill_1.default,
|
|
20
|
+
MangaReader: mangareader_1.default,
|
|
21
|
+
AsuraScans: asurascans_1.default,
|
|
22
|
+
WeebCentral: weebcentral_1.default,
|
|
23
|
+
MangaKakalot: mangakakalot_1.default,
|
|
24
|
+
Comix: comix_1.default,
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/manga/index.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAClC,sDAA8B;AAC9B,4DAAoC;AACpC,4DAAoC;AACpC,gEAAwC;AACxC,8DAAsC;AACtC,gEAAwC;AACxC,kEAA0C;AAC1C,oDAA4B;AAE5B,kBAAe;IACb,QAAQ,EAAR,kBAAQ;IACR,MAAM,EAAN,gBAAM;IACN,SAAS,EAAT,mBAAS;IACT,SAAS,EAAT,mBAAS;IACT,WAAW,EAAX,qBAAW;IACX,UAAU,EAAV,oBAAU;IACV,WAAW,EAAX,qBAAW;IACX,YAAY,EAAZ,sBAAY;IACZ,KAAK,EAAL,eAAK;CACN,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IMangaChapterPage, IMangaInfo, IMangaResult, ISearch, MangaParser } from '../../models';
|
|
2
|
+
declare class MangaDex extends MangaParser {
|
|
3
|
+
readonly name = "MangaDex";
|
|
4
|
+
protected baseUrl: string;
|
|
5
|
+
protected logo: string;
|
|
6
|
+
protected classPath: string;
|
|
7
|
+
private readonly apiUrl;
|
|
8
|
+
fetchMangaInfo: (mangaId: string) => Promise<IMangaInfo>;
|
|
9
|
+
/**
|
|
10
|
+
* @currently only supports english
|
|
11
|
+
*/
|
|
12
|
+
fetchChapterPages: (chapterId: string) => Promise<IMangaChapterPage[]>;
|
|
13
|
+
/**
|
|
14
|
+
* @param query search query
|
|
15
|
+
* @param page page number (default: 1)
|
|
16
|
+
* @param limit limit of results to return (default: 20) (max: 100) (min: 1)
|
|
17
|
+
*/
|
|
18
|
+
search: (query: string, page?: number, limit?: number) => Promise<ISearch<IMangaResult>>;
|
|
19
|
+
fetchRandom: () => Promise<ISearch<IMangaResult>>;
|
|
20
|
+
fetchRecentlyAdded: (page?: number, limit?: number) => Promise<ISearch<IMangaResult>>;
|
|
21
|
+
fetchLatestUpdates: (page?: number, limit?: number) => Promise<ISearch<IMangaResult>>;
|
|
22
|
+
fetchPopular: (page?: number, limit?: number) => Promise<ISearch<IMangaResult>>;
|
|
23
|
+
private fetchAllChapters;
|
|
24
|
+
private fetchCoverImage;
|
|
25
|
+
}
|
|
26
|
+
export default MangaDex;
|