UNPKG

consumet.custom

Version:

Nodejs library that provides high-level APIs for obtaining information on various entertainment media such as books, movies, comic books, anime, manga, and so on.

73 lines 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const rabbit_1 = require("./rabbit"); const models_1 = require("../models"); const utils_1 = require("../utils"); class VidCloud extends models_1.VideoExtractor { constructor() { super(...arguments); this.serverName = 'VidCloud'; this.sources = []; this.extract = async (videoUrl, _) => { var _a; const result = { sources: [], subtitles: [], }; try { const id = (_a = videoUrl.href.split('/').pop()) === null || _a === void 0 ? void 0 : _a.split('?')[0]; const options = { headers: { 'X-Requested-With': 'XMLHttpRequest', Referer: videoUrl.href, 'User-Agent': utils_1.USER_AGENT, }, }; const res = await (0, rabbit_1.main)(id); const sources = res.sources; this.sources = sources.map((s) => ({ url: s.file, isM3U8: s.file.includes('.m3u8') || s.file.endsWith('m3u8'), })); result.sources.push(...this.sources); result.sources = []; this.sources = []; for (const source of sources) { const { data } = await this.client.get(source.file, options); const urls = data .split('\n') .filter((line) => line.includes('.m3u8') || line.endsWith('m3u8')); const qualities = data.split('\n').filter((line) => line.includes('RESOLUTION=')); const TdArray = qualities.map((s, i) => { const f1 = s.split('x')[1]; const f2 = urls[i]; return [f1, f2]; }); for (const [f1, f2] of TdArray) { this.sources.push({ url: f2, quality: f1, isM3U8: f2.includes('.m3u8') || f2.endsWith('m3u8'), }); } result.sources.push(...this.sources); } result.sources.push({ url: sources[0].file, isM3U8: sources[0].file.includes('.m3u8') || sources[0].file.endsWith('m3u8'), quality: 'auto', }); result.subtitles = res.tracks.map((s) => ({ url: s.file, lang: s.label ? s.label : 'Default (maybe)', })); return result; } catch (err) { throw err; } }; } } exports.default = VidCloud; //# sourceMappingURL=vidcloud.js.map