Spaces:
Paused
Paused
import axios from "axios"; | |
import * as cheerio from "cheerio"; | |
import qs from "qs"; | |
const domain = "https://ssscapcut.com/"; | |
function getCookies() { | |
return new Promise((resolve, reject) => { | |
axios | |
.get("https://ssscapcut.com/") | |
.then((response) => { | |
const cookiesArray = response.headers["set-cookie"]; | |
const cookies = cookiesArray.map((cookie) => cookie.split(";")[0]); // Ambil hanya bagian yang diperlukan | |
resolve(cookies); | |
}) | |
.catch((error) => { | |
console.error(error); | |
reject(error); | |
}); | |
}); | |
} | |
const getOriginalUrl = async (shortUrl) => { | |
try { | |
const response = await axios.get(shortUrl, { | |
maxRedirects: 0, | |
validateStatus: null, | |
}); | |
const originalUrl = response.headers.location; | |
return originalUrl; | |
} catch (error) { | |
return shortUrl; | |
} | |
}; | |
function capcutdl(Url) { | |
return new Promise(async (resolve, reject) => { | |
try { | |
if (!global.isUrlFSPR(Url) || !/capcut\.com/i.test(Url)) | |
return global.rejectFSPR("Invalid URL: " + Url); | |
const cookies = await getCookies(); | |
Url = await getOriginalUrl(Url); | |
const token = Url.match(/\d+/)[0]; | |
await axios | |
.get(`https://ssscap.net/api/download/${token}`, { | |
headers: { | |
authority: "ssscap.net", | |
accept: "application/json, text/plain, */*", | |
"accept-language": "ms-MY,ms;q=0.9,en-US;q=0.8,en;q=0.7,id;q=0.6", | |
cookie: cookies.join("; "), | |
referer: "https://ssscap.net/", | |
"sec-ch-ua": '"Not)A;Brand";v="24", "Chromium";v="116"', | |
"sec-ch-ua-mobile": "?1", | |
"sec-ch-ua-platform": '"Android"', | |
"sec-fetch-dest": "empty", | |
"sec-fetch-mode": "cors", | |
"sec-fetch-site": "same-origin", | |
"user-agent": | |
"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36", | |
}, | |
}) | |
.then(({ data }) => { | |
resolve(global.resolveFSPR(updateUrls(data))); | |
}) | |
.catch((error) => { | |
resolve(global.rejectFSPR(error)); | |
}); | |
} catch (error) { | |
resolve(global.rejectFSPR(error)); | |
} | |
}); | |
} | |
function updateUrls(obj) { | |
const regex = | |
/("originalVideoUrl": "| "authorUrl": "|"coverUrl": ")(\/[^"]+)/g; | |
const updatedData = JSON.stringify(obj, null, 2).replace( | |
regex, | |
(match, p1, p2) => p1 + domain + p2, | |
); | |
return JSON.parse(updatedData); | |
} | |
export { capcutdl }; |