kinoklub-api
Version:
Support library for KinoKlub
45 lines (44 loc) • 2.15 kB
JavaScript
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)
};
});
}
}