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,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cheerio_1 = require("cheerio");
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
class MangaReader extends models_1.MangaParser {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.name = 'MangaReader';
|
|
9
|
+
this.baseUrl = 'https://mangareader.to';
|
|
10
|
+
this.logo = 'https://pbs.twimg.com/profile_images/1437311892905545728/TO0hFfUr_400x400.jpg';
|
|
11
|
+
this.classPath = 'MANGA.MangaReader';
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param query Search query
|
|
15
|
+
*/
|
|
16
|
+
this.search = async (query) => {
|
|
17
|
+
try {
|
|
18
|
+
const { data } = await this.client.get(`${this.baseUrl}/search?keyword=${query}`);
|
|
19
|
+
const $ = (0, cheerio_1.load)(data);
|
|
20
|
+
const results = $('div.manga_list-sbs div.mls-wrap div.item')
|
|
21
|
+
.map((i, el) => {
|
|
22
|
+
var _a;
|
|
23
|
+
return ({
|
|
24
|
+
id: (_a = $(el).find('a.manga-poster').attr('href')) === null || _a === void 0 ? void 0 : _a.split('/')[1],
|
|
25
|
+
title: $(el).find('div.manga-detail h3.manga-name a').text().trim(),
|
|
26
|
+
image: $(el).find('a.manga-poster img').attr('src'),
|
|
27
|
+
genres: $(el)
|
|
28
|
+
.find(`div.manga-detail div.fd-infor span > a`)
|
|
29
|
+
.map((i, genre) => $(genre).text())
|
|
30
|
+
.get(),
|
|
31
|
+
});
|
|
32
|
+
})
|
|
33
|
+
.get();
|
|
34
|
+
return {
|
|
35
|
+
results: results,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
// console.log(err);
|
|
40
|
+
throw new Error(err.message);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
this.fetchMangaInfo = async (mangaId) => {
|
|
44
|
+
const mangaInfo = {
|
|
45
|
+
id: mangaId,
|
|
46
|
+
title: '',
|
|
47
|
+
};
|
|
48
|
+
try {
|
|
49
|
+
const { data } = await this.client.get(`${this.baseUrl}/${mangaId}`);
|
|
50
|
+
const $ = (0, cheerio_1.load)(data);
|
|
51
|
+
const container = $('div.container');
|
|
52
|
+
mangaInfo.title = container.find('div.anisc-detail h2.manga-name').text().trim();
|
|
53
|
+
mangaInfo.image = container.find('img.manga-poster-img').attr('src');
|
|
54
|
+
mangaInfo.description = $('div.modal-body div.description-modal').text().split('\n').join(' ').trim();
|
|
55
|
+
mangaInfo.genres = container
|
|
56
|
+
.find('div.sort-desc div.genres a')
|
|
57
|
+
.map((i, genre) => $(genre).text().trim())
|
|
58
|
+
.get();
|
|
59
|
+
mangaInfo.chapters = container
|
|
60
|
+
.find(`div.chapters-list-ul ul li`)
|
|
61
|
+
.map((i, el) => {
|
|
62
|
+
var _a;
|
|
63
|
+
return ({
|
|
64
|
+
id: (_a = $(el).find('a').attr('href')) === null || _a === void 0 ? void 0 : _a.split('/read/')[1],
|
|
65
|
+
title: $(el).find('a').attr('title').trim(),
|
|
66
|
+
chapter: $(el).find('a span.name').text().split('Chapter ')[1].split(':')[0],
|
|
67
|
+
});
|
|
68
|
+
})
|
|
69
|
+
.get();
|
|
70
|
+
return mangaInfo;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
throw new Error(err.message);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
this.fetchChapterPages = async (chapterId) => {
|
|
77
|
+
try {
|
|
78
|
+
const { data } = await this.client.get(`${this.baseUrl}/read/${chapterId}`);
|
|
79
|
+
const $ = (0, cheerio_1.load)(data);
|
|
80
|
+
const readingId = $('div#wrapper').attr('data-reading-id');
|
|
81
|
+
if (!readingId) {
|
|
82
|
+
throw new Error('Unable to find pages');
|
|
83
|
+
}
|
|
84
|
+
const ajaxURL = `https://mangareader.to/ajax/image/list/chap/${readingId}?mode=vertical&quality=high`;
|
|
85
|
+
const { data: pagesData } = await this.client.get(ajaxURL);
|
|
86
|
+
const $PagesHTML = (0, cheerio_1.load)(pagesData.html);
|
|
87
|
+
const pagesSelector = $PagesHTML('div#main-wrapper div.container-reader-chapter div.iv-card');
|
|
88
|
+
const pages = pagesSelector
|
|
89
|
+
.map((i, el) => ({
|
|
90
|
+
img: $(el).attr('data-url').replace('&', '&'),
|
|
91
|
+
page: i + 1,
|
|
92
|
+
}))
|
|
93
|
+
.get();
|
|
94
|
+
return pages;
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
throw new Error(err.message);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// (async () => {
|
|
103
|
+
// const manga = new MangaReader();
|
|
104
|
+
// const search = await manga.search('one piece');
|
|
105
|
+
// const info = await manga.fetchMangaInfo(search.results[0].id);
|
|
106
|
+
// const pages = await manga.fetchChapterPages(info.chapters![0].id);
|
|
107
|
+
// console.log(pages);
|
|
108
|
+
// })();
|
|
109
|
+
exports.default = MangaReader;
|
|
110
|
+
//# sourceMappingURL=mangareader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mangareader.js","sourceRoot":"","sources":["../../../src/providers/manga/mangareader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MangaParser, ISearch, IMangaInfo, IMangaResult, IMangaChapterPage } from '../../models';
|
|
2
|
+
declare class WeebCentral extends MangaParser {
|
|
3
|
+
readonly name = "WeebCentral";
|
|
4
|
+
protected baseUrl: string;
|
|
5
|
+
protected logo: string;
|
|
6
|
+
protected classPath: string;
|
|
7
|
+
private headers;
|
|
8
|
+
search: (query: string, page?: number) => Promise<ISearch<IMangaResult>>;
|
|
9
|
+
fetchMangaInfo: (mangaId: string) => Promise<IMangaInfo>;
|
|
10
|
+
fetchChapterPages: (chapterId: string) => Promise<IMangaChapterPage[]>;
|
|
11
|
+
}
|
|
12
|
+
export default WeebCentral;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cheerio_1 = require("cheerio");
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
class WeebCentral extends models_1.MangaParser {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.name = 'WeebCentral';
|
|
9
|
+
this.baseUrl = 'https://weebcentral.com';
|
|
10
|
+
this.logo = 'https://weebcentral.com/static/images/brand.png';
|
|
11
|
+
this.classPath = 'MANGA.WeebCentral';
|
|
12
|
+
this.headers = {
|
|
13
|
+
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:144.0) Gecko/20100101 Firefox/144.0',
|
|
14
|
+
Accept: '*/*',
|
|
15
|
+
'Accept-Language': 'en-US,en;q=0.5',
|
|
16
|
+
'Sec-Fetch-Dest': 'empty',
|
|
17
|
+
'Sec-Fetch-Mode': 'cors',
|
|
18
|
+
'Sec-Fetch-Site': 'same-origin',
|
|
19
|
+
Connection: 'keep-alive',
|
|
20
|
+
};
|
|
21
|
+
this.search = async (query, page = 1) => {
|
|
22
|
+
try {
|
|
23
|
+
const limit = 32;
|
|
24
|
+
const offset = (page - 1) * limit;
|
|
25
|
+
const { data } = await this.client.get(`${this.baseUrl}/search/data`, {
|
|
26
|
+
params: {
|
|
27
|
+
limit: limit,
|
|
28
|
+
offset: offset,
|
|
29
|
+
text: query,
|
|
30
|
+
sort: 'Best Match',
|
|
31
|
+
order: 'Descending',
|
|
32
|
+
official: 'Any',
|
|
33
|
+
anime: 'Any',
|
|
34
|
+
adult: 'Any',
|
|
35
|
+
display_mode: 'Full Display',
|
|
36
|
+
},
|
|
37
|
+
headers: {
|
|
38
|
+
...this.headers,
|
|
39
|
+
'HX-Request': 'true',
|
|
40
|
+
'HX-Current-URL': `${this.baseUrl}/search?text=${encodeURIComponent(query)}&sort=Best+Match&order=Descending&official=Any&anime=Any&adult=Any&display_mode=Full+Display`,
|
|
41
|
+
},
|
|
42
|
+
decompress: true,
|
|
43
|
+
});
|
|
44
|
+
const $ = (0, cheerio_1.load)(data);
|
|
45
|
+
const results = $('article.bg-base-300')
|
|
46
|
+
.map((i, el) => {
|
|
47
|
+
const linkElement = $(el).find('section a').first();
|
|
48
|
+
const href = linkElement.attr('href');
|
|
49
|
+
const id = (href === null || href === void 0 ? void 0 : href.split('/series/')[1]) || '';
|
|
50
|
+
const title = $(el).find('section.hidden.lg\\:block .tooltip a').text().trim() ||
|
|
51
|
+
$(el).find('section a .text-ellipsis').text().trim();
|
|
52
|
+
const image = $(el).find('picture source').first().attr('srcset') || $(el).find('picture img').attr('src');
|
|
53
|
+
return {
|
|
54
|
+
id: id,
|
|
55
|
+
title: title,
|
|
56
|
+
image: image,
|
|
57
|
+
};
|
|
58
|
+
})
|
|
59
|
+
.get();
|
|
60
|
+
const hasNextPage = results.length === limit;
|
|
61
|
+
return {
|
|
62
|
+
currentPage: page,
|
|
63
|
+
hasNextPage: hasNextPage,
|
|
64
|
+
results: results,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
throw new Error(err.message);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
this.fetchMangaInfo = async (mangaId) => {
|
|
72
|
+
const mangaInfo = {
|
|
73
|
+
id: mangaId,
|
|
74
|
+
title: '',
|
|
75
|
+
};
|
|
76
|
+
try {
|
|
77
|
+
const cleanId = mangaId.split('/')[0];
|
|
78
|
+
const [mainResponse, chaptersResponse] = await Promise.all([
|
|
79
|
+
this.client.get(`${this.baseUrl}/series/${mangaId}`, {
|
|
80
|
+
headers: this.headers,
|
|
81
|
+
decompress: true,
|
|
82
|
+
}),
|
|
83
|
+
this.client.get(`${this.baseUrl}/series/${cleanId}/full-chapter-list`, {
|
|
84
|
+
headers: {
|
|
85
|
+
...this.headers,
|
|
86
|
+
'HX-Request': 'true',
|
|
87
|
+
'HX-Target': 'chapter-list',
|
|
88
|
+
'HX-Current-URL': `${this.baseUrl}/series/${mangaId}`,
|
|
89
|
+
},
|
|
90
|
+
decompress: true,
|
|
91
|
+
}),
|
|
92
|
+
]);
|
|
93
|
+
const $ = (0, cheerio_1.load)(mainResponse.data);
|
|
94
|
+
const $chapters = (0, cheerio_1.load)(chaptersResponse.data);
|
|
95
|
+
mangaInfo.title = $('h1.text-2xl.font-bold').first().text().trim() || $('h1').first().text().trim();
|
|
96
|
+
mangaInfo.image = $('picture source').attr('srcset') || $('picture img').attr('src');
|
|
97
|
+
const descriptionElement = $('strong:contains("Description")').parent().find('p');
|
|
98
|
+
mangaInfo.description = descriptionElement.text().trim();
|
|
99
|
+
const authorLinks = $('strong:contains("Author(s)")').parent().find('a');
|
|
100
|
+
mangaInfo.authors = authorLinks.map((i, el) => $(el).text().trim()).get();
|
|
101
|
+
const genreLinks = $('strong:contains("Tags(s)")').parent().find('a');
|
|
102
|
+
mangaInfo.genres = genreLinks.map((i, el) => $(el).text().trim()).get();
|
|
103
|
+
const releaseDateText = $('strong:contains("Released")').parent().find('span').text().trim();
|
|
104
|
+
mangaInfo.releaseDate = releaseDateText;
|
|
105
|
+
const statusLink = $('strong:contains("Status")').parent().find('a');
|
|
106
|
+
mangaInfo.status = statusLink.text().trim().toLowerCase();
|
|
107
|
+
mangaInfo.chapters = $chapters('a[href*="/chapters/"]')
|
|
108
|
+
.map((i, el) => {
|
|
109
|
+
const href = $chapters(el).attr('href');
|
|
110
|
+
const chapterId = href === null || href === void 0 ? void 0 : href.split('/chapters/')[1];
|
|
111
|
+
const chapterText = $chapters(el).find('span.grow span').first().text().trim();
|
|
112
|
+
const timeElement = $chapters(el).find('time');
|
|
113
|
+
const releaseDate = timeElement.attr('datetime');
|
|
114
|
+
return {
|
|
115
|
+
id: chapterId,
|
|
116
|
+
title: chapterText,
|
|
117
|
+
releaseDate: releaseDate,
|
|
118
|
+
};
|
|
119
|
+
})
|
|
120
|
+
.get();
|
|
121
|
+
return mangaInfo;
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
throw new Error(err.message);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
this.fetchChapterPages = async (chapterId) => {
|
|
128
|
+
try {
|
|
129
|
+
const { data } = await this.client.get(`${this.baseUrl}/chapters/${chapterId}/images?is_prev=False¤t_page=1&reading_style=long_strip`, {
|
|
130
|
+
headers: {
|
|
131
|
+
...this.headers,
|
|
132
|
+
Referer: `${this.baseUrl}/chapters/${chapterId}`,
|
|
133
|
+
'HX-Request': 'true',
|
|
134
|
+
'HX-Current-URL': `${this.baseUrl}/chapters/${chapterId}`,
|
|
135
|
+
},
|
|
136
|
+
decompress: true,
|
|
137
|
+
});
|
|
138
|
+
const $ = (0, cheerio_1.load)(data);
|
|
139
|
+
const pages = $('img')
|
|
140
|
+
.map((i, el) => {
|
|
141
|
+
const imgSrc = $(el).attr('src');
|
|
142
|
+
const altText = $(el).attr('alt') || '';
|
|
143
|
+
const pageMatch = altText.match(/Page (\d+)/);
|
|
144
|
+
const pageNumber = pageMatch ? parseInt(pageMatch[1]) : i + 1;
|
|
145
|
+
return {
|
|
146
|
+
img: imgSrc,
|
|
147
|
+
page: pageNumber,
|
|
148
|
+
headerForImage: this.baseUrl,
|
|
149
|
+
};
|
|
150
|
+
})
|
|
151
|
+
.get()
|
|
152
|
+
.filter(page => page.img && !page.img.includes('broken_image.jpg')); // Filter out broken images
|
|
153
|
+
return pages;
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
throw new Error(err.message);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// (async () => {
|
|
162
|
+
// const manga = new WeebCentral();
|
|
163
|
+
// const search = await manga.search('bleach');
|
|
164
|
+
// const info = await manga.fetchMangaInfo("01J76XY7VSG3R5ANYPDWTXDVP6/Kingdom");
|
|
165
|
+
// const pages = await manga.fetchChapterPages("01K8VEAEHDBSVQ6PJ3MNBDH7D7");
|
|
166
|
+
// console.log(pages)
|
|
167
|
+
// })();
|
|
168
|
+
exports.default = WeebCentral;
|
|
169
|
+
//# sourceMappingURL=weebcentral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weebcentral.js","sourceRoot":"","sources":["../../../src/providers/manga/weebcentral.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { AxiosAdapter } from 'axios';
|
|
2
|
+
import { AnimeParser, ISearch, IAnimeInfo, IAnimeResult, ISource, IAnimeEpisode, IEpisodeServer, Genres, MangaParser, IMangaChapterPage, IMangaInfo, IMangaResult, IMangaChapter, ProxyConfig, IStaff } from '../../models';
|
|
3
|
+
declare class Anilist extends AnimeParser {
|
|
4
|
+
proxyConfig?: ProxyConfig | undefined;
|
|
5
|
+
readonly name = "Anilist";
|
|
6
|
+
protected baseUrl: string;
|
|
7
|
+
protected logo: string;
|
|
8
|
+
protected classPath: string;
|
|
9
|
+
private readonly anilistGraphqlUrl;
|
|
10
|
+
private readonly kitsuGraphqlUrl;
|
|
11
|
+
private readonly malSyncUrl;
|
|
12
|
+
private readonly anifyUrl;
|
|
13
|
+
provider: AnimeParser;
|
|
14
|
+
/**
|
|
15
|
+
* This class maps anilist to kitsu with any other anime provider.
|
|
16
|
+
* kitsu is used for episode images, titles and description.
|
|
17
|
+
* @param provider anime provider (optional) default: Gogoanime
|
|
18
|
+
* @param proxyConfig proxy config (optional)
|
|
19
|
+
* @param adapter axios adapter (optional)
|
|
20
|
+
*/
|
|
21
|
+
constructor(provider?: AnimeParser, proxyConfig?: ProxyConfig | undefined, adapter?: AxiosAdapter);
|
|
22
|
+
/**
|
|
23
|
+
* @param authToken Anilist auth token
|
|
24
|
+
* @param type Type of favorites to fetch: 'ANIME', 'MANGA', or 'BOTH' (default: 'BOTH')
|
|
25
|
+
* @returns favorite lists
|
|
26
|
+
*/
|
|
27
|
+
fetchFavoriteList: (authToken: string, type?: "ANIME" | "MANGA" | "BOTH") => Promise<{
|
|
28
|
+
anime?: IAnimeInfo[];
|
|
29
|
+
manga?: IAnimeInfo[];
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* @param query Search query
|
|
33
|
+
* @param page Page number (optional)
|
|
34
|
+
* @param perPage Number of results per page (optional) (default: 15) (max: 50)
|
|
35
|
+
*/
|
|
36
|
+
search: (query: string, page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* @param query Search query (optional)
|
|
40
|
+
* @param type Media type (optional) (default: `ANIME`) (options: `ANIME`, `MANGA`)
|
|
41
|
+
* @param page Page number (optional)
|
|
42
|
+
* @param perPage Number of results per page (optional) (default: `20`) (max: `50`)
|
|
43
|
+
* @param format Format (optional) (options: `TV`, `TV_SHORT`, `MOVIE`, `SPECIAL`, `OVA`, `ONA`, `MUSIC`)
|
|
44
|
+
* @param sort Sort (optional) (Default: `[POPULARITY_DESC, SCORE_DESC]`) (options: `POPULARITY_DESC`, `POPULARITY`, `TRENDING_DESC`, `TRENDING`, `UPDATED_AT_DESC`, `UPDATED_AT`, `START_DATE_DESC`, `START_DATE`, `END_DATE_DESC`, `END_DATE`, `FAVOURITES_DESC`, `FAVOURITES`, `SCORE_DESC`, `SCORE`, `TITLE_ROMAJI_DESC`, `TITLE_ROMAJI`, `TITLE_ENGLISH_DESC`, `TITLE_ENGLISH`, `TITLE_NATIVE_DESC`, `TITLE_NATIVE`, `EPISODES_DESC`, `EPISODES`, `ID`, `ID_DESC`)
|
|
45
|
+
* @param genres Genres (optional) (options: `Action`, `Adventure`, `Cars`, `Comedy`, `Drama`, `Fantasy`, `Horror`, `Mahou Shoujo`, `Mecha`, `Music`, `Mystery`, `Psychological`, `Romance`, `Sci-Fi`, `Slice of Life`, `Sports`, `Supernatural`, `Thriller`)
|
|
46
|
+
* @param id anilist Id (optional)
|
|
47
|
+
* @param year Year (optional) e.g. `2022`
|
|
48
|
+
* @param status Status (optional) (options: `RELEASING`, `FINISHED`, `NOT_YET_RELEASED`, `CANCELLED`, `HIATUS`)
|
|
49
|
+
* @param season Season (optional) (options: `WINTER`, `SPRING`, `SUMMER`, `FALL`)
|
|
50
|
+
* @param countryOfOrigin Country of origin (optional)
|
|
51
|
+
*/
|
|
52
|
+
advancedSearch: (query?: string, type?: string, page?: number, perPage?: number, format?: string, sort?: string[], genres?: Genres[] | string[], id?: string | number, year?: number, status?: string, season?: string, countryOfOrigin?: string) => Promise<ISearch<IAnimeResult>>;
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param id Anime id
|
|
56
|
+
* @param dub to get dubbed episodes (optional) set to `true` to get dubbed episodes. **ONLY WORKS FOR GOGOANIME**
|
|
57
|
+
* @param fetchFiller to get filler boolean on the episode object (optional) set to `true` to get filler boolean on the episode object.
|
|
58
|
+
*/
|
|
59
|
+
fetchAnimeInfo: (id: string, dub?: boolean, fetchFiller?: boolean) => Promise<IAnimeInfo>;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @param episodeId Episode id
|
|
63
|
+
*/
|
|
64
|
+
fetchEpisodeSources: (episodeId: string, ...args: any) => Promise<ISource>;
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* @param episodeId Episode id
|
|
68
|
+
*/
|
|
69
|
+
fetchEpisodeServers: (episodeId: string) => Promise<IEpisodeServer[]>;
|
|
70
|
+
private findAnime;
|
|
71
|
+
private findAnimeSlug;
|
|
72
|
+
private findKitsuAnime;
|
|
73
|
+
/**
|
|
74
|
+
* @param page page number to search for (optional)
|
|
75
|
+
* @param perPage number of results per page (optional)
|
|
76
|
+
*/
|
|
77
|
+
fetchTrendingAnime: (page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
|
|
78
|
+
/**
|
|
79
|
+
*
|
|
80
|
+
* @param page page number to search for (optional)
|
|
81
|
+
* @param perPage number of results per page (optional)
|
|
82
|
+
*/
|
|
83
|
+
fetchPopularAnime: (page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
|
|
84
|
+
/**
|
|
85
|
+
*
|
|
86
|
+
* @param page page number (optional)
|
|
87
|
+
* @param perPage number of results per page (optional)
|
|
88
|
+
* @param weekStart Filter by the start of the week (optional) (default: todays date) (options: 2 = Monday, 3 = Tuesday, 4 = Wednesday, 5 = Thursday, 6 = Friday, 0 = Saturday, 1 = Sunday) you can use either the number or the string
|
|
89
|
+
* @param weekEnd Filter by the end of the week (optional) similar to weekStart
|
|
90
|
+
* @param notYetAired if true will return anime that have not yet aired (optional)
|
|
91
|
+
* @returns the next airing episodes
|
|
92
|
+
*/
|
|
93
|
+
fetchAiringSchedule: (page?: number, perPage?: number, weekStart?: number | string, weekEnd?: number | string, notYetAired?: boolean) => Promise<ISearch<IAnimeResult>>;
|
|
94
|
+
/**
|
|
95
|
+
*
|
|
96
|
+
* @param genres An array of genres to filter by (optional) genres: [`Action`, `Adventure`, `Cars`, `Comedy`, `Drama`, `Fantasy`, `Horror`, `Mahou Shoujo`, `Mecha`, `Music`, `Mystery`, `Psychological`, `Romance`, `Sci-Fi`, `Slice of Life`, `Sports`, `Supernatural`, `Thriller`]
|
|
97
|
+
* @param page page number (optional)
|
|
98
|
+
* @param perPage number of results per page (optional)
|
|
99
|
+
*/
|
|
100
|
+
fetchAnimeGenres: (genres: string[] | Genres[], page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
|
|
101
|
+
private findAnimeRaw;
|
|
102
|
+
/**
|
|
103
|
+
* @returns a random anime
|
|
104
|
+
*/
|
|
105
|
+
fetchRandomAnime: () => Promise<IAnimeInfo>;
|
|
106
|
+
/**
|
|
107
|
+
* @param provider The provider to get the episode Ids from (optional) default: `gogoanime` (options: `gogoanime`, `Hianime`)
|
|
108
|
+
* @param page page number (optional)
|
|
109
|
+
* @param perPage number of results per page (optional)
|
|
110
|
+
*/
|
|
111
|
+
fetchRecentEpisodes: (provider?: "gogoanime" | "Hianime", page?: number, perPage?: number) => Promise<ISearch<IAnimeResult>>;
|
|
112
|
+
private fetchDefaultEpisodeList;
|
|
113
|
+
/**
|
|
114
|
+
* @param id anilist id
|
|
115
|
+
* @param dub language of the dubbed version (optional) currently only works for gogoanime
|
|
116
|
+
* @param fetchFiller to get filler boolean on the episode object (optional) set to `true` to get filler boolean on the episode object.
|
|
117
|
+
* @returns episode list **(without anime info)**
|
|
118
|
+
*/
|
|
119
|
+
fetchEpisodesListById: (id: string, dub?: boolean, fetchFiller?: boolean) => Promise<IAnimeEpisode[]>;
|
|
120
|
+
/**
|
|
121
|
+
* @param id anilist id
|
|
122
|
+
* @returns anilist data for the anime **(without episodes)** (use `fetchEpisodesListById` to get the episodes) (use `fetchAnimeInfo` to get both)
|
|
123
|
+
*/
|
|
124
|
+
fetchAnilistInfoById: (id: string) => Promise<IAnimeInfo>;
|
|
125
|
+
/**
|
|
126
|
+
* To get Staff details by anilistId
|
|
127
|
+
* @param id staff id from anilist
|
|
128
|
+
*
|
|
129
|
+
*/
|
|
130
|
+
fetchStaffById: (id: number) => Promise<IStaff>;
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @param id character id from anilist
|
|
134
|
+
*/
|
|
135
|
+
fetchCharacterInfoById: (id: string) => Promise<{
|
|
136
|
+
id: any;
|
|
137
|
+
name: {
|
|
138
|
+
first: any;
|
|
139
|
+
last: any;
|
|
140
|
+
full: any;
|
|
141
|
+
native: any;
|
|
142
|
+
userPreferred: any;
|
|
143
|
+
alternative: any;
|
|
144
|
+
alternativeSpoiler: any;
|
|
145
|
+
};
|
|
146
|
+
image: any;
|
|
147
|
+
imageHash: string;
|
|
148
|
+
description: any;
|
|
149
|
+
gender: any;
|
|
150
|
+
dateOfBirth: {
|
|
151
|
+
year: any;
|
|
152
|
+
month: any;
|
|
153
|
+
day: any;
|
|
154
|
+
};
|
|
155
|
+
bloodType: any;
|
|
156
|
+
age: any;
|
|
157
|
+
hairColor: any;
|
|
158
|
+
eyeColor: any;
|
|
159
|
+
height: any;
|
|
160
|
+
weight: any;
|
|
161
|
+
occupation: any;
|
|
162
|
+
partner: any;
|
|
163
|
+
relatives: any;
|
|
164
|
+
race: any;
|
|
165
|
+
rank: any;
|
|
166
|
+
previousPosition: any;
|
|
167
|
+
dislikes: any;
|
|
168
|
+
sign: any;
|
|
169
|
+
zodicSign: any;
|
|
170
|
+
zodicAnimal: any;
|
|
171
|
+
themeSong: any;
|
|
172
|
+
relations: any;
|
|
173
|
+
}>;
|
|
174
|
+
/**
|
|
175
|
+
* Anilist Anime class
|
|
176
|
+
*/
|
|
177
|
+
static Anime: typeof Anilist;
|
|
178
|
+
/**
|
|
179
|
+
* Anilist Manga Class
|
|
180
|
+
*/
|
|
181
|
+
static Manga: {
|
|
182
|
+
new (provider?: MangaParser): {
|
|
183
|
+
provider: MangaParser;
|
|
184
|
+
/**
|
|
185
|
+
*
|
|
186
|
+
* @param query query to search for
|
|
187
|
+
* @param page (optional) page number (default: `1`)
|
|
188
|
+
* @param perPage (optional) number of results per page (default: `20`)
|
|
189
|
+
*/
|
|
190
|
+
search: (query: string, page?: number, perPage?: number) => Promise<ISearch<IMangaResult>>;
|
|
191
|
+
/**
|
|
192
|
+
*
|
|
193
|
+
* @param chapterId chapter id
|
|
194
|
+
* @param args args to pass to the provider (if any)
|
|
195
|
+
* @returns
|
|
196
|
+
*/
|
|
197
|
+
fetchChapterPages: (chapterId: string, ...args: any) => Promise<IMangaChapterPage[]>;
|
|
198
|
+
fetchChaptersList: (mangaId: string, ...args: any) => Promise<IMangaChapter[]>;
|
|
199
|
+
fetchMangaInfo: (id: string, ...args: any) => Promise<IMangaInfo>;
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
private findMangaSlug;
|
|
203
|
+
private findMangaRaw;
|
|
204
|
+
private findManga;
|
|
205
|
+
}
|
|
206
|
+
export default Anilist;
|