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,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
class StreamWish extends models_1.VideoExtractor {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.serverName = 'streamwish';
|
|
8
|
+
this.sources = [];
|
|
9
|
+
this.extract = async (videoUrl) => {
|
|
10
|
+
var _a, _b, _c, _d;
|
|
11
|
+
try {
|
|
12
|
+
let finalUrl = videoUrl.href;
|
|
13
|
+
if (videoUrl.hostname.includes('hglink.to')) {
|
|
14
|
+
finalUrl = finalUrl.replace('hglink.to', 'dumbalag.com');
|
|
15
|
+
}
|
|
16
|
+
const apiUrl = 'https://crawlr.cc/B6D2A9F1C?url=' + encodeURIComponent(finalUrl);
|
|
17
|
+
const { data } = await this.client.get(apiUrl);
|
|
18
|
+
if (!((_a = data.sources) === null || _a === void 0 ? void 0 : _a.length))
|
|
19
|
+
throw new Error('No sources returned');
|
|
20
|
+
for (const src of data.sources) {
|
|
21
|
+
this.sources.push({
|
|
22
|
+
url: src.url,
|
|
23
|
+
quality: (_b = src.quality) !== null && _b !== void 0 ? _b : 'auto',
|
|
24
|
+
isM3U8: src.url.includes('.m3u8'),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const subtitles = (_d = (_c = data.tracks) === null || _c === void 0 ? void 0 : _c.filter(t => t.kind === 'captions').map(t => {
|
|
28
|
+
var _a;
|
|
29
|
+
return ({
|
|
30
|
+
lang: (_a = t.label) !== null && _a !== void 0 ? _a : 'Unknown',
|
|
31
|
+
url: t.file,
|
|
32
|
+
});
|
|
33
|
+
})) !== null && _d !== void 0 ? _d : [];
|
|
34
|
+
return {
|
|
35
|
+
sources: this.sources,
|
|
36
|
+
subtitles,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
throw new Error(err.message);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.default = StreamWish;
|
|
46
|
+
//# sourceMappingURL=streamwish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamwish.js","sourceRoot":"","sources":["../../src/extractors/streamwish.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAsB9D,MAAM,UAAW,SAAQ,uBAAc;IAAvC;;QACqB,eAAU,GAAG,YAAY,CAAC;QAC1B,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAA+D,EAAE;;YACtG,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAE7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAC3D,CAAC;gBAED,MAAM,MAAM,GAAG,kCAAkC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAEjF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAc,MAAM,CAAC,CAAC;gBAE5D,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAA;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAElE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,OAAO,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,MAAM;wBAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,SAAS,GACb,MAAA,MAAA,IAAI,CAAC,MAAM,0CACP,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAClC,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBACT,IAAI,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,SAAS;wBAC1B,GAAG,EAAE,CAAC,CAAC,IAAI;qBACZ,CAAC,CAAA;iBAAA,CAAC,mCAAI,EAAE,CAAC;gBAEd,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VideoExtractor, IVideo, ISubtitle } from '../models';
|
|
2
|
+
declare class VidCloud extends VideoExtractor {
|
|
3
|
+
protected serverName: string;
|
|
4
|
+
protected sources: IVideo[];
|
|
5
|
+
extract: (videoUrl: URL) => Promise<{
|
|
6
|
+
sources: IVideo[];
|
|
7
|
+
} & {
|
|
8
|
+
subtitles: ISubtitle[];
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
export default VidCloud;
|
|
@@ -0,0 +1,109 @@
|
|
|
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 models_1 = require("../models");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
class VidCloud extends models_1.VideoExtractor {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.serverName = 'VidCloud';
|
|
13
|
+
this.sources = [];
|
|
14
|
+
this.extract = async (videoUrl) => {
|
|
15
|
+
var _a, _b, _c;
|
|
16
|
+
try {
|
|
17
|
+
const result = {
|
|
18
|
+
sources: [],
|
|
19
|
+
subtitles: [],
|
|
20
|
+
};
|
|
21
|
+
const decUrl = new URL('https://dec.eatmynerds.live');
|
|
22
|
+
decUrl.searchParams.set('url', videoUrl.href);
|
|
23
|
+
const { data: initialData } = await axios_1.default.get(decUrl.toString());
|
|
24
|
+
if (!((_a = initialData === null || initialData === void 0 ? void 0 : initialData.sources) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
25
|
+
throw new Error('No sources found from the initial request.');
|
|
26
|
+
}
|
|
27
|
+
let masterPlaylistUrl = initialData.sources[0].file;
|
|
28
|
+
let masterPlaylist = null;
|
|
29
|
+
try {
|
|
30
|
+
const { data } = await axios_1.default.get(masterPlaylistUrl, {
|
|
31
|
+
headers: {
|
|
32
|
+
Referer: videoUrl.href,
|
|
33
|
+
'User-Agent': utils_1.USER_AGENT,
|
|
34
|
+
},
|
|
35
|
+
timeout: 10000,
|
|
36
|
+
});
|
|
37
|
+
masterPlaylist = data;
|
|
38
|
+
}
|
|
39
|
+
catch (httpsError) {
|
|
40
|
+
const httpUrl = masterPlaylistUrl.replace('https://', 'http://');
|
|
41
|
+
try {
|
|
42
|
+
const { data } = await axios_1.default.get(httpUrl, {
|
|
43
|
+
headers: {
|
|
44
|
+
Referer: videoUrl.href,
|
|
45
|
+
'User-Agent': utils_1.USER_AGENT,
|
|
46
|
+
},
|
|
47
|
+
timeout: 10000,
|
|
48
|
+
});
|
|
49
|
+
masterPlaylist = data;
|
|
50
|
+
masterPlaylistUrl = httpUrl;
|
|
51
|
+
}
|
|
52
|
+
catch (httpError) {
|
|
53
|
+
return {
|
|
54
|
+
sources: [
|
|
55
|
+
{
|
|
56
|
+
url: masterPlaylistUrl,
|
|
57
|
+
isM3U8: masterPlaylistUrl.includes('.m3u8'),
|
|
58
|
+
quality: 'auto',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
subtitles: ((_b = initialData.tracks) === null || _b === void 0 ? void 0 : _b.map((s) => {
|
|
62
|
+
var _a;
|
|
63
|
+
return ({
|
|
64
|
+
url: s.file,
|
|
65
|
+
lang: (_a = s.label) !== null && _a !== void 0 ? _a : 'Default',
|
|
66
|
+
});
|
|
67
|
+
})) || [],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const sources = [];
|
|
72
|
+
sources.push({
|
|
73
|
+
url: masterPlaylistUrl,
|
|
74
|
+
isM3U8: true,
|
|
75
|
+
quality: 'auto',
|
|
76
|
+
});
|
|
77
|
+
const playlistRegex = /#EXT-X-STREAM-INF:.*RESOLUTION=(\d+x(\d+)).*\n(.*)/g;
|
|
78
|
+
let match;
|
|
79
|
+
while ((match = playlistRegex.exec(masterPlaylist)) !== null) {
|
|
80
|
+
const quality = `${match[2]}p`;
|
|
81
|
+
let url = match[3];
|
|
82
|
+
if (!url.startsWith('http')) {
|
|
83
|
+
url = new URL(url, masterPlaylistUrl).toString();
|
|
84
|
+
}
|
|
85
|
+
sources.push({
|
|
86
|
+
url,
|
|
87
|
+
quality,
|
|
88
|
+
isM3U8: url.includes('.m3u8'),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
result.sources = sources;
|
|
92
|
+
result.subtitles =
|
|
93
|
+
((_c = initialData.tracks) === null || _c === void 0 ? void 0 : _c.map((s) => {
|
|
94
|
+
var _a;
|
|
95
|
+
return ({
|
|
96
|
+
url: s.file,
|
|
97
|
+
lang: (_a = s.label) !== null && _a !== void 0 ? _a : 'Default',
|
|
98
|
+
});
|
|
99
|
+
})) || [];
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
throw err;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.default = VidCloud;
|
|
109
|
+
//# sourceMappingURL=vidcloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vidcloud.js","sourceRoot":"","sources":["../../src/extractors/vidcloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VideoExtractor, IVideo, ISubtitle } from '../models';
|
|
2
|
+
declare class VideoStr extends VideoExtractor {
|
|
3
|
+
protected serverName: string;
|
|
4
|
+
protected sources: IVideo[];
|
|
5
|
+
extract: (videoUrl: URL) => Promise<{
|
|
6
|
+
sources: IVideo[];
|
|
7
|
+
subtitles: ISubtitle[];
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export default VideoStr;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
class VideoStr extends models_1.VideoExtractor {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.serverName = 'VideoStr';
|
|
8
|
+
this.sources = [];
|
|
9
|
+
this.extract = async (videoUrl) => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
try {
|
|
12
|
+
const apiUrl = 'https://crawlr.cc/E2B9A6F4C?url=' + encodeURIComponent(videoUrl.href);
|
|
13
|
+
const { data } = await this.client.get(apiUrl);
|
|
14
|
+
if (!data.sources || data.sources.length === 0) {
|
|
15
|
+
throw new Error('No sources returned');
|
|
16
|
+
}
|
|
17
|
+
for (const src of data.sources) {
|
|
18
|
+
this.sources.push({
|
|
19
|
+
url: src.url,
|
|
20
|
+
quality: (_a = src.quality) !== null && _a !== void 0 ? _a : 'auto',
|
|
21
|
+
isM3U8: src.url.includes('.m3u8'),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const subtitles = (_c = (_b = data.tracks) === null || _b === void 0 ? void 0 : _b.map(t => {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
return ({
|
|
27
|
+
lang: (_a = t.label) !== null && _a !== void 0 ? _a : 'Unknown',
|
|
28
|
+
url: t.file,
|
|
29
|
+
kind: (_b = t.kind) !== null && _b !== void 0 ? _b : 'captions',
|
|
30
|
+
});
|
|
31
|
+
})) !== null && _c !== void 0 ? _c : [];
|
|
32
|
+
return {
|
|
33
|
+
sources: this.sources,
|
|
34
|
+
subtitles,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new Error(err.message);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.default = VideoStr;
|
|
44
|
+
//# sourceMappingURL=videostr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videostr.js","sourceRoot":"","sources":["../../src/extractors/videostr.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAqB9D,MAAM,QAAS,SAAQ,uBAAc;IAArC;;QACqB,eAAU,GAAG,UAAU,CAAC;QACxB,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAA0D,EAAE;;YACjG,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,kCAAkC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEtF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAkB,MAAM,CAAC,CAAC;gBAEhE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,OAAO,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,MAAM;wBAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,SAAS,GACb,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBACrB,IAAI,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,SAAS;wBAC1B,GAAG,EAAE,CAAC,CAAC,IAAI;wBACX,IAAI,EAAE,MAAA,CAAC,CAAC,IAAI,mCAAI,UAAU;qBAC3B,CAAC,CAAA;iBAAA,CAAC,mCAAI,EAAE,CAAC;gBAEZ,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
class VidMoly extends models_1.VideoExtractor {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.serverName = 'vidmoly';
|
|
8
|
+
this.sources = [];
|
|
9
|
+
this.extract = async (videoUrl) => {
|
|
10
|
+
var _a;
|
|
11
|
+
try {
|
|
12
|
+
const urlString = videoUrl.href.replace('vidmoly.to', 'vidmoly.net');
|
|
13
|
+
const { data } = await this.client.get(urlString, {
|
|
14
|
+
headers: {
|
|
15
|
+
Referer: videoUrl.origin,
|
|
16
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
const patterns = [
|
|
20
|
+
/file:\s*"([^"]+)"/,
|
|
21
|
+
/sources:\s*\[\s*{[^}]*file:\s*"([^"]+)"/,
|
|
22
|
+
/source\s*src="([^"]+\.m3u8[^"]*)"/,
|
|
23
|
+
];
|
|
24
|
+
let masterUrl = null;
|
|
25
|
+
for (const pattern of patterns) {
|
|
26
|
+
const match = data.match(pattern);
|
|
27
|
+
if (match && match[1]) {
|
|
28
|
+
masterUrl = match[1];
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!masterUrl) {
|
|
33
|
+
console.warn(`Vidmoly: Could not find video source in ${urlString}`);
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
const m3u8Content = await this.client.get(masterUrl, {
|
|
37
|
+
headers: {
|
|
38
|
+
Referer: urlString,
|
|
39
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
this.sources.push({
|
|
43
|
+
quality: 'auto',
|
|
44
|
+
url: masterUrl,
|
|
45
|
+
isM3U8: masterUrl.includes('.m3u8'),
|
|
46
|
+
});
|
|
47
|
+
if (m3u8Content.data.includes('EXTM3U')) {
|
|
48
|
+
const videoList = m3u8Content.data.split('#EXT-X-STREAM-INF:');
|
|
49
|
+
for (const video of videoList) {
|
|
50
|
+
if (!video.includes('m3u8'))
|
|
51
|
+
continue;
|
|
52
|
+
const lines = video.split('\n');
|
|
53
|
+
const url = (_a = lines[1]) === null || _a === void 0 ? void 0 : _a.trim();
|
|
54
|
+
if (!url)
|
|
55
|
+
continue;
|
|
56
|
+
const resolutionMatch = video.match(/RESOLUTION=(\d+)x(\d+)/);
|
|
57
|
+
const quality = resolutionMatch ? resolutionMatch[2] : 'unknown';
|
|
58
|
+
this.sources.push({
|
|
59
|
+
url,
|
|
60
|
+
quality,
|
|
61
|
+
isM3U8: url.includes('.m3u8'),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return this.sources;
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
console.error(`Vidmoly extraction error: ${err.message}`);
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.default = VidMoly;
|
|
75
|
+
//# sourceMappingURL=vidmoly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vidmoly.js","sourceRoot":"","sources":["../../src/extractors/vidmoly.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VideoExtractor, IVideo, ISubtitle } from '../models';
|
|
2
|
+
declare class Voe extends VideoExtractor {
|
|
3
|
+
protected serverName: string;
|
|
4
|
+
protected sources: IVideo[];
|
|
5
|
+
extract: (videoUrl: URL) => Promise<{
|
|
6
|
+
sources: IVideo[];
|
|
7
|
+
subtitles: ISubtitle[];
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export default Voe;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
class Voe extends models_1.VideoExtractor {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.serverName = 'VideoStr';
|
|
8
|
+
this.sources = [];
|
|
9
|
+
this.extract = async (videoUrl) => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
try {
|
|
12
|
+
const apiUrl = 'https://crawlr.cc/3F7A1C9D8?url=' + encodeURIComponent(videoUrl.href);
|
|
13
|
+
const { data } = await this.client.get(apiUrl);
|
|
14
|
+
if (!data.sources || data.sources.length === 0) {
|
|
15
|
+
throw new Error('No sources returned');
|
|
16
|
+
}
|
|
17
|
+
for (const src of data.sources) {
|
|
18
|
+
this.sources.push({
|
|
19
|
+
url: src.url,
|
|
20
|
+
quality: (_a = src.quality) !== null && _a !== void 0 ? _a : 'auto',
|
|
21
|
+
isM3U8: src.url.includes('.m3u8'),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const subtitles = (_c = (_b = data.tracks) === null || _b === void 0 ? void 0 : _b.map(t => {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
return ({
|
|
27
|
+
lang: (_a = t.label) !== null && _a !== void 0 ? _a : 'Unknown',
|
|
28
|
+
url: t.file,
|
|
29
|
+
kind: (_b = t.kind) !== null && _b !== void 0 ? _b : 'captions',
|
|
30
|
+
});
|
|
31
|
+
})) !== null && _c !== void 0 ? _c : [];
|
|
32
|
+
return {
|
|
33
|
+
sources: this.sources,
|
|
34
|
+
subtitles,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new Error(err.message);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.default = Voe;
|
|
44
|
+
//# sourceMappingURL=voe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voe.js","sourceRoot":"","sources":["../../src/extractors/voe.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAqB9D,MAAM,GAAI,SAAQ,uBAAc;IAAhC;;QACqB,eAAU,GAAG,UAAU,CAAC;QACxB,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAA0D,EAAE;;YACjG,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,kCAAkC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEtF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAa,MAAM,CAAC,CAAC;gBAE3D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,OAAO,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,MAAM;wBAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,SAAS,GACb,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBACrB,IAAI,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,SAAS;wBAC1B,GAAG,EAAE,CAAC,CAAC,IAAI;wBACX,IAAI,EAAE,MAAA,CAAC,CAAC,IAAI,mCAAI,UAAU;qBAC3B,CAAC,CAAA;iBAAA,CAAC,mCAAI,EAAE,CAAC;gBAEZ,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,kBAAe,GAAG,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ANIME, BOOKS, COMICS, LIGHT_NOVELS, MANGA, MOVIES, META, NEWS } from './providers';
|
|
2
|
+
import { PROVIDERS_LIST } from './utils/providers-list';
|
|
3
|
+
import { IProviderStats, ISearch, IAnimeEpisode, IAnimeInfo, IAnimeResult, IEpisodeServer, IVideo, LibgenBook, StreamingServers, MediaStatus, SubOrSub, IMangaResult, IMangaChapter, IMangaInfo, ILightNovelResult, ILightNovelInfo, ILightNovelChapter, ILightNovelChapterContent, GetComicsComics, ComicRes, IMangaChapterPage, TvType, IMovieEpisode, IMovieInfo, ISource, ISubtitle, IMovieResult, Intro, Genres, INewsFeed, Topics, INewsInfo, FuzzyDate, ITitle, MediaFormat, ProxyConfig } from './models';
|
|
4
|
+
export { ANIME, BOOKS, COMICS, MANGA, LIGHT_NOVELS, MOVIES, META, NEWS };
|
|
5
|
+
export { PROVIDERS_LIST };
|
|
6
|
+
export { Topics, Genres, SubOrSub, StreamingServers, MediaStatus, IProviderStats, IAnimeEpisode, IAnimeInfo, IAnimeResult, IEpisodeServer, IVideo, LibgenBook, IMangaResult, IMangaChapter, IMangaInfo, ILightNovelResult, ILightNovelInfo, ILightNovelChapter, ILightNovelChapterContent, GetComicsComics, ComicRes, ISearch, IMangaChapterPage, TvType, IMovieEpisode, IMovieInfo, ISource, ISubtitle, IMovieResult, Intro, INewsFeed, INewsInfo, FuzzyDate, ITitle, MediaFormat, ProxyConfig, };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MediaFormat = exports.TvType = exports.MediaStatus = exports.StreamingServers = exports.SubOrSub = exports.Genres = exports.Topics = exports.PROVIDERS_LIST = exports.NEWS = exports.META = exports.MOVIES = exports.LIGHT_NOVELS = exports.MANGA = exports.COMICS = exports.BOOKS = exports.ANIME = void 0;
|
|
4
|
+
const providers_1 = require("./providers");
|
|
5
|
+
Object.defineProperty(exports, "ANIME", { enumerable: true, get: function () { return providers_1.ANIME; } });
|
|
6
|
+
Object.defineProperty(exports, "BOOKS", { enumerable: true, get: function () { return providers_1.BOOKS; } });
|
|
7
|
+
Object.defineProperty(exports, "COMICS", { enumerable: true, get: function () { return providers_1.COMICS; } });
|
|
8
|
+
Object.defineProperty(exports, "LIGHT_NOVELS", { enumerable: true, get: function () { return providers_1.LIGHT_NOVELS; } });
|
|
9
|
+
Object.defineProperty(exports, "MANGA", { enumerable: true, get: function () { return providers_1.MANGA; } });
|
|
10
|
+
Object.defineProperty(exports, "MOVIES", { enumerable: true, get: function () { return providers_1.MOVIES; } });
|
|
11
|
+
Object.defineProperty(exports, "META", { enumerable: true, get: function () { return providers_1.META; } });
|
|
12
|
+
Object.defineProperty(exports, "NEWS", { enumerable: true, get: function () { return providers_1.NEWS; } });
|
|
13
|
+
const providers_list_1 = require("./utils/providers-list");
|
|
14
|
+
Object.defineProperty(exports, "PROVIDERS_LIST", { enumerable: true, get: function () { return providers_list_1.PROVIDERS_LIST; } });
|
|
15
|
+
const models_1 = require("./models");
|
|
16
|
+
Object.defineProperty(exports, "StreamingServers", { enumerable: true, get: function () { return models_1.StreamingServers; } });
|
|
17
|
+
Object.defineProperty(exports, "MediaStatus", { enumerable: true, get: function () { return models_1.MediaStatus; } });
|
|
18
|
+
Object.defineProperty(exports, "SubOrSub", { enumerable: true, get: function () { return models_1.SubOrSub; } });
|
|
19
|
+
Object.defineProperty(exports, "TvType", { enumerable: true, get: function () { return models_1.TvType; } });
|
|
20
|
+
Object.defineProperty(exports, "Genres", { enumerable: true, get: function () { return models_1.Genres; } });
|
|
21
|
+
Object.defineProperty(exports, "Topics", { enumerable: true, get: function () { return models_1.Topics; } });
|
|
22
|
+
Object.defineProperty(exports, "MediaFormat", { enumerable: true, get: function () { return models_1.MediaFormat; } });
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA4F;AAyCnF,sFAzCA,iBAAK,OAyCA;AAAE,sFAzCA,iBAAK,OAyCA;AAAE,uFAzCA,kBAAM,OAyCA;AAAS,6FAzCP,wBAAY,OAyCO;AAAnB,sFAzCc,iBAAK,OAyCd;AAAgB,uFAzCA,kBAAM,OAyCA;AAAE,qFAzCA,gBAAI,OAyCA;AAAE,qFAzCA,gBAAI,OAyCA;AAxCtE,2DAAwD;AAyC/C,+FAzCA,+BAAc,OAyCA;AAxCvB,qCAqCkB;AAQhB,iGApCA,yBAAgB,OAoCA;AAChB,4FApCA,oBAAW,OAoCA;AAFX,yFAjCA,iBAAQ,OAiCA;AAqBR,uFA3CA,eAAM,OA2CA;AAtBN,uFAdA,eAAM,OAcA;AADN,uFAXA,eAAM,OAWA;AAkCN,4FAzCA,oBAAW,OAyCA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseParser, IAnimeInfo, ISource, IEpisodeServer } from '.';
|
|
2
|
+
declare abstract class AnimeParser extends BaseParser {
|
|
3
|
+
/**
|
|
4
|
+
* if the provider has dub and it's avialable seperatly from sub set this to `true`
|
|
5
|
+
*/
|
|
6
|
+
protected readonly isDubAvailableSeparately: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* takes anime id
|
|
9
|
+
*
|
|
10
|
+
* returns anime info (including episodes)
|
|
11
|
+
*/
|
|
12
|
+
abstract fetchAnimeInfo(animeId: string, ...args: any): Promise<IAnimeInfo>;
|
|
13
|
+
/**
|
|
14
|
+
* takes episode id
|
|
15
|
+
*
|
|
16
|
+
* returns episode sources (video links)
|
|
17
|
+
*/
|
|
18
|
+
abstract fetchEpisodeSources(episodeId: string, ...args: any): Promise<ISource>;
|
|
19
|
+
/**
|
|
20
|
+
* takes episode id
|
|
21
|
+
*
|
|
22
|
+
* returns episode servers (video links) available
|
|
23
|
+
*/
|
|
24
|
+
abstract fetchEpisodeServers(episodeId: string, ...args: any): Promise<IEpisodeServer[]>;
|
|
25
|
+
}
|
|
26
|
+
export default AnimeParser;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const _1 = require(".");
|
|
4
|
+
class AnimeParser extends _1.BaseParser {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
/**
|
|
8
|
+
* if the provider has dub and it's avialable seperatly from sub set this to `true`
|
|
9
|
+
*/
|
|
10
|
+
this.isDubAvailableSeparately = false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.default = AnimeParser;
|
|
14
|
+
//# sourceMappingURL=anime-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anime-parser.js","sourceRoot":"","sources":["../../src/models/anime-parser.ts"],"names":[],"mappings":";;AAAA,wBAAiF;AAGjF,MAAe,WAAY,SAAQ,aAAU;IAA7C;;QACE;;WAEG;QACgB,6BAAwB,GAAY,KAAK,CAAC;IAqB/D,CAAC;CAAA;AAED,kBAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseProvider } from '.';
|
|
2
|
+
declare abstract class BaseParser extends BaseProvider {
|
|
3
|
+
/**
|
|
4
|
+
* Search for books/anime/manga/etc using the given query
|
|
5
|
+
*
|
|
6
|
+
* returns a promise resolving to a data object
|
|
7
|
+
*/
|
|
8
|
+
abstract search(query: string, ...args: any[]): Promise<unknown>;
|
|
9
|
+
}
|
|
10
|
+
export default BaseParser;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-parser.js","sourceRoot":"","sources":["../../src/models/base-parser.ts"],"names":[],"mappings":";;AAEA,wBAA8C;AAE9C,MAAe,UAAW,SAAQ,eAAY;CAO7C;AAED,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { IProviderStats } from '.';
|
|
2
|
+
import Proxy from './proxy';
|
|
3
|
+
declare abstract class BaseProvider extends Proxy {
|
|
4
|
+
/**
|
|
5
|
+
* Name of the provider
|
|
6
|
+
*/
|
|
7
|
+
abstract readonly name: string;
|
|
8
|
+
/**
|
|
9
|
+
* The main URL of the provider
|
|
10
|
+
*/
|
|
11
|
+
protected abstract readonly baseUrl: string;
|
|
12
|
+
/**
|
|
13
|
+
* Most providers are english based, but if the provider is not english based override this value.
|
|
14
|
+
* must be in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format
|
|
15
|
+
*/
|
|
16
|
+
protected readonly languages: string[] | string;
|
|
17
|
+
/**
|
|
18
|
+
* override as `true` if the provider **only** supports NSFW content
|
|
19
|
+
*/
|
|
20
|
+
readonly isNSFW: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Logo of the provider (used in the website) or `undefined` if not available. ***128x128px is preferred***\
|
|
23
|
+
* Must be a valid URL (not a data URL)
|
|
24
|
+
*/
|
|
25
|
+
protected readonly logo: string;
|
|
26
|
+
/**
|
|
27
|
+
* The class's path is determined by the provider's directory structure for example:\
|
|
28
|
+
* MangaDex class path is `MANGA.MangaDex`. **(case sensitive)**
|
|
29
|
+
*/
|
|
30
|
+
protected abstract readonly classPath: string;
|
|
31
|
+
/**
|
|
32
|
+
* override as `false` if the provider is **down** or **not working**
|
|
33
|
+
*/
|
|
34
|
+
readonly isWorking: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* returns provider stats
|
|
37
|
+
*/
|
|
38
|
+
get toString(): IProviderStats;
|
|
39
|
+
}
|
|
40
|
+
export default BaseProvider;
|
|
@@ -0,0 +1,45 @@
|
|
|
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 proxy_1 = __importDefault(require("./proxy"));
|
|
7
|
+
class BaseProvider extends proxy_1.default {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
/**
|
|
11
|
+
* Most providers are english based, but if the provider is not english based override this value.
|
|
12
|
+
* must be in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format
|
|
13
|
+
*/
|
|
14
|
+
this.languages = 'en';
|
|
15
|
+
/**
|
|
16
|
+
* override as `true` if the provider **only** supports NSFW content
|
|
17
|
+
*/
|
|
18
|
+
this.isNSFW = false;
|
|
19
|
+
/**
|
|
20
|
+
* Logo of the provider (used in the website) or `undefined` if not available. ***128x128px is preferred***\
|
|
21
|
+
* Must be a valid URL (not a data URL)
|
|
22
|
+
*/
|
|
23
|
+
this.logo = 'https://png.pngtree.com/png-vector/20210221/ourmid/pngtree-error-404-not-found-neon-effect-png-image_2928214.jpg';
|
|
24
|
+
/**
|
|
25
|
+
* override as `false` if the provider is **down** or **not working**
|
|
26
|
+
*/
|
|
27
|
+
this.isWorking = true;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* returns provider stats
|
|
31
|
+
*/
|
|
32
|
+
get toString() {
|
|
33
|
+
return {
|
|
34
|
+
name: this.name,
|
|
35
|
+
baseUrl: this.baseUrl,
|
|
36
|
+
lang: this.languages,
|
|
37
|
+
isNSFW: this.isNSFW,
|
|
38
|
+
logo: this.logo,
|
|
39
|
+
classPath: this.classPath,
|
|
40
|
+
isWorking: this.isWorking,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = BaseProvider;
|
|
45
|
+
//# sourceMappingURL=base-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/models/base-provider.ts"],"names":[],"mappings":";;;;;AACA,oDAA4B;AAE5B,MAAe,YAAa,SAAQ,eAAK;IAAzC;;QAWE;;;WAGG;QACgB,cAAS,GAAsB,IAAI,CAAC;QAEvD;;WAEG;QACM,WAAM,GAAY,KAAK,CAAC;QAEjC;;;WAGG;QACgB,SAAI,GACrB,kHAAkH,CAAC;QAQrH;;WAEG;QACM,cAAS,GAAY,IAAI,CAAC;IAgBrC,CAAC;IAdC;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface Book {
|
|
2
|
+
title: string;
|
|
3
|
+
authors: string[];
|
|
4
|
+
publisher: string;
|
|
5
|
+
year: string;
|
|
6
|
+
edition: string;
|
|
7
|
+
volume: string;
|
|
8
|
+
series: string;
|
|
9
|
+
isbn: string[];
|
|
10
|
+
image: string;
|
|
11
|
+
description: string;
|
|
12
|
+
link: string;
|
|
13
|
+
}
|
|
14
|
+
export interface Hashes {
|
|
15
|
+
AICH: string;
|
|
16
|
+
CRC32: string;
|
|
17
|
+
eDonkey: string;
|
|
18
|
+
MD5: string;
|
|
19
|
+
SHA1: string;
|
|
20
|
+
SHA256: string[];
|
|
21
|
+
TTH: string;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-types.js","sourceRoot":"","sources":["../../src/models/base-types.ts"],"names":[],"mappings":""}
|