UNPKG

node-csfd-api

Version:

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

63 lines (62 loc) 3.28 kB
"use strict"; 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;