import axios from 'axios'; import { VideoExtractor, type IVideo } from '../models'; class MixDrop extends VideoExtractor { protected override serverName = 'MixDrop'; protected override sources: IVideo[] = []; override extract = async (videoUrl: URL): Promise => { try { const { data } = await axios.get(videoUrl.href); const formated = eval(/(eval)(\(f.*?)(\n<\/script>)/m.exec(data.replace(/\n/g, ' '))![2]!.replace('eval', '')); const [poster, source] = formated .match(/poster="([^"]+)"|wurl="([^"]+)"/g) .map((x: string) => x.split(`="`)[1]!.replace(/"/g, '')) .map((x: string) => (x.startsWith('http') ? x : `https:${x}`)); this.sources.push({ url: source, isM3U8: source.includes('.m3u8'), poster: poster, }); return this.sources; } catch (err) { throw new Error((err as Error).message); } }; } export default MixDrop;