UNPKG

node-csfd-api

Version:

ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)

66 lines (64 loc) 3.16 kB
const require_index = require('../fetchers/index.js'); const require_vars = require('../vars.js'); const require_global_helper = require('../helpers/global.helper.js'); const require_user_reviews_helper = require('../helpers/user-reviews.helper.js'); let node_html_parser = require("node-html-parser"); //#region src/services/user-reviews.service.ts var UserReviewsScraper = class { async userReviews(user, config, options) { let allReviews = []; const pageToFetch = config?.page || 1; const url = require_vars.userReviewsUrl(user, pageToFetch > 1 ? pageToFetch : void 0, { language: options?.language }); const items = (0, node_html_parser.parse)(await require_index.fetchPage(url, { ...options?.request })); const reviews = items.querySelectorAll(".user-reviews .article"); const pagesNode = items.querySelector(".pagination"); const pages = +pagesNode?.childNodes[pagesNode.childNodes.length - 4].rawText || 1; allReviews = this.getPage(config, reviews); if (config?.allPages) { console.log("User", user, url); console.log("Fetching all pages", pages); for (let i = 2; i <= pages; i++) { console.log("Fetching page", i, "out of", pages, "..."); const reviews$1 = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.userReviewsUrl(user, i, { language: options?.language }), { ...options?.request })).querySelectorAll(".user-reviews .article"); allReviews = [...allReviews, ...this.getPage(config, reviews$1)]; if (config.allPagesDelay) await require_global_helper.sleep(config.allPagesDelay); } return allReviews; } return allReviews; } getPage(config, reviews) { const films = []; if (config) { if (config.includesOnly?.length && config.excludes?.length) console.warn(`node-csfd-api: You can not use both parameters 'includesOnly' and 'excludes'. Parameter 'includesOnly' will be used now:`, config.includesOnly); } for (const el of reviews) { const type = require_user_reviews_helper.getUserReviewType(el); if (config?.includesOnly?.length) { if (config.includesOnly.some((include) => type === include)) films.push(this.buildUserReviews(el)); } else if (config?.excludes?.length) { if (!config.excludes.some((exclude) => type === exclude)) films.push(this.buildUserReviews(el)); } else films.push(this.buildUserReviews(el)); } return films; } buildUserReviews(el) { return { id: require_user_reviews_helper.getUserReviewId(el), title: require_user_reviews_helper.getUserReviewTitle(el), year: require_user_reviews_helper.getUserReviewYear(el), type: require_user_reviews_helper.getUserReviewType(el), url: require_user_reviews_helper.getUserReviewUrl(el), colorRating: require_user_reviews_helper.getUserReviewColorRating(el), userDate: require_user_reviews_helper.getUserReviewDate(el), userRating: require_user_reviews_helper.getUserReviewRating(el), text: require_user_reviews_helper.getUserReviewText(el), poster: require_user_reviews_helper.getUserReviewPoster(el) }; } }; //#endregion exports.UserReviewsScraper = UserReviewsScraper; //# sourceMappingURL=user-reviews.service.js.map