UNPKG

node-csfd-api

Version:

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

80 lines (78 loc) 2.56 kB
import { fetchPage } from "../fetchers/index.mjs"; import { getUrlByLanguage, searchUrl } from "../vars.mjs"; import { parseIdFromUrl } from "../helpers/global.helper.mjs"; import { getAvatar, getUser, getUserRealName, getUserUrl } from "../helpers/search-user.helper.mjs"; import { getSearchColorRating, getSearchOrigins, getSearchPoster, getSearchTitle, getSearchType, getSearchUrl, getSearchYear, parseSearchPeople } from "../helpers/search.helper.mjs"; import { parse } from "node-html-parser"; //#region src/services/search.service.ts var SearchScraper = class { async search(text, options) { const html = parse(await fetchPage(searchUrl(text, { language: options?.language }), { ...options?.request })); const moviesNode = html.querySelectorAll(".main-movies article"); const usersNode = html.querySelectorAll(".main-users article"); const tvSeriesNode = html.querySelectorAll(".main-series article"); return this.parseSearch(moviesNode, usersNode, tvSeriesNode, options?.language); } parseSearch(moviesNode, usersNode, tvSeriesNode, language) { const movies = []; const users = []; const tvSeries = []; const baseUrl = getUrlByLanguage(language); moviesNode.forEach((m) => { const url = getSearchUrl(m); const movie = { id: parseIdFromUrl(url), title: getSearchTitle(m), year: getSearchYear(m), url: `${baseUrl}${url}`, type: getSearchType(m), colorRating: getSearchColorRating(m), poster: getSearchPoster(m), origins: getSearchOrigins(m), creators: { directors: parseSearchPeople(m, "directors"), actors: parseSearchPeople(m, "actors") } }; movies.push(movie); }); usersNode.forEach((m) => { const url = getUserUrl(m); const user = { id: parseIdFromUrl(url), user: getUser(m), userRealName: getUserRealName(m), avatar: getAvatar(m), url: `${baseUrl}${url}` }; users.push(user); }); tvSeriesNode.forEach((m) => { const url = getSearchUrl(m); const user = { id: parseIdFromUrl(url), title: getSearchTitle(m), year: getSearchYear(m), url: `${baseUrl}${url}`, type: getSearchType(m), colorRating: getSearchColorRating(m), poster: getSearchPoster(m), origins: getSearchOrigins(m), creators: { directors: parseSearchPeople(m, "directors"), actors: parseSearchPeople(m, "actors") } }; tvSeries.push(user); }); return { movies, users, tvSeries, creators: [] }; } }; //#endregion export { SearchScraper }; //# sourceMappingURL=search.service.mjs.map