UNPKG

@zougui/furaffinity

Version:

88 lines 4.9 kB
"use strict"; 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