You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.9 KiB
111 lines
4.9 KiB
// 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; |