UNPKG

node-csfd-api

Version:

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

59 lines (57 loc) 3.19 kB
import { fetchPage } from "../fetchers/index.mjs"; import { movieUrl } from "../vars.mjs"; import { getLocalizedCreatorLabel, getMovieBoxMovies, getMovieColorRating, getMovieDescriptions, getMovieDuration, getMovieGenres, getMovieGroup, getMovieOrigins, getMoviePoster, getMoviePremieres, getMovieRandomPhoto, getMovieRating, getMovieRatingCount, getMovieTags, getMovieTitle, getMovieTitlesOther, getMovieTrivia, getMovieType, getMovieVods, getMovieYear } from "../helpers/movie.helper.mjs"; import { parse } from "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 = parse(await fetchPage(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: getMovieTitle(el), year: getMovieYear(jsonLd), duration: getMovieDuration(jsonLd, el), descriptions: getMovieDescriptions(el), genres: getMovieGenres(el), type: getMovieType(el), url: movieUrl(movieId, { language: options?.language }), origins: getMovieOrigins(el), colorRating: getMovieColorRating(pageClasses), rating: getMovieRating(asideEl), ratingCount: getMovieRatingCount(asideEl), titlesOther: getMovieTitlesOther(el), poster: getMoviePoster(el), photo: getMovieRandomPhoto(el), trivia: getMovieTrivia(el), creators: { directors: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "directors")), writers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "writers")), cinematography: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "cinematography")), music: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "music")), actors: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "actors")), basedOn: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "basedOn")), producers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "producers")), filmEditing: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "filmEditing")), costumeDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "costumeDesign")), productionDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "productionDesign")) }, vod: getMovieVods(asideEl), tags: getMovieTags(asideEl), premieres: getMoviePremieres(asideEl), related: getMovieBoxMovies(asideEl, "Související"), similar: getMovieBoxMovies(asideEl, "Podobné") }; } }; //#endregion export { MovieScraper }; //# sourceMappingURL=movie.service.mjs.map