fix
Sync Versions to index.json / sync-versions (push) Failing after 23s
Fetch and Save Remote Content / fetch (push) Failing after 13m19s

This commit is contained in:
aka paul
2026-06-04 17:31:03 +02:00
parent 6259f42863
commit eb493f2835
2 changed files with 34 additions and 29 deletions
+33 -28
View File
@@ -2,7 +2,7 @@ async function searchResults(keyword) {
try {
const encodedKeyword = encodeURIComponent(keyword);
const ddosInterceptor = new DdosGuardInterceptor();
const responseText = await ddosInterceptor.fetchWithBypass(`https://animepahe.com/api?m=search&q=${encodedKeyword}`);
const responseText = await ddosInterceptor.fetchWithBypass(`https://animepahe.pw/api?m=search&q=${encodedKeyword}`);
const dataText = await responseText.text();
console.log(dataText);
const data = JSON.parse(dataText);
@@ -10,14 +10,14 @@ async function searchResults(keyword) {
return {
title: result.title,
image: result.poster,
href: `https://animepahe.com/anime/${result.session}`
href: `https://animepahe.pw/anime/${result.session}`
};
});
return JSON.stringify(transformedResults);
} catch (error) {
console.log("Fetch error in searchResults: " + error);
return JSON.stringify([{ title: "Error", image: "", href: "" }]);
return JSON.stringify([{ title: "Please wait a bit then try again!", image: "", href: "" }]);
}
}
@@ -57,17 +57,17 @@ async function extractEpisodes(url) {
if (!uuidMatch) throw new Error("Invalid URL");
const id = uuidMatch[1];
const ddosInterceptor = new DdosGuardInterceptor();
const ddosInterceptor = new DdosGuardInterceptor();
let page = 1;
const apiUrl1 = `https://animepahe.com/api?m=release&id=${id}&sort=episode_asc&page=${page}`;
const apiUrl1 = `https://animepahe.pw/api?m=release&id=${id}&sort=episode_asc&page=${page}`;
const response1 = await ddosInterceptor.fetchWithBypass(apiUrl1);
const dataText1 = await response1.text();
const data1 = JSON.parse(dataText1);
for (const item of data1.data) {
results.push({
href: `https://animepahe.com/play/${id}/${item.session}`,
href: `https://animepahe.pw/play/${id}/${item.session}`,
number: item.episode
});
}
@@ -81,7 +81,7 @@ async function extractEpisodes(url) {
let retries = 0;
while (!pageData && retries < 3) {
try {
const apiUrl = `https://animepahe.com/api?m=release&id=${id}&sort=episode_asc&page=${pageNum}`;
const apiUrl = `https://animepahe.pw/api?m=release&id=${id}&sort=episode_asc&page=${pageNum}`;
const response = await ddosInterceptor.fetchWithBypass(apiUrl);
const dataText = await response.text();
pageData = JSON.parse(dataText);
@@ -95,13 +95,13 @@ async function extractEpisodes(url) {
return pageData;
})(p));
}
const allPagesData = await Promise.all(pagePromises);
for (const pageData of allPagesData) {
if (pageData && pageData.data) {
for (const item of pageData.data) {
results.push({
href: `https://animepahe.com/play/${id}/${item.session}`,
href: `https://animepahe.pw/play/${id}/${item.session}`,
number: item.episode
});
}
@@ -185,14 +185,14 @@ async function extractStreamUrl(url) {
const parts = scriptContent.split('));eval(');
if (parts.length === 2) {
const layer2Packed = parts[1].substring(0, parts[1].length - 1);
try { unpacked = unpack(layer2Packed); } catch(e) {}
try { unpacked = unpack(layer2Packed); } catch (e) { }
}
} else {
try { unpacked = unpack(scriptContent); } catch(e) {}
try { unpacked = unpack(scriptContent); } catch (e) { }
}
if (unpacked) {
const urlMatch = unpacked.match(/const source=\\?['"]([^'"]+)['"]/) ||
unpacked.match(/https:\/\/[^\s'";]+\.m3u8/);
const urlMatch = unpacked.match(/const source=\\?['"]([^'"]+)['"]/) ||
unpacked.match(/https:\/\/[^\s'";]+\.m3u8/);
if (urlMatch) {
let hlsUrl = (urlMatch[1] || urlMatch[0]).replace(/\\+$/, '');
hlsUrl = hlsUrl.replace("/stream/", "/hls/").replace("uwu.m3u8", "owo.m3u8");
@@ -265,15 +265,20 @@ async function extractStreamUrl(url) {
}
}
// Fixed DDOS Bypass
// Fixed Bypass
class DdosGuardInterceptor {
constructor() {
this.errorCodes = [403];
this.serverCheck = ["ddos-guard"];
this.cookieStore = {};
this.errorCodes = [403];
this.serverCheck = ["ddos-guard"];
this.cookieStore = {};
}
async fetchWithBypass(url, options = {}) {
const solverUrl = `https://tmdbproxy22.simplepostrequest.workers.dev/solver?url=${encodeURIComponent(url)}&cache=1h`;
return fetchv2(solverUrl, options.headers || {});
}
async fetchWithBypassDdos(url, options = {}) {
let response = await this.fetchWithCookies(url, options);
let responseText = null;
@@ -291,10 +296,10 @@ class DdosGuardInterceptor {
return response;
}
const isBlocked = responseText.includes('ddos-guard/js-challenge') ||
responseText.includes('DDoS-Guard') ||
responseText.includes('data-ddg-origin');
const isBlocked = responseText.includes('ddos-guard/js-challenge') ||
responseText.includes('DDoS-Guard') ||
responseText.includes('data-ddg-origin');
if (!isBlocked) {
response.text = async () => responseText;
return response;
@@ -309,7 +314,7 @@ class DdosGuardInterceptor {
response.text = async () => responseText;
return response;
}
return this.fetchWithCookies(url, options);
}
@@ -453,7 +458,7 @@ class Unbaser {
this.unbase = this._dictunbaser;
}
}
_dictunbaser(value) {
let ret = 0;
[...value].reverse().forEach((cipher, index) => {
@@ -487,20 +492,20 @@ function unpack(source) {
}
throw Error("Could not make sense of p.a.c.k.e.r data (unexpected code structure)");
}
let { payload, symtab, radix, count } = _filterargs(source);
if (count != symtab.length) {
throw Error("Malformed p.a.c.k.e.r. symtab.");
}
let unbase;
try {
unbase = new Unbaser(radix);
} catch (e) {
throw Error("Unknown p.a.c.k.e.r. encoding.");
}
function lookup(match) {
const word = match;
let word2;
@@ -511,7 +516,7 @@ function unpack(source) {
}
return word2 || word;
}
source = payload.replace(/\b\w+\b/g, lookup);
return source;
}
+1 -1
View File
@@ -5,7 +5,7 @@
"name": "50/50",
"icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s"
},
"version": "1.0.4",
"version": "1.2.0",
"language": "English",
"streamType": "HLS",
"quality": "1080p",