71 lines
2 KiB
JavaScript
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.");
|
|
} |