mirror of
https://github.com/movie-web/movie-web.git
synced 2024-11-15 00:35:08 +01:00
70 lines
2.6 KiB
JavaScript
70 lines
2.6 KiB
JavaScript
|
const BASE_URL = `${process.env.REACT_APP_CORS_PROXY_URL}https://www.theflix.to`;
|
||
|
|
||
|
async function findContent(searchTerm, type) {
|
||
|
try {
|
||
|
if (type !== 'movie') return;
|
||
|
|
||
|
const term = searchTerm.toLowerCase()
|
||
|
const tmdbRes = await fetch(`${process.env.REACT_APP_CORS_PROXY_URL}https://www.themoviedb.org/search?query=${term}`).then(d => d.text());
|
||
|
|
||
|
const doc = new DOMParser().parseFromString(tmdbRes, 'text/html');
|
||
|
const nodes = Array.from(doc.querySelectorAll('div.results > div > div.wrapper'));
|
||
|
const results = nodes.slice(0, 10).map((node) => {
|
||
|
let type = node.querySelector('div.details > div.wrapper > div.title > div > a').getAttribute('data-media-type');
|
||
|
switch (type) {
|
||
|
case 'movie':
|
||
|
type = 'movie';
|
||
|
break;
|
||
|
case 'tv':
|
||
|
type = 'show';
|
||
|
// eslint-disable-next-line array-callback-return
|
||
|
return;
|
||
|
case 'collection':
|
||
|
// eslint-disable-next-line array-callback-return
|
||
|
return;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
const title = node.querySelector('div.details > div.wrapper > div.title > div > a').textContent;
|
||
|
const year = node.querySelector('div.details > div.wrapper > div.title > span').textContent.trim().split(' ')[2];
|
||
|
const slug = node.querySelector('div.details > div.wrapper > div.title > div > a').getAttribute('href').split('/')[2];
|
||
|
|
||
|
return {
|
||
|
type: type,
|
||
|
title: title,
|
||
|
year: year,
|
||
|
slug: slug + '-' + title.replace(/[^a-z0-9]+|\s+/gmi, " ").replace(/\s+/g, '-').toLowerCase(),
|
||
|
source: 'theflix'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if (results.length > 1) {
|
||
|
return { options: results };
|
||
|
} else {
|
||
|
return { options: [ results[0] ] }
|
||
|
}
|
||
|
} catch (err) {
|
||
|
console.error(err);
|
||
|
throw new Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function getStreamUrl(slug, type, season, episode) {
|
||
|
if (type !== 'movie') return;
|
||
|
|
||
|
const res = await fetch(`${BASE_URL}/${type}/${slug}?movieInfo=${slug}`).then(d => d.text());
|
||
|
|
||
|
const scripts = Array.from(new DOMParser().parseFromString(res, "text/html").querySelectorAll('script'));
|
||
|
const prop = scripts.find((e) => e.textContent.includes("theflixvd.b-cdn"));
|
||
|
|
||
|
if (prop) {
|
||
|
const data = JSON.parse(prop.textContent);
|
||
|
return { url: data.props.pageProps.videoUrl };
|
||
|
}
|
||
|
|
||
|
return { url: '' }
|
||
|
}
|
||
|
|
||
|
const theflix = { findContent, getStreamUrl }
|
||
|
export default theflix;
|