fix
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
"name": "50/50",
|
||||
"icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s"
|
||||
},
|
||||
"version": "1.2.2",
|
||||
"version": "1.2.3",
|
||||
"language": "English",
|
||||
"streamType": "HLS",
|
||||
"quality": "1080p",
|
||||
|
||||
+57
-30
@@ -377,6 +377,7 @@ async function ilovefeet(imdbId, isSeries = false, season = null, episode = null
|
||||
"X-Requested-With": "XMLHttpRequest"
|
||||
};
|
||||
|
||||
console.log(`Requesting Base URL: ${baseUrl}`);
|
||||
const pageResponse = await fetchv2(baseUrl, headers);
|
||||
const pageText = await pageResponse.text();
|
||||
|
||||
@@ -389,44 +390,68 @@ async function ilovefeet(imdbId, isSeries = false, season = null, episode = null
|
||||
throw new Error('Could not find data in page');
|
||||
}
|
||||
const rawData = match[1];
|
||||
console.log("Raw Data extracted:", rawData);
|
||||
|
||||
// Use the new enc-dec.app API to get server and stream URLs
|
||||
const apiResponse = await soraFetch(`https://enc-dec.app/api/enc-vidfast?text=${encodeURIComponent(rawData)}`);
|
||||
const apiUrl = `https://enc-dec.app/api/enc-vidfast?text=${encodeURIComponent(rawData)}&version=1`;
|
||||
console.log(`Requesting Decrypt API: ${apiUrl}`);
|
||||
const apiResponse = await soraFetch(apiUrl);
|
||||
const apiData = await apiResponse.json();
|
||||
console.log("API Data from enc-dec.app:", JSON.stringify(apiData));
|
||||
|
||||
if (apiData.status !== 200 || !apiData.result) {
|
||||
throw new Error('Failed to decrypt data via enc-dec.app API');
|
||||
}
|
||||
|
||||
const apiServers = apiData.result.servers;
|
||||
const serversResponse = await fetchv2(apiServers, headers);
|
||||
const serverList = await serversResponse.json();
|
||||
const streamBase = apiData.result.stream;
|
||||
const csrfToken = apiData.result.token;
|
||||
|
||||
if (csrfToken) {
|
||||
headers["X-CSRF-Token"] = csrfToken;
|
||||
}
|
||||
|
||||
console.log(`Requesting Servers URL: ${apiServers}`);
|
||||
const serversResponse = await soraFetch(apiServers, { method: 'POST', headers: headers });
|
||||
const serversEncrypted = await serversResponse.text();
|
||||
|
||||
const decServersResponse = await soraFetch('https://enc-dec.app/api/dec-vidfast', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ text: serversEncrypted, version: "1" })
|
||||
});
|
||||
const decServersData = await decServersResponse.json();
|
||||
|
||||
if (decServersData.status !== 200 || !decServersData.result) {
|
||||
throw new Error('Failed to decrypt servers data via enc-dec.app API');
|
||||
}
|
||||
const serverList = decServersData.result;
|
||||
|
||||
if (!serverList || serverList.length === 0) {
|
||||
throw new Error('No servers available');
|
||||
}
|
||||
|
||||
const streamBase = apiData.result.stream;
|
||||
|
||||
const testServer = async (serverObj, index) => {
|
||||
const server = serverObj.data;
|
||||
const apiStream = streamBase + '/' + server;
|
||||
|
||||
try {
|
||||
const streamResponse = await fetchv2(apiStream, headers);
|
||||
console.log(`Requesting Stream URL for server ${index}: ${apiStream}`);
|
||||
const streamResponse = await soraFetch(apiStream, { method: 'POST', headers: headers });
|
||||
|
||||
if (streamResponse.status !== 200) {
|
||||
throw new Error(`Server ${index} returned status ${streamResponse.status}`);
|
||||
const streamEncrypted = await streamResponse.text();
|
||||
|
||||
const decStreamResponse = await soraFetch('https://enc-dec.app/api/dec-vidfast', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ text: streamEncrypted, version: "1" })
|
||||
});
|
||||
const decStreamData = await decStreamResponse.json();
|
||||
|
||||
if (decStreamData.status !== 200 || !decStreamData.result) {
|
||||
throw new Error(`Server ${index} failed to decrypt stream`);
|
||||
}
|
||||
|
||||
const streamText = await streamResponse.text();
|
||||
|
||||
let data;
|
||||
try {
|
||||
data = JSON.parse(streamText);
|
||||
} catch (e) {
|
||||
throw new Error(`Server ${index} returned invalid JSON`);
|
||||
}
|
||||
let data = decStreamData.result;
|
||||
|
||||
if (!data.url) {
|
||||
throw new Error(`Server ${index} has no URL`);
|
||||
@@ -460,18 +485,6 @@ async function ilovefeet(imdbId, isSeries = false, season = null, episode = null
|
||||
if (preferredFormat === 'm3u8') {
|
||||
const serverPromises = serverList.map((serverObj, index) => testServer(serverObj, index));
|
||||
|
||||
const vFastServerObj = serverList.find(server => server.name === 'vFast');
|
||||
if (vFastServerObj) {
|
||||
const vFastIndex = serverList.indexOf(vFastServerObj);
|
||||
try {
|
||||
vFastServer = await testServer(vFastServerObj, vFastIndex);
|
||||
} catch (error) {
|
||||
console.log('vFast server failed: ' + error.message);
|
||||
}
|
||||
} else {
|
||||
console.log('vFast server not found in server list');
|
||||
}
|
||||
|
||||
const raceForSubtitles = new Promise((resolve, reject) => {
|
||||
let completedCount = 0;
|
||||
let firstWorkingServer = null;
|
||||
@@ -513,7 +526,21 @@ async function ilovefeet(imdbId, isSeries = false, season = null, episode = null
|
||||
});
|
||||
});
|
||||
|
||||
selectedServer = await raceForSubtitles;
|
||||
let vFastPromise = Promise.resolve(null);
|
||||
const vFastServerObj = serverList.find(server => server.name === 'vFast');
|
||||
if (vFastServerObj) {
|
||||
const vFastIndex = serverList.indexOf(vFastServerObj);
|
||||
vFastPromise = serverPromises[vFastIndex].catch(error => {
|
||||
console.log('vFast server failed: ' + error.message);
|
||||
return null;
|
||||
});
|
||||
} else {
|
||||
console.log('vFast server not found in server list');
|
||||
}
|
||||
|
||||
const [selected, vFastResult] = await Promise.all([raceForSubtitles, vFastPromise]);
|
||||
selectedServer = selected;
|
||||
vFastServer = vFastResult;
|
||||
|
||||
} else {
|
||||
const serverPromises = serverList.map((serverObj, index) => testServer(serverObj, index));
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"name": "50/50",
|
||||
"icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s"
|
||||
},
|
||||
"version": "1.2.0",
|
||||
"version": "1.2.1",
|
||||
"language": "English",
|
||||
"streamType": "HLS",
|
||||
"quality": "1080p",
|
||||
|
||||
Reference in New Issue
Block a user