UNPKG

kinoklub-api

Version:

Support library for KinoKlub

45 lines (44 loc) 2.15 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { parse } from 'node-html-parser'; import { fetchPage } from '../fetchers/index.js'; import { getTicketParams, resolveDate } from '../helpers/global.helper.js'; import { getCinema, getDay, getHour, getId, getPrice, getRunning, getTags, getTitle } from '../helpers/program.helper.js'; import { programUrl, ticketsRedirectUrl } from '../vars.js'; export class ProgramScraper { program(lang) { return __awaiter(this, void 0, void 0, function* () { const url = programUrl(lang); const response = yield fetchPage(url); const html = parse(response); const programListNodes = html.querySelectorAll('.program__info-row'); return this.buildProgram(programListNodes); }); } buildProgram(moviesNode) { return moviesNode.map((m) => { const hour = getHour(m); const day = getDay(m); const ticketParams = getTicketParams(m); const queryParams = new URLSearchParams(ticketParams).toString(); return { id: getId(m), date: resolveDate(day, hour), title: getTitle(m), price: getPrice(m), ticketUrl: queryParams ? ticketsRedirectUrl + '?' + queryParams : null, cinema: getCinema(m), tags: getTags(m), hour: getHour(m), isRunning: getRunning(m) }; }); } }