@aidarkezio/main-func
Version:
📦 It has my funcs
69 lines • 3.01 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const got_1 = __importDefault(require("got"));
const vm_1 = __importDefault(require("vm"));
const utils_js_1 = require("../utils.js");
const types_js_1 = require("./types.js");
async function savefrom(url) {
var _a, _b;
types_js_1.SaveFromArgsSchema.parse(arguments);
let scriptJS = await (0, got_1.default)('https://worker.sf-tools.com/savefrom.php', {
method: 'POST',
headers: {
'content-type': 'application/x-www-form-urlencoded',
origin: 'https://id.savefrom.net',
referer: 'https://id.savefrom.net/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'
},
form: {
sf_url: encodeURI(url),
sf_submit: '',
new: 2,
lang: 'id',
app: '',
country: 'id',
os: 'Windows',
browser: 'Chrome',
channel: ' main',
'sf-nomad': 1
}
}).text();
const executeCode = '[]["filter"]["constructor"](b).call(a);';
if (scriptJS.indexOf(executeCode) === -1)
throw new utils_js_1.ScraperError(`Cannot find execute code\n${scriptJS}`);
scriptJS = scriptJS.replace(executeCode, `
try {const script = ${executeCode.split('.call')[0]}.toString();if (script.includes('function showResult')) scriptResult = script;else (${executeCode.replace(/;/, '')});} catch {}
`);
const context = {
scriptResult: '',
log: console.log
};
vm_1.default.createContext(context);
new vm_1.default.Script(scriptJS).runInContext(context);
const data = ((_a = context.scriptResult.split('window.parent.sf.videoResult.show(')) === null || _a === void 0 ? void 0 : _a[1]) || ((_b = context.scriptResult.split('window.parent.sf.videoResult.showRows(')) === null || _b === void 0 ? void 0 : _b[1]);
if (!data)
throw new utils_js_1.ScraperError(`Cannot find data ("${data}") from\n"${context.scriptResult}"`);
let json;
try {
// @ts-ignore
if (context.scriptResult.includes('showRows')) {
const splits = data.split('],"');
const lastIndex = splits.findIndex(v => v.includes('window.parent.sf.enableElement'));
json = JSON.parse(splits.slice(0, lastIndex).join('],"') + ']');
}
else {
json = [JSON.parse(data.split(');')[0])];
}
}
catch (e) {
json = null;
}
if (!(json === null || json === void 0 ? void 0 : json.length))
throw new utils_js_1.ScraperError(`Cannot parse data ("${data}") from\n"${context.scriptResult}"`);
return json.map(v => types_js_1.SaveFromSchema.parse(v));
}
exports.default = savefrom;
//# sourceMappingURL=savefrom.js.map