selfdebrid/extractors/krakenfiles.js
2022-08-17 09:20:38 -04:00

71 lines
2 KiB
JavaScript

const axios = require("axios");
const cheerio = require("cheerio");
const lib = require("../lib");
module.exports = {
get: get,
hostnames: ["krakenfiles.com"]
};
async function get(url, options) {
let headers = lib.defaultHeaders;
let id = url.split(`/view/`)[1].split(`/`)[0];
lib.log(`krakenfiles`, `Got ID:`, [id]);
lib.log(`krakenfiles`, `Fetching page...`, [] , true, options);
let resp = await axios({
headers: headers,
url: url
});
lib.log(`krakenfiles`, `Parsing page...`);
let $ = cheerio.load(resp.data);
let token = $("#dl-token")?.[0]?.attribs.value;
lib.log(`krakenfiles`, `Got download token:`, [token]);
let fileName = $(".card > .coin-item > .coin-info > .coin-name > h5").text().split(`\n`).join(``).split(`\t`).join(``);
headers["Accept"] = `*/*`;
headers["Content-Type"] = `application/x-www-form-urlencoded; charset=UTF-8`;
headers["hash"] = id;
headers["Sec-Fetch-Dest"] = "empty";
headers["Sec-Fetch-Mode"] = "cors";
delete headers["Sec-Fetch-User"];
headers["Referer"] = url;
headers["X-Requested-With"] = `XMLHttpRequest`;
headers = JSON.parse(JSON.stringify(headers));
let body = `token=${token}`;
lib.log(`krakenfiles`, `Got headers:`, [headers]);
lib.log(`krakenfiles`, `Got body:`, [body]);
lib.log(`krakenfiles`, `Sending download request...`, [], true, options);
resp = await axios({
method: `POST`,
headers: headers,
data: body,
url: `https://krakenfiles.com/download/${id}`
});
if (resp.data.status == "ok") {
headers["Sec-Fetch-Dest"] = "document";
headers["Sec-Fetch-Mode"] = "navigate";
headers["Sec-Fetch-Site"] = "same-site";
delete headers["hash"];
delete headers["X-Requested-With"];
headers = JSON.parse(JSON.stringify(headers));
return {
axiosData: {
headers: headers,
url: resp.data.url
},
metadata: {
fileName: fileName
}
};
} else throw new Error("Download request failed.");
}