node-csfd-api
Version:
ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)
59 lines (57 loc) • 3.77 kB
JavaScript
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