UNPKG

node-csfd-api

Version:

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

59 lines (57 loc) 3.77 kB
const require_index = require('../fetchers/index.js'); const require_vars = require('../vars.js'); const require_movie_helper = require('../helpers/movie.helper.js'); let node_html_parser = require("node-html-parser"); //#region src/services/movie.service.ts var MovieScraper = class { async movie(movieId, options) { const id = Number(movieId); if (isNaN(id)) throw new Error("node-csfd-api: movieId must be a valid number"); const movieHtml = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.movieUrl(id, { language: options?.language }), { ...options?.request })); 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; return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd, options); } buildMovie(movieId, el, asideEl, pageClasses, jsonLd, options) { return { id: movieId, title: require_movie_helper.getMovieTitle(el), year: require_movie_helper.getMovieYear(jsonLd), duration: require_movie_helper.getMovieDuration(jsonLd, el), descriptions: require_movie_helper.getMovieDescriptions(el), genres: require_movie_helper.getMovieGenres(el), type: require_movie_helper.getMovieType(el), url: require_vars.movieUrl(movieId, { language: options?.language }), origins: require_movie_helper.getMovieOrigins(el), colorRating: require_movie_helper.getMovieColorRating(pageClasses), rating: require_movie_helper.getMovieRating(asideEl), ratingCount: require_movie_helper.getMovieRatingCount(asideEl), titlesOther: require_movie_helper.getMovieTitlesOther(el), poster: require_movie_helper.getMoviePoster(el), photo: require_movie_helper.getMovieRandomPhoto(el), trivia: require_movie_helper.getMovieTrivia(el), creators: { directors: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "directors")), writers: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "writers")), cinematography: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "cinematography")), music: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "music")), actors: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "actors")), basedOn: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "basedOn")), producers: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "producers")), filmEditing: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "filmEditing")), costumeDesign: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "costumeDesign")), productionDesign: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "productionDesign")) }, vod: require_movie_helper.getMovieVods(asideEl), tags: require_movie_helper.getMovieTags(asideEl), premieres: require_movie_helper.getMoviePremieres(asideEl), related: require_movie_helper.getMovieBoxMovies(asideEl, "Související"), similar: require_movie_helper.getMovieBoxMovies(asideEl, "Podobné") }; } }; //#endregion exports.MovieScraper = MovieScraper; //# sourceMappingURL=movie.service.js.map