|
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]); |
|
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 }; |