node-csfd-api-racintom
Version:
ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)
81 lines (80 loc) • 3.49 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SearchScraper = void 0;
const node_html_parser_1 = require("node-html-parser");
const fetchers_1 = require("../fetchers");
const global_helper_1 = require("../helpers/global.helper");
const search_user_helper_1 = require("../helpers/search-user.helper");
const search_helper_1 = require("../helpers/search.helper");
const vars_1 = require("../vars");
class SearchScraper {
async search(text) {
const url = (0, vars_1.searchUrl)(text);
const response = await (0, fetchers_1.fetchPage)(url);
const html = (0, node_html_parser_1.parse)(response);
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);
}
parseSearch(moviesNode, usersNode, tvSeriesNode) {
const movies = [];
const users = [];
const tvSeries = [];
moviesNode.map((m) => {
const url = (0, search_helper_1.getUrl)(m);
const movie = {
id: (0, global_helper_1.parseIdFromUrl)(url),
title: (0, search_helper_1.getTitle)(m),
year: (0, search_helper_1.getYear)(m),
url: `https://www.csfd.cz${url}`,
type: (0, search_helper_1.getType)(m),
colorRating: (0, search_helper_1.getColorRating)(m),
poster: (0, search_helper_1.getPoster)(m),
origins: (0, search_helper_1.getOrigins)(m),
creators: {
directors: (0, search_helper_1.parsePeople)(m, 'directors'),
actors: (0, search_helper_1.parsePeople)(m, 'actors')
}
};
movies.push(movie);
});
usersNode.map((m) => {
const url = (0, search_user_helper_1.getUserUrl)(m);
const user = {
id: (0, global_helper_1.parseIdFromUrl)(url),
user: (0, search_user_helper_1.getUser)(m),
userRealName: (0, search_user_helper_1.getUserRealName)(m),
avatar: (0, search_user_helper_1.getAvatar)(m),
url: `https://www.csfd.cz${url}`
};
users.push(user);
});
tvSeriesNode.map((m) => {
const url = (0, search_helper_1.getUrl)(m);
const user = {
id: (0, global_helper_1.parseIdFromUrl)(url),
title: (0, search_helper_1.getTitle)(m),
year: (0, search_helper_1.getYear)(m),
url: `https://www.csfd.cz${url}`,
type: (0, search_helper_1.getType)(m),
colorRating: (0, search_helper_1.getColorRating)(m),
poster: (0, search_helper_1.getPoster)(m),
origins: (0, search_helper_1.getOrigins)(m),
creators: {
directors: (0, search_helper_1.parsePeople)(m, 'directors'),
actors: (0, search_helper_1.parsePeople)(m, 'actors')
}
};
tvSeries.push(user);
});
const search = {
movies: movies,
users: users,
tvSeries: tvSeries,
creators: []
};
return search;
}
}
exports.SearchScraper = SearchScraper;
;