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};