node-csfd-api
Version:
ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)
63 lines (62 loc) • 3.28 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MovieScraper = void 0;
const node_html_parser_1 = require("node-html-parser");
const fetchers_1 = require("../fetchers");
const movie_helper_1 = require("../helpers/movie.helper");
const vars_1 = require("../vars");
class MovieScraper {
async movie(movieId) {
const id = Number(movieId);
if (isNaN(id)) {
throw new Error('node-csfd-api: movieId must be a valid number');
}
const url = (0, vars_1.movieUrl)(id);
const response = await (0, fetchers_1.fetchPage)(url);
const movieHtml = (0, node_html_parser_1.parse)(response);
const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');
const asideNode = movieHtml.querySelector('.aside-movie-profile');
const movieNode = movieHtml.querySelector('.main-movie-profile');
const jsonLd = movieHtml.querySelector('script[type="application/ld+json"]').innerText;
this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
return this.film;
}
buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
this.film = {
id: movieId,
title: (0, movie_helper_1.getTitle)(el),
year: (0, movie_helper_1.getYear)(jsonLd),
duration: (0, movie_helper_1.getDuration)(jsonLd, el),
descriptions: (0, movie_helper_1.getDescriptions)(el),
genres: (0, movie_helper_1.getGenres)(el),
type: (0, movie_helper_1.getType)(el),
url: (0, vars_1.movieUrl)(movieId),
origins: (0, movie_helper_1.getOrigins)(el),
colorRating: (0, movie_helper_1.getColorRating)(pageClasses),
rating: (0, movie_helper_1.getRating)(asideEl),
ratingCount: (0, movie_helper_1.getRatingCount)(asideEl),
titlesOther: (0, movie_helper_1.getTitlesOther)(el),
poster: (0, movie_helper_1.getPoster)(el),
photo: (0, movie_helper_1.getRandomPhoto)(el),
trivia: (0, movie_helper_1.getTrivia)(el),
creators: {
directors: (0, movie_helper_1.getGroup)(el, 'Režie'),
writers: (0, movie_helper_1.getGroup)(el, 'Scénář'),
cinematography: (0, movie_helper_1.getGroup)(el, 'Kamera'),
music: (0, movie_helper_1.getGroup)(el, 'Hudba'),
actors: (0, movie_helper_1.getGroup)(el, 'Hrají'),
basedOn: (0, movie_helper_1.getGroup)(el, 'Předloha'),
producers: (0, movie_helper_1.getGroup)(el, 'Produkce'),
filmEditing: (0, movie_helper_1.getGroup)(el, 'Střih'),
costumeDesign: (0, movie_helper_1.getGroup)(el, 'Kostýmy'),
productionDesign: (0, movie_helper_1.getGroup)(el, 'Scénografie')
},
vod: (0, movie_helper_1.getVods)(asideEl),
tags: (0, movie_helper_1.getTags)(asideEl),
premieres: (0, movie_helper_1.getPremieres)(asideEl),
related: (0, movie_helper_1.getBoxMovies)(asideEl, 'Související'),
similar: (0, movie_helper_1.getBoxMovies)(asideEl, 'Podobné')
};
}
}
exports.MovieScraper = MovieScraper;
;