diff --git a/wearechecking/wearechecking.js b/wearechecking/wearechecking.js new file mode 100644 index 0000000..2914217 --- /dev/null +++ b/wearechecking/wearechecking.js @@ -0,0 +1,148 @@ +async function searchResults(keyword) { + const results = []; + try { + const urls = [ + 'https://wearechecking.wtf/streams-pages/motorsports', + 'https://wearechecking.wtf/streams-pages/football', + 'https://wearechecking.wtf/streams-pages/others' + ]; + + const responses = await Promise.all( + urls.map(url => fetchv2(url).then(res => res.text())) + ); + + for (const html of responses) { + const wrapperRegex = /
]*>([\s\S]*?)<\/div>\s*/gi; + let wrapperMatch; + + while ((wrapperMatch = wrapperRegex.exec(html)) !== null) { + const wrapperContent = wrapperMatch[1]; + + const imgRegex = /]*onclick="location\.href='([^']+)'[^>]*>\s*

\d+<\/span>([^<]+)<\/p>/gi; + let linkMatch; + + while ((linkMatch = streamLinkRegex.exec(wrapperContent)) !== null) { + const streamUrl = 'https://wearechecking.wtf' + linkMatch[1]; + const eventName = linkMatch[2].trim(); + const title = `[${sport}] ${eventName}`; + + results.push({ + title: title, + image: imageUrl, + href: streamUrl + }); + } + } + } + + return JSON.stringify(results); + } catch (err) { + return JSON.stringify([{ + title: "Error", + image: "Error", + href: "Error" + }]); + } +} + +async function extractDetails(url) { + try { + return JSON.stringify([{ + description: "", + aliases: "", + airdate: "" + }]); + } catch (err) { + return JSON.stringify([{ + description: "Error", + aliases: "Error", + airdate: "Error" + }]); + } +} + +async function extractEpisodes(url) { + const results = []; + try { + results.push({ + href: url, + number: 1 + }); + + return JSON.stringify(results); + } catch (err) { + return JSON.stringify([{ + href: "Error", + number: "Error" + }]); + } +} + +async function extractStreamUrl(pageUrl) { + try { + const response = await fetchv2(pageUrl); + const html = await response.text(); + + const iframeRegex = /(?:document\.getElementById\('feed-iframe'\)\.src|src)\s*=\s*['"]https:\/\/ihatestreams\.xyz\/embed\/([a-f0-9\-]+)['"]/i; + const match = iframeRegex.exec(html); + + if (!match) return JSON.stringify({ streams: [], subtitle: null }); + + const streamId = match[1]; + + const streamResponse = await fetchv2(`https://ihatestreams.xyz/get-stream?id=${streamId}`); + const streamData = await streamResponse.json(); + + let streamUrl = streamData.pointer; + let headers = {}; + + if (!streamUrl.startsWith("http")) { + const baseUrl = `https://gg.revoltedpeanuts.com/${streamUrl}/`; + headers = { + "Referer": "https://ihatestreams.xyz/", + "Origin": "https://ihatestreams.xyz" + }; + + const manifestResponse = await fetchv2(baseUrl + "index.m3u8", headers); + const manifestText = await manifestResponse.text(); + + const lines = manifestText.split("\n").map(l => l.trim()); + const relativePath = lines.find(l => l && !l.startsWith("#")) || "index.m3u8"; + streamUrl = baseUrl + relativePath; + } + + return JSON.stringify({ + streams: [ + { + title: streamData.title || "Unknown", + streamUrl, + headers + } + ], + subtitle: streamData.subtitle || null + }); + + } catch (err) { + return JSON.stringify({ + streams: [ + { + title: "Error", + streamUrl: "https://error.org/", + headers: {} + } + ], + subtitle: null + }); + } +} + + +