mirror of
https://github.com/movie-web/movie-web.git
synced 2024-11-14 19:45:08 +01:00
111 lines
4.9 KiB
Plaintext
111 lines
4.9 KiB
Plaintext
|
// THIS SCRAPER DOES NOT CURRENTLY WORK AND IS NOT IN USE
|
||
|
|
||
|
const BASE_URL = `${process.env.REACT_APP_CORS_PROXY_URL}https://database.gdriveplayer.us`;
|
||
|
const MOVIE_URL = `${process.env.REACT_APP_CORS_PROXY_URL}https://database.gdriveplayer.us/player.php`;
|
||
|
const SHOW_URL = `${process.env.REACT_APP_CORS_PROXY_URL}https://series.databasegdriveplayer.co/player.php`;
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
type: type,
|
||
|
title: node.querySelector('div.details > div.wrapper > div.title > div > a').textContent,
|
||
|
year: node.querySelector('div.details > div.wrapper > div.title > span').textContent.trim().split(' ')[2],
|
||
|
slug: node.querySelector('div.details > div.wrapper > div.title > div > a').href.split('/')[4],
|
||
|
source: 'gdriveplayer'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
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 tmdbRes = await fetch(`${process.env.REACT_APP_CORS_PROXY_URL}https://www.themoviedb.org/search?query=${term}`).then(d => d.text());
|
||
|
|
||
|
console.log(`${MOVIE_URL}?tmdb=${slug}`)
|
||
|
const res = await fetch(`${MOVIE_URL}?tmdb=${slug}`).then(d => d.text());
|
||
|
|
||
|
const embed = Array.from(new DOMParser().parseFromString(res, 'text/html').querySelectorAll('.list-server-items a'))
|
||
|
.find((e) => e.textContent.includes("Mirror"))
|
||
|
|
||
|
if (embed && embed.getAttribute('href')) {
|
||
|
let href = embed.getAttribute('href');
|
||
|
if (href.startsWith('//')) href = `https:${href}`;
|
||
|
|
||
|
const res1 = await fetch(`${process.env.REACT_APP_CORS_PROXY_URL}${href}`.replace('streaming.php', 'download')).then(d => d.text());
|
||
|
const sb = Array.from(new DOMParser().parseFromString(res1, 'text/html').querySelectorAll('a'))
|
||
|
.find((a) => a.textContent.includes("StreamSB"));
|
||
|
|
||
|
console.log(sb);
|
||
|
|
||
|
if (sb && sb.getAttribute('href')) {
|
||
|
console.log(sb.getAttribute('href'))
|
||
|
const src = await sbPlayGetLink(sb.getAttribute('href'));
|
||
|
if (src) return { url: src };
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return { url: '' }
|
||
|
}
|
||
|
|
||
|
async function sbPlayGetLink(href) {
|
||
|
if (href.startsWith("//")) href = `https:${href}`;
|
||
|
|
||
|
const res = await fetch(`${process.env.REACT_APP_CORS_PROXY_URL}${href}`).then(d => d.text());
|
||
|
const a = new DOMParser().parseFromString(res, 'text/html').querySelector('table tbody tr a');
|
||
|
|
||
|
if (a && a.getAttribute('onclick')) {
|
||
|
let match = a.getAttribute("onclick").match(/'([^']+)'/gm);
|
||
|
console.log(a.getAttribute("onclick"));
|
||
|
|
||
|
if (match) {
|
||
|
let [code, mode, hash] = match;
|
||
|
|
||
|
const url = `https://sbplay2.com/dl?op=download_orig&id=${code.replace(/'/gm, "")}&mode=${mode.replace(/'/gm, "")}&hash=${hash.replace(/'/gm, "")}`;
|
||
|
|
||
|
// https://sbplay2.com/dl?op=download_orig&id=glr78kyk21kd&mode=n&hash=1890245-0-0-1640889479-95e144cdfdbe0e9104a67b8e3eee0c2d
|
||
|
// https://sbplay2.com/dl?op=download_orig&id=0hh6mxf5qqn0&mode=h&hash=2473604-78-149-1640889782-797bc207a16b2934c21ea6fdb1e97352
|
||
|
// https://proxy-1.movie-web.workers.dev/?destination=https://sbplay2.com/dl?op=download_orig&id=glr78kyk21kd&mode=n&hash=1890245-0-0-1640889479-95e144cdfdbe0e9104a67b8e3eee0c2d
|
||
|
|
||
|
const text = await fetch(url).then((e) => e.text());
|
||
|
const a = new DOMParser().parseFromString(text, 'text/html').querySelector(".contentbox span a");
|
||
|
if (a && a.getAttribute("href")) return a.getAttribute("href");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const gdriveplayer = { findContent, getStreamUrl }
|
||
|
export default gdriveplayer;
|