File size: 2,809 Bytes
d946783
 
 
 
 
 
 
 
801f178
d946783
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const { firefox } = require('playwright'); // Ensure you have playwright installed

 function serieMultiembed(imdbId) {
    imdbId= imdbId.split(':');
   return `https://multiembed.mov/?video_id=${imdbId[0]}&season=${imdbId[1]}&episode=${imdbId[2]}`;
}


async function movieshubembed(imdb,l=null){
  var link = `https://watch.movieshubweb.com/embed/${imdb}`;
         page.on('request', async (request) => {
            console.log('>>', request.method(), request.url());
            if (request.url().includes('.m3u8')) {
                setTimeout(async () => await browser.close(), 5000);
                resolve(request.url());
            }
        });

        page.on('response', response => 
            console.log('<<', response.status(), response.url())
        );

        try {
            await page.goto(link);
            await page.waitForLoadState('domcontentloaded');
            await page.locator('button:text("Yes")').click();
          
            await page.waitForSelector('#play');
            await page.click('#play');
        } catch (error) {
            await browser.close();
            reject(error);
        }
}

async function movieMultiembed(imdbId,link=null) {
    const browser = await firefox.launch();
    const page = await browser.newPage();

    await page.setViewportSize({ width: 1200, height: 800 });

    return new Promise(async (resolve, reject) => {
        page.on('request', async (request) => {
            console.log('>>', request.method(), request.url());
            if (request.url().includes('.m3u8')) {
                setTimeout(async () => await browser.close(), 5000);
                resolve(request.url());
            }
        });

        page.on('response', response => 
            console.log('<<', response.status(), response.url())
        );

        try {
            if(link){
                await page.goto(link);
            }else{
                await page.goto(`https://multiembed.mov/?video_id=${imdbId}`);
            }
            await page.waitForSelector('#play');
            await page.click('#play');
        } catch (error) {
            await browser.close();
            reject(error);
        }
    });
}


function timeoutPromise(ms) {
    return new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), ms));
}

async function movieMultiembedTimeout(movieId, timeout,link=null) {
    try {
        const result = await Promise.race([
            movieshubembed(movieId,link),
            // movieMultiembed(movieId,link),
            timeoutPromise(timeout)
        ]);
        return result;
    } catch (error) {
        console.error(error);
        return null; // or handle the timeout error as needed
    }
}

module.exports = { movieMultiembed,movieMultiembedTimeout,serieMultiembed};