@zougui/furaffinity
Version:
88 lines • 4.9 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _FurAffinityScraper_cookieA, _FurAffinityScraper_cookieB, _FurAffinityScraper_http;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FurAffinityScraper = void 0;
const cheerio = __importStar(require("cheerio"));
const scrape_it_1 = __importDefault(require("scrape-it"));
const sanitize_html_1 = __importDefault(require("sanitize-html"));
const utils_1 = require("./utils");
const HttpClient_1 = require("../HttpClient");
const constants_1 = require("../constants");
const disallowedTags = new Set(['script', 'style', 'xml']);
const allowedTags = [
'html',
'body',
'img',
...sanitize_html_1.default.defaults.allowedTags.filter(tag => !disallowedTags.has(tag)),
];
class FurAffinityScraper {
constructor(options) {
_FurAffinityScraper_cookieA.set(this, void 0);
_FurAffinityScraper_cookieB.set(this, void 0);
_FurAffinityScraper_http.set(this, new HttpClient_1.hHttpClient());
this.fetch = async (path, config) => {
const url = `${constants_1.FURAFFINITY_ORIGIN}${path}`;
const res = await __classPrivateFieldGet(this, _FurAffinityScraper_http, "f").fetch(url, Object.assign(Object.assign({}, config), { cookies: [`b=${__classPrivateFieldGet(this, _FurAffinityScraper_cookieB, "f")}`, `a=${__classPrivateFieldGet(this, _FurAffinityScraper_cookieA, "f")}`, 's=1'].join(';') }));
(0, utils_1.checkErrors)(res, url);
return res.body;
};
this.scrape = (body, options) => {
const safeHtml = (0, sanitize_html_1.default)(body, {
allowedTags,
disallowedTagsMode: 'discard',
allowedAttributes: false,
});
const doc = cheerio.load(safeHtml);
const siteVersion = (0, utils_1.determineSiteVersion)(doc);
const scrapeOptions = siteVersion === 'beta' ? options.beta : options.classic;
const scraped = scrape_it_1.default.scrapeHTML(doc, scrapeOptions);
return scraped;
};
this.fetchAndScrape = async (path, options, fetchConfig) => {
const body = await this.fetch(path, fetchConfig);
return this.scrape(body, options);
};
__classPrivateFieldSet(this, _FurAffinityScraper_cookieA, options.cookieA, "f");
__classPrivateFieldSet(this, _FurAffinityScraper_cookieB, options.cookieB, "f");
}
}
exports.FurAffinityScraper = FurAffinityScraper;
_FurAffinityScraper_cookieA = new WeakMap(), _FurAffinityScraper_cookieB = new WeakMap(), _FurAffinityScraper_http = new WeakMap();
//# sourceMappingURL=FurAffinityScraper.js.map