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,31 @@
|
|
|
1
|
+
import { ISource, IVideo, VideoExtractor } from '../models';
|
|
2
|
+
import { AxiosAdapter } from 'axios';
|
|
3
|
+
import { ProxyConfig } from '../models/types';
|
|
4
|
+
export declare class MegaUp extends VideoExtractor {
|
|
5
|
+
protected proxyConfig?: ProxyConfig | undefined;
|
|
6
|
+
protected adapter?: AxiosAdapter | undefined;
|
|
7
|
+
protected serverName: string;
|
|
8
|
+
protected sources: IVideo[];
|
|
9
|
+
protected apiBase: string;
|
|
10
|
+
constructor(proxyConfig?: ProxyConfig | undefined, adapter?: AxiosAdapter | undefined);
|
|
11
|
+
GenerateToken: (n: string) => Promise<string>;
|
|
12
|
+
DecodeIframeData: (n: string) => Promise<{
|
|
13
|
+
url: string;
|
|
14
|
+
skip: {
|
|
15
|
+
intro: [number, number];
|
|
16
|
+
outro: [number, number];
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
Decode: (n: string) => Promise<{
|
|
20
|
+
sources: {
|
|
21
|
+
file: string;
|
|
22
|
+
}[];
|
|
23
|
+
tracks: {
|
|
24
|
+
kind: string;
|
|
25
|
+
file: string;
|
|
26
|
+
label: string;
|
|
27
|
+
}[];
|
|
28
|
+
download: string;
|
|
29
|
+
}>;
|
|
30
|
+
extract: (videoUrl: URL) => Promise<ISource>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
exports.MegaUp = void 0;
|
|
7
|
+
const models_1 = require("../models");
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
class MegaUp extends models_1.VideoExtractor {
|
|
10
|
+
constructor(proxyConfig, adapter) {
|
|
11
|
+
super(proxyConfig, adapter);
|
|
12
|
+
this.proxyConfig = proxyConfig;
|
|
13
|
+
this.adapter = adapter;
|
|
14
|
+
this.serverName = 'MegaUp';
|
|
15
|
+
this.sources = [];
|
|
16
|
+
this.apiBase = 'https://enc-dec.app/api';
|
|
17
|
+
this.GenerateToken = async (n) => {
|
|
18
|
+
try {
|
|
19
|
+
const res = await axios_1.default.get(`${this.apiBase}/enc-kai?text=${encodeURIComponent(n)}`);
|
|
20
|
+
return res.data.result;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new Error(error.message);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
this.DecodeIframeData = async (n) => {
|
|
27
|
+
try {
|
|
28
|
+
const res = await axios_1.default.post(`${this.apiBase}/dec-kai`, { text: n });
|
|
29
|
+
return res.data.result;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
throw new Error(error.message);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this.Decode = async (n) => {
|
|
36
|
+
try {
|
|
37
|
+
const res = await axios_1.default.post(`${this.apiBase}/dec-mega`, {
|
|
38
|
+
text: n,
|
|
39
|
+
agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36',
|
|
40
|
+
}, { headers: { 'Content-Type': 'application/json' } });
|
|
41
|
+
return res.data.result;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.log(error);
|
|
45
|
+
throw new Error(error.message);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
this.extract = async (videoUrl) => {
|
|
49
|
+
try {
|
|
50
|
+
const url = videoUrl.href.replace('/e/', '/media/');
|
|
51
|
+
const res = await axios_1.default.get(url, {
|
|
52
|
+
headers: {
|
|
53
|
+
Connection: 'keep-alive',
|
|
54
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36',
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const decrypted = await this.Decode(res.data.result);
|
|
58
|
+
const data = {
|
|
59
|
+
sources: decrypted.sources.map((s) => ({
|
|
60
|
+
url: s.file,
|
|
61
|
+
isM3U8: s.file.includes('.m3u8') || s.file.endsWith('m3u8'),
|
|
62
|
+
})),
|
|
63
|
+
subtitles: decrypted.tracks.map(t => ({
|
|
64
|
+
kind: t.kind,
|
|
65
|
+
url: t.file,
|
|
66
|
+
lang: t.label,
|
|
67
|
+
})),
|
|
68
|
+
download: decrypted.download,
|
|
69
|
+
};
|
|
70
|
+
return data;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
throw new Error(error.message);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.MegaUp = MegaUp;
|
|
79
|
+
//# sourceMappingURL=megaup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"megaup.js","sourceRoot":"","sources":["../../src/extractors/megaup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
const utils_1 = require("../utils/utils");
|
|
5
|
+
class MixDrop extends models_1.VideoExtractor {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.serverName = 'MixDrop';
|
|
9
|
+
this.sources = [];
|
|
10
|
+
this.extract = async (videoUrl) => {
|
|
11
|
+
try {
|
|
12
|
+
const { data } = await this.client.get(videoUrl.href);
|
|
13
|
+
const formated = (0, utils_1.safeUnpack)(/(eval)(\(f.*?)(\n<\/script>)/s.exec(data)[2]);
|
|
14
|
+
const [poster, source] = formated
|
|
15
|
+
.match(/poster="([^"]+)"|wurl="([^"]+)"/g)
|
|
16
|
+
.map((x) => x.split(`="`)[1].replace(/"/g, ''))
|
|
17
|
+
.map((x) => (x.startsWith('http') ? x : `https:${x}`));
|
|
18
|
+
this.sources.push({
|
|
19
|
+
url: source,
|
|
20
|
+
isM3U8: source.includes('.m3u8'),
|
|
21
|
+
poster: poster,
|
|
22
|
+
});
|
|
23
|
+
return this.sources;
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
throw new Error(err.message);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = MixDrop;
|
|
32
|
+
//# sourceMappingURL=mixdrop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mixdrop.js","sourceRoot":"","sources":["../../src/extractors/mixdrop.ts"],"names":[],"mappings":";;AAAA,sCAAmD;AACnD,0CAA4C;AAE5C,MAAM,OAAQ,SAAQ,uBAAc;IAApC;;QACqB,eAAU,GAAG,SAAS,CAAC;QACvB,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAAqB,EAAE;YAC5D,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEtD,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ;qBAC9B,KAAK,CAAC,kCAAkC,CAAE;qBAC1C,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;qBACtD,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEjE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,MAAM;oBACX,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAChC,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AACD,kBAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IVideo } from '../models';
|
|
2
|
+
import VideoExtractor from '../models/video-extractor';
|
|
3
|
+
declare class MoveArnPre extends VideoExtractor {
|
|
4
|
+
protected serverName: string;
|
|
5
|
+
protected sources: IVideo[];
|
|
6
|
+
private unpack;
|
|
7
|
+
extract: (videoUrl: URL) => Promise<IVideo[]>;
|
|
8
|
+
}
|
|
9
|
+
export default MoveArnPre;
|
|
@@ -0,0 +1,154 @@
|
|
|
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 video_extractor_1 = __importDefault(require("../models/video-extractor"));
|
|
7
|
+
class MoveArnPre extends video_extractor_1.default {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.serverName = 'movearnpre';
|
|
11
|
+
this.sources = [];
|
|
12
|
+
this.extract = async (videoUrl) => {
|
|
13
|
+
var _a;
|
|
14
|
+
try {
|
|
15
|
+
const { data } = await this.client.get(videoUrl.href, {
|
|
16
|
+
headers: {
|
|
17
|
+
Referer: videoUrl.origin,
|
|
18
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
let masterUrl = '';
|
|
22
|
+
const packedMatch = data.match(/eval\(function\(p,a,c,k,e,d\)[\s\S]*?}\('(.+)',(\d+),(\d+),'(.+?)'\.split\('\|'\)\)\)/);
|
|
23
|
+
if (packedMatch) {
|
|
24
|
+
const unpacked = this.unpack(packedMatch[0]);
|
|
25
|
+
if (unpacked) {
|
|
26
|
+
const hlsMatches = {};
|
|
27
|
+
const hlsPattern = /["']hls(\d+)["']:\s*["']([^"']+)["']/g;
|
|
28
|
+
let match;
|
|
29
|
+
while ((match = hlsPattern.exec(unpacked)) !== null) {
|
|
30
|
+
const url = match[2];
|
|
31
|
+
if (!url.endsWith('.txt') && (url.includes('.m3u8') || url.includes('/stream/'))) {
|
|
32
|
+
hlsMatches[`hls${match[1]}`] = url;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const priority = ['hls4', 'hls2', 'hls3'];
|
|
36
|
+
for (const key of priority) {
|
|
37
|
+
if (hlsMatches[key]) {
|
|
38
|
+
masterUrl = hlsMatches[key];
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (!masterUrl) {
|
|
43
|
+
const patterns = [
|
|
44
|
+
/file:\s*["']([^"']*master\.m3u8[^"']*)["']/,
|
|
45
|
+
/["']([^"']*\/stream\/[^"']*master\.m3u8[^"']*)["']/,
|
|
46
|
+
];
|
|
47
|
+
for (const pattern of patterns) {
|
|
48
|
+
const match = unpacked.match(pattern);
|
|
49
|
+
if (match === null || match === void 0 ? void 0 : match[1]) {
|
|
50
|
+
masterUrl = match[1];
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!masterUrl) {
|
|
58
|
+
const patterns = [
|
|
59
|
+
/sources:\s*\[\s*\{\s*file:\s*["']([^"']+)["']/,
|
|
60
|
+
/file:\s*["']([^"']*master\.m3u8[^"']*)["']/,
|
|
61
|
+
/["']([^"']*\/stream\/[^"']*master\.m3u8[^"']*)["']/,
|
|
62
|
+
];
|
|
63
|
+
for (const pattern of patterns) {
|
|
64
|
+
const match = data.match(pattern);
|
|
65
|
+
if (match === null || match === void 0 ? void 0 : match[1]) {
|
|
66
|
+
masterUrl = match[1];
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (!masterUrl)
|
|
72
|
+
return [];
|
|
73
|
+
if (masterUrl.startsWith('/')) {
|
|
74
|
+
masterUrl = `${videoUrl.origin}${masterUrl}`;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const { data: m3u8Data } = await this.client.get(masterUrl, {
|
|
78
|
+
headers: {
|
|
79
|
+
Referer: videoUrl.href,
|
|
80
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
|
|
81
|
+
},
|
|
82
|
+
timeout: 10000,
|
|
83
|
+
});
|
|
84
|
+
this.sources.push({
|
|
85
|
+
quality: 'auto',
|
|
86
|
+
url: masterUrl,
|
|
87
|
+
isM3U8: true,
|
|
88
|
+
});
|
|
89
|
+
if (m3u8Data.includes('#EXT-X-STREAM-INF')) {
|
|
90
|
+
const variants = m3u8Data.split('#EXT-X-STREAM-INF:');
|
|
91
|
+
for (const variant of variants) {
|
|
92
|
+
if (!variant.includes('m3u8'))
|
|
93
|
+
continue;
|
|
94
|
+
const lines = variant.split('\n');
|
|
95
|
+
const variantUrl = (_a = lines[1]) === null || _a === void 0 ? void 0 : _a.trim();
|
|
96
|
+
if (!variantUrl)
|
|
97
|
+
continue;
|
|
98
|
+
const resMatch = variant.match(/RESOLUTION=\d+x(\d+)/);
|
|
99
|
+
const quality = resMatch ? `${resMatch[1]}p` : 'unknown';
|
|
100
|
+
let fullUrl = variantUrl;
|
|
101
|
+
if (!variantUrl.startsWith('http')) {
|
|
102
|
+
const baseUrl = masterUrl.substring(0, masterUrl.lastIndexOf('/') + 1);
|
|
103
|
+
fullUrl = baseUrl + variantUrl;
|
|
104
|
+
}
|
|
105
|
+
this.sources.push({
|
|
106
|
+
url: fullUrl,
|
|
107
|
+
quality,
|
|
108
|
+
isM3U8: true,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (_b) {
|
|
114
|
+
if (this.sources.length === 0) {
|
|
115
|
+
this.sources.push({
|
|
116
|
+
quality: 'auto',
|
|
117
|
+
url: masterUrl,
|
|
118
|
+
isM3U8: true,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return this.sources;
|
|
123
|
+
}
|
|
124
|
+
catch (_c) {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
unpack(packed) {
|
|
130
|
+
try {
|
|
131
|
+
const match = packed.match(/}\('(.+)',(\d+),(\d+),'(.+)'\.split\('\|'\)/);
|
|
132
|
+
if (!match)
|
|
133
|
+
return '';
|
|
134
|
+
const payload = match[1].replace(/\\'/g, "'");
|
|
135
|
+
const radix = parseInt(match[2]);
|
|
136
|
+
const count = parseInt(match[3]);
|
|
137
|
+
const symbols = match[4].split('|');
|
|
138
|
+
let unpacked = payload;
|
|
139
|
+
for (let i = count - 1; i >= 0; i--) {
|
|
140
|
+
if (symbols[i]) {
|
|
141
|
+
const token = i.toString(radix);
|
|
142
|
+
const regex = new RegExp('\\b' + token + '\\b', 'g');
|
|
143
|
+
unpacked = unpacked.replace(regex, symbols[i]);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return unpacked;
|
|
147
|
+
}
|
|
148
|
+
catch (_a) {
|
|
149
|
+
return '';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.default = MoveArnPre;
|
|
154
|
+
//# sourceMappingURL=movearnpre.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"movearnpre.js","sourceRoot":"","sources":["../../src/extractors/movearnpre.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IVideo } from '../models';
|
|
2
|
+
import VideoExtractor from '../models/video-extractor';
|
|
3
|
+
declare class Sendvid extends VideoExtractor {
|
|
4
|
+
protected serverName: string;
|
|
5
|
+
protected sources: IVideo[];
|
|
6
|
+
extract: (videoUrl: URL) => Promise<IVideo[]>;
|
|
7
|
+
}
|
|
8
|
+
export default Sendvid;
|
|
@@ -0,0 +1,76 @@
|
|
|
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 video_extractor_1 = __importDefault(require("../models/video-extractor"));
|
|
7
|
+
class Sendvid extends video_extractor_1.default {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.serverName = 'sendvid';
|
|
11
|
+
this.sources = [];
|
|
12
|
+
this.extract = async (videoUrl) => {
|
|
13
|
+
try {
|
|
14
|
+
const { data } = await this.client.get(videoUrl.href, {
|
|
15
|
+
headers: {
|
|
16
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
17
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
18
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:145.0) Gecko/20100101 Firefox/145.0',
|
|
19
|
+
Referer: 'https://sendvid.com/',
|
|
20
|
+
},
|
|
21
|
+
validateStatus: status => {
|
|
22
|
+
return (status >= 200 && status < 300) || status === 404;
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
let extractedVideoUrl = null;
|
|
26
|
+
let poster = undefined;
|
|
27
|
+
const sourceTagMatch = data.match(/<source\s+src="([^"]+)"\s+type="video\/mp4"/);
|
|
28
|
+
if (sourceTagMatch && sourceTagMatch[1]) {
|
|
29
|
+
extractedVideoUrl = sourceTagMatch[1];
|
|
30
|
+
}
|
|
31
|
+
if (!extractedVideoUrl) {
|
|
32
|
+
const videoSourceVarMatch = data.match(/var\s+video_source\s*=\s*"([^"]+)"/);
|
|
33
|
+
if (videoSourceVarMatch && videoSourceVarMatch[1]) {
|
|
34
|
+
extractedVideoUrl = videoSourceVarMatch[1];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!extractedVideoUrl) {
|
|
38
|
+
const ogVideoMatch = data.match(/<meta\s+property="og:video"\s+content="([^"]+)"/);
|
|
39
|
+
if (ogVideoMatch && ogVideoMatch[1]) {
|
|
40
|
+
extractedVideoUrl = ogVideoMatch[1];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (!extractedVideoUrl) {
|
|
44
|
+
console.warn(`Sendvid video not found or taken down: ${videoUrl.href}`);
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
const posterMatch = data.match(/poster="([^"]+)"/);
|
|
48
|
+
if (posterMatch && posterMatch[1]) {
|
|
49
|
+
poster = posterMatch[1];
|
|
50
|
+
}
|
|
51
|
+
this.sources.push({
|
|
52
|
+
url: extractedVideoUrl,
|
|
53
|
+
quality: 'default',
|
|
54
|
+
isM3U8: false,
|
|
55
|
+
...(poster && { poster }),
|
|
56
|
+
});
|
|
57
|
+
return this.sources;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
if (err &&
|
|
61
|
+
typeof err === 'object' &&
|
|
62
|
+
'response' in err &&
|
|
63
|
+
err.response &&
|
|
64
|
+
typeof err.response === 'object' &&
|
|
65
|
+
'status' in err.response &&
|
|
66
|
+
err.response.status === 404) {
|
|
67
|
+
console.warn(`Sendvid video not found (404): ${videoUrl.href}`);
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Sendvid extraction failed: ${err.message}`);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.default = Sendvid;
|
|
76
|
+
//# sourceMappingURL=sendvid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendvid.js","sourceRoot":"","sources":["../../src/extractors/sendvid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IVideo } from '../models';
|
|
2
|
+
import VideoExtractor from '../models/video-extractor';
|
|
3
|
+
declare class Sibnet extends VideoExtractor {
|
|
4
|
+
protected serverName: string;
|
|
5
|
+
protected sources: IVideo[];
|
|
6
|
+
extract: (videoUrl: URL) => Promise<IVideo[]>;
|
|
7
|
+
}
|
|
8
|
+
export default Sibnet;
|
|
@@ -0,0 +1,44 @@
|
|
|
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 video_extractor_1 = __importDefault(require("../models/video-extractor"));
|
|
7
|
+
class Sibnet extends video_extractor_1.default {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.serverName = 'sibnet';
|
|
11
|
+
this.sources = [];
|
|
12
|
+
this.extract = async (videoUrl) => {
|
|
13
|
+
try {
|
|
14
|
+
const { data } = await this.client.get(videoUrl.href, {
|
|
15
|
+
headers: {
|
|
16
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
17
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
18
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:145.0) Gecko/20100101 Firefox/145.0',
|
|
19
|
+
Referer: 'https://video.sibnet.ru/',
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
const srcMatch = data.match(/player\.src\(\[\{src:\s*"([^"]+)",\s*type:\s*"([^"]+)"/);
|
|
23
|
+
if (!srcMatch) {
|
|
24
|
+
throw new Error('Could not find video source in page');
|
|
25
|
+
}
|
|
26
|
+
const videoPath = srcMatch[1];
|
|
27
|
+
const videoType = srcMatch[2];
|
|
28
|
+
const fullUrl = videoPath.startsWith('http') ? videoPath : `https://video.sibnet.ru${videoPath}`;
|
|
29
|
+
this.sources.push({
|
|
30
|
+
url: fullUrl,
|
|
31
|
+
quality: 'default',
|
|
32
|
+
isM3U8: videoType.includes('m3u8') || fullUrl.includes('.m3u8'),
|
|
33
|
+
referer: videoUrl.href,
|
|
34
|
+
});
|
|
35
|
+
return this.sources;
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new Error(`Sibnet extraction failed: ${err.message}`);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.default = Sibnet;
|
|
44
|
+
//# sourceMappingURL=sibnet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sibnet.js","sourceRoot":"","sources":["../../src/extractors/sibnet.ts"],"names":[],"mappings":";;;;;AACA,gFAAuD;AAEvD,MAAM,MAAO,SAAQ,yBAAc;IAAnC;;QACqB,eAAU,GAAG,QAAQ,CAAC;QACtB,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAAqB,EAAE;YAC5D,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;oBACpD,OAAO,EAAE;wBACP,MAAM,EAAE,iEAAiE;wBACzE,iBAAiB,EAAE,gBAAgB;wBACnC,YAAY,EAAE,kFAAkF;wBAChG,OAAO,EAAE,0BAA0B;qBACpC;iBACF,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBAEtF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,CAAC;gBAED,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE9B,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,SAAS,EAAE,CAAC;gBAEjG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,OAAO;oBACZ,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC/D,OAAO,EAAE,QAAQ,CAAC,IAAI;iBACvB,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VideoExtractor, IVideo } from '../models';
|
|
2
|
+
declare class StreamSB extends VideoExtractor {
|
|
3
|
+
protected serverName: string;
|
|
4
|
+
protected sources: IVideo[];
|
|
5
|
+
private readonly host;
|
|
6
|
+
private readonly host2;
|
|
7
|
+
private PAYLOAD;
|
|
8
|
+
extract: (videoUrl: URL, isAlt?: boolean) => Promise<IVideo[]>;
|
|
9
|
+
private addSources;
|
|
10
|
+
}
|
|
11
|
+
export default StreamSB;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
class StreamSB extends models_1.VideoExtractor {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.serverName = 'streamsb';
|
|
9
|
+
this.sources = [];
|
|
10
|
+
this.host = 'https://streamsss.net/sources50';
|
|
11
|
+
this.host2 = 'https://watchsb.com/sources50';
|
|
12
|
+
this.PAYLOAD = (hex) => `566d337678566f743674494a7c7c${hex}7c7c346b6767586d6934774855537c7c73747265616d7362/6565417268755339773461447c7c346133383438333436313335376136323337373433383634376337633465366534393338373136643732373736343735373237613763376334363733353737303533366236333463353333363534366137633763373337343732363536313664373336327c7c6b586c3163614468645a47617c7c73747265616d7362`;
|
|
13
|
+
this.extract = async (videoUrl, isAlt = false) => {
|
|
14
|
+
let headers = {
|
|
15
|
+
watchsb: 'sbstream',
|
|
16
|
+
'User-Agent': utils_1.USER_AGENT,
|
|
17
|
+
Referer: videoUrl.href,
|
|
18
|
+
};
|
|
19
|
+
let id = videoUrl.href.split('/e/').pop();
|
|
20
|
+
if (id === null || id === void 0 ? void 0 : id.includes('html'))
|
|
21
|
+
id = id.split('.html')[0];
|
|
22
|
+
const bytes = new TextEncoder().encode(id);
|
|
23
|
+
const res = await this.client
|
|
24
|
+
.get(`${isAlt ? this.host2 : this.host}/${this.PAYLOAD(Buffer.from(bytes).toString('hex'))}`, {
|
|
25
|
+
headers,
|
|
26
|
+
})
|
|
27
|
+
.catch(() => null);
|
|
28
|
+
if (!(res === null || res === void 0 ? void 0 : res.data.stream_data))
|
|
29
|
+
throw new Error('No source found. Try a different server.');
|
|
30
|
+
headers = {
|
|
31
|
+
'User-Agent': utils_1.USER_AGENT,
|
|
32
|
+
Referer: videoUrl.href.split('e/')[0],
|
|
33
|
+
};
|
|
34
|
+
const m3u8Urls = await this.client.get(res.data.stream_data.file, {
|
|
35
|
+
headers,
|
|
36
|
+
});
|
|
37
|
+
const videoList = m3u8Urls.data.split('#EXT-X-STREAM-INF:');
|
|
38
|
+
for (const video of videoList !== null && videoList !== void 0 ? videoList : []) {
|
|
39
|
+
if (!video.includes('m3u8'))
|
|
40
|
+
continue;
|
|
41
|
+
const url = video.split('\n')[1];
|
|
42
|
+
const quality = video.split('RESOLUTION=')[1].split(',')[0].split('x')[1];
|
|
43
|
+
this.sources.push({
|
|
44
|
+
url: url,
|
|
45
|
+
quality: `${quality}p`,
|
|
46
|
+
isM3U8: true,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
this.sources.push({
|
|
50
|
+
quality: 'auto',
|
|
51
|
+
url: res.data.stream_data.file,
|
|
52
|
+
isM3U8: res.data.stream_data.file.includes('.m3u8'),
|
|
53
|
+
});
|
|
54
|
+
return this.sources;
|
|
55
|
+
};
|
|
56
|
+
this.addSources = (source) => {
|
|
57
|
+
this.sources.push({
|
|
58
|
+
url: source.file,
|
|
59
|
+
isM3U8: source.file.includes('.m3u8'),
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.default = StreamSB;
|
|
65
|
+
//# sourceMappingURL=streamsb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamsb.js","sourceRoot":"","sources":["../../src/extractors/streamsb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../models");
|
|
4
|
+
class StreamTape extends models_1.VideoExtractor {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.serverName = 'StreamTape';
|
|
8
|
+
this.sources = [];
|
|
9
|
+
this.extract = async (videoUrl) => {
|
|
10
|
+
try {
|
|
11
|
+
const apiUrl = 'https://crawlr.cc/F4A2D9B6C?url=' + encodeURIComponent(videoUrl.href);
|
|
12
|
+
const { data } = await this.client.get(apiUrl);
|
|
13
|
+
if (!data.sources || data.sources.length === 0) {
|
|
14
|
+
throw new Error('No sources returned');
|
|
15
|
+
}
|
|
16
|
+
for (const src of data.sources) {
|
|
17
|
+
this.sources.push({
|
|
18
|
+
url: src.url,
|
|
19
|
+
quality: src.quality,
|
|
20
|
+
isM3U8: src.url.includes('.m3u8'),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return this.sources;
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
throw new Error(err.message);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = StreamTape;
|
|
32
|
+
//# sourceMappingURL=streamtape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamtape.js","sourceRoot":"","sources":["../../src/extractors/streamtape.ts"],"names":[],"mappings":";;AAAA,sCAAmD;AAiBnD,MAAM,UAAW,SAAQ,uBAAc;IAAvC;;QACqB,eAAU,GAAG,YAAY,CAAC;QAC1B,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAAqB,EAAE;YAC5D,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,CAAgB,MAAM,CAAC,CAAC;gBAE9D,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,GAAG,CAAC,OAAO;wBACpB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,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 StreamWish 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 StreamWish;
|