node-csfd-api 3.0.0-next.22 → 3.0.0-next.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/{fetchers → cjs/fetchers}/index.js +13 -4
  2. package/cjs/index.js +58 -0
  3. package/cjs/services/cinema.service.js +45 -0
  4. package/cjs/services/creator.service.js +43 -0
  5. package/{services → cjs/services}/movie.service.js +21 -10
  6. package/{services → cjs/services}/search.service.js +19 -8
  7. package/{services → cjs/services}/user-ratings.service.js +36 -25
  8. package/esm/fetchers/index.js +13 -4
  9. package/esm/index.js +29 -10
  10. package/esm/services/cinema.service.js +18 -7
  11. package/esm/services/creator.service.js +19 -8
  12. package/esm/services/movie.service.js +21 -10
  13. package/esm/services/search.service.js +19 -8
  14. package/esm/services/user-ratings.service.js +36 -25
  15. package/package.json +11 -17
  16. package/types/index.ts +26 -0
  17. package/fetchers/fetch.polyfill.d.ts +0 -1
  18. package/fetchers/index.d.ts +0 -1
  19. package/helpers/cinema.helper.d.ts +0 -18
  20. package/helpers/creator.helper.d.ts +0 -17
  21. package/helpers/global.helper.d.ts +0 -17
  22. package/helpers/movie.helper.d.ts +0 -25
  23. package/helpers/search-user.helper.d.ts +0 -5
  24. package/helpers/search.helper.d.ts +0 -11
  25. package/helpers/user-ratings.helper.d.ts +0 -13
  26. package/index.d.ts +0 -24
  27. package/index.js +0 -39
  28. package/interfaces/cinema.interface.d.ts +0 -23
  29. package/interfaces/creator.interface.d.ts +0 -12
  30. package/interfaces/global.d.ts +0 -22
  31. package/interfaces/movie.interface.d.ts +0 -66
  32. package/interfaces/search.interface.d.ts +0 -27
  33. package/interfaces/user-ratings.interface.d.ts +0 -18
  34. package/services/cinema.service.d.ts +0 -6
  35. package/services/cinema.service.js +0 -34
  36. package/services/creator.service.d.ts +0 -6
  37. package/services/creator.service.js +0 -32
  38. package/services/movie.service.d.ts +0 -6
  39. package/services/search.service.d.ts +0 -5
  40. package/services/user-ratings.service.d.ts +0 -7
  41. package/vars.d.ts +0 -6
  42. /package/{fetchers → cjs/fetchers}/fetch.polyfill.js +0 -0
  43. /package/{helpers → cjs/helpers}/cinema.helper.js +0 -0
  44. /package/{helpers → cjs/helpers}/creator.helper.js +0 -0
  45. /package/{helpers → cjs/helpers}/global.helper.js +0 -0
  46. /package/{helpers → cjs/helpers}/movie.helper.js +0 -0
  47. /package/{helpers → cjs/helpers}/search-user.helper.js +0 -0
  48. /package/{helpers → cjs/helpers}/search.helper.js +0 -0
  49. /package/{helpers → cjs/helpers}/user-ratings.helper.js +0 -0
  50. /package/{interfaces → cjs/interfaces}/cinema.interface.js +0 -0
  51. /package/{interfaces → cjs/interfaces}/creator.interface.js +0 -0
  52. /package/{interfaces → cjs/interfaces}/global.js +0 -0
  53. /package/{interfaces → cjs/interfaces}/movie.interface.js +0 -0
  54. /package/{interfaces → cjs/interfaces}/search.interface.js +0 -0
  55. /package/{interfaces → cjs/interfaces}/user-ratings.interface.js +0 -0
  56. /package/{vars.js → cjs/vars.js} +0 -0
  57. /package/{esm/types → types}/fetchers/fetch.polyfill.d.ts +0 -0
  58. /package/{esm/types → types}/fetchers/index.d.ts +0 -0
  59. /package/{esm/types → types}/helpers/cinema.helper.d.ts +0 -0
  60. /package/{esm/types → types}/helpers/creator.helper.d.ts +0 -0
  61. /package/{esm/types → types}/helpers/global.helper.d.ts +0 -0
  62. /package/{esm/types → types}/helpers/movie.helper.d.ts +0 -0
  63. /package/{esm/types → types}/helpers/search-user.helper.d.ts +0 -0
  64. /package/{esm/types → types}/helpers/search.helper.d.ts +0 -0
  65. /package/{esm/types → types}/helpers/user-ratings.helper.d.ts +0 -0
  66. /package/{esm/types → types}/index.d.ts +0 -0
  67. /package/{esm/types → types}/interfaces/cinema.interface.d.ts +0 -0
  68. /package/{esm/types → types}/interfaces/creator.interface.d.ts +0 -0
  69. /package/{esm/types → types}/interfaces/global.d.ts +0 -0
  70. /package/{esm/types → types}/interfaces/movie.interface.d.ts +0 -0
  71. /package/{esm/types → types}/interfaces/search.interface.d.ts +0 -0
  72. /package/{esm/types → types}/interfaces/user-ratings.interface.d.ts +0 -0
  73. /package/{esm/types → types}/services/cinema.service.d.ts +0 -0
  74. /package/{esm/types → types}/services/creator.service.d.ts +0 -0
  75. /package/{esm/types → types}/services/movie.service.d.ts +0 -0
  76. /package/{esm/types → types}/services/search.service.d.ts +0 -0
  77. /package/{esm/types → types}/services/user-ratings.service.d.ts +0 -0
  78. /package/{esm/types → types}/vars.d.ts +0 -0
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.fetchPage = void 0;
4
13
  const fetch_polyfill_1 = require("./fetch.polyfill");
@@ -11,17 +20,17 @@ const USER_AGENTS = [
11
20
  const headers = {
12
21
  'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]
13
22
  };
14
- const fetchPage = async (url) => {
23
+ const fetchPage = (url) => __awaiter(void 0, void 0, void 0, function* () {
15
24
  try {
16
- const response = await (0, fetch_polyfill_1.fetchSafe)(url, { headers });
25
+ const response = yield (0, fetch_polyfill_1.fetchSafe)(url, { headers });
17
26
  if (response.status >= 400 && response.status < 600) {
18
27
  throw new Error(`node-csfd-api: Bad response ${response.status} for url: ${url}`);
19
28
  }
20
- return await response.text();
29
+ return yield response.text();
21
30
  }
22
31
  catch (e) {
23
32
  console.error(e);
24
33
  return 'Error';
25
34
  }
26
- };
35
+ });
27
36
  exports.fetchPage = fetchPage;
package/cjs/index.js ADDED
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.csfd = exports.Csfd = void 0;
13
+ const cinema_service_1 = require("./services/cinema.service");
14
+ const creator_service_1 = require("./services/creator.service");
15
+ const movie_service_1 = require("./services/movie.service");
16
+ const search_service_1 = require("./services/search.service");
17
+ const user_ratings_service_1 = require("./services/user-ratings.service");
18
+ class Csfd {
19
+ constructor(userRatingsService, movieService, creatorService, searchService, cinemaService) {
20
+ this.userRatingsService = userRatingsService;
21
+ this.movieService = movieService;
22
+ this.creatorService = creatorService;
23
+ this.searchService = searchService;
24
+ this.cinemaService = cinemaService;
25
+ }
26
+ userRatings(user, config) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ return this.userRatingsService.userRatings(user, config);
29
+ });
30
+ }
31
+ movie(movie) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ return this.movieService.movie(+movie);
34
+ });
35
+ }
36
+ creator(creator) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ return this.creatorService.creator(+creator);
39
+ });
40
+ }
41
+ search(text) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ return this.searchService.search(text);
44
+ });
45
+ }
46
+ cinema(district, period) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ return this.cinemaService.cinemas(+district, period);
49
+ });
50
+ }
51
+ }
52
+ exports.Csfd = Csfd;
53
+ const movieScraper = new movie_service_1.MovieScraper();
54
+ const userRatingsScraper = new user_ratings_service_1.UserRatingsScraper();
55
+ const cinemaScraper = new cinema_service_1.CinemaScraper();
56
+ const creatorScraper = new creator_service_1.CreatorScraper();
57
+ const searchScraper = new search_service_1.SearchScraper();
58
+ exports.csfd = new Csfd(userRatingsScraper, movieScraper, creatorScraper, searchScraper, cinemaScraper);
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CinemaScraper = void 0;
13
+ const node_html_parser_1 = require("node-html-parser");
14
+ const fetchers_1 = require("../fetchers");
15
+ const vars_1 = require("../vars");
16
+ const cinema_helper_1 = require("./../helpers/cinema.helper");
17
+ class CinemaScraper {
18
+ cinemas() {
19
+ return __awaiter(this, arguments, void 0, function* (district = 1, period = 'today') {
20
+ const url = (0, vars_1.cinemasUrl)(district, period);
21
+ const response = yield (0, fetchers_1.fetchPage)(url);
22
+ const cinemasHtml = (0, node_html_parser_1.parse)(response);
23
+ const contentNode = cinemasHtml.querySelectorAll('#snippet--cinemas section.box');
24
+ this.buildCinemas(contentNode);
25
+ return this.cinema;
26
+ });
27
+ }
28
+ buildCinemas(contentNode) {
29
+ const cinemas = [];
30
+ contentNode.forEach((x) => {
31
+ const cinemaInfo = (0, cinema_helper_1.parseCinema)(x);
32
+ const cinema = {
33
+ id: (0, cinema_helper_1.getCinemaId)(x),
34
+ name: cinemaInfo === null || cinemaInfo === void 0 ? void 0 : cinemaInfo.name,
35
+ city: cinemaInfo === null || cinemaInfo === void 0 ? void 0 : cinemaInfo.city,
36
+ url: (0, cinema_helper_1.getCinemaUrl)(x),
37
+ coords: (0, cinema_helper_1.getCoords)(x),
38
+ screenings: (0, cinema_helper_1.getGroupedFilmsByDate)(x)
39
+ };
40
+ cinemas.push(cinema);
41
+ });
42
+ this.cinema = cinemas;
43
+ }
44
+ }
45
+ exports.CinemaScraper = CinemaScraper;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreatorScraper = void 0;
13
+ const node_html_parser_1 = require("node-html-parser");
14
+ const fetchers_1 = require("../fetchers");
15
+ const creator_helper_1 = require("../helpers/creator.helper");
16
+ const vars_1 = require("../vars");
17
+ class CreatorScraper {
18
+ creator(creatorId) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const url = (0, vars_1.creatorUrl)(+creatorId);
21
+ const response = yield (0, fetchers_1.fetchPage)(url);
22
+ const creatorHtml = (0, node_html_parser_1.parse)(response);
23
+ const asideNode = creatorHtml.querySelector('.creator-about');
24
+ const filmsNode = creatorHtml.querySelector('.creator-filmography');
25
+ this.buildCreator(+creatorId, asideNode, filmsNode);
26
+ return this.person;
27
+ });
28
+ }
29
+ buildCreator(id, asideEl, filmsNode) {
30
+ var _a, _b, _c;
31
+ this.person = {
32
+ id,
33
+ name: (0, creator_helper_1.getName)(asideEl),
34
+ birthday: (_a = (0, creator_helper_1.getBirthdayInfo)(asideEl)) === null || _a === void 0 ? void 0 : _a.birthday,
35
+ birthplace: (_b = (0, creator_helper_1.getBirthdayInfo)(asideEl)) === null || _b === void 0 ? void 0 : _b.birthPlace,
36
+ photo: (0, creator_helper_1.getPhoto)(asideEl),
37
+ age: ((_c = (0, creator_helper_1.getBirthdayInfo)(asideEl)) === null || _c === void 0 ? void 0 : _c.age) || null,
38
+ bio: (0, creator_helper_1.getBio)(asideEl),
39
+ films: (0, creator_helper_1.getFilms)(filmsNode)
40
+ };
41
+ }
42
+ }
43
+ exports.CreatorScraper = CreatorScraper;
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.MovieScraper = void 0;
4
13
  const node_html_parser_1 = require("node-html-parser");
@@ -6,16 +15,18 @@ const fetchers_1 = require("../fetchers");
6
15
  const movie_helper_1 = require("../helpers/movie.helper");
7
16
  const vars_1 = require("../vars");
8
17
  class MovieScraper {
9
- async movie(movieId) {
10
- const url = (0, vars_1.movieUrl)(+movieId);
11
- const response = await (0, fetchers_1.fetchPage)(url);
12
- const movieHtml = (0, node_html_parser_1.parse)(response);
13
- const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');
14
- const asideNode = movieHtml.querySelector('.aside-movie-profile');
15
- const movieNode = movieHtml.querySelector('.main-movie-profile');
16
- const jsonLd = movieHtml.querySelector('script[type="application/ld+json"]').innerText;
17
- this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
18
- return this.film;
18
+ movie(movieId) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const url = (0, vars_1.movieUrl)(+movieId);
21
+ const response = yield (0, fetchers_1.fetchPage)(url);
22
+ const movieHtml = (0, node_html_parser_1.parse)(response);
23
+ const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');
24
+ const asideNode = movieHtml.querySelector('.aside-movie-profile');
25
+ const movieNode = movieHtml.querySelector('.main-movie-profile');
26
+ const jsonLd = movieHtml.querySelector('script[type="application/ld+json"]').innerText;
27
+ this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
28
+ return this.film;
29
+ });
19
30
  }
20
31
  buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
21
32
  this.film = {
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.SearchScraper = void 0;
4
13
  const node_html_parser_1 = require("node-html-parser");
@@ -8,14 +17,16 @@ const search_user_helper_1 = require("../helpers/search-user.helper");
8
17
  const search_helper_1 = require("../helpers/search.helper");
9
18
  const vars_1 = require("../vars");
10
19
  class SearchScraper {
11
- async search(text) {
12
- const url = (0, vars_1.searchUrl)(text);
13
- const response = await (0, fetchers_1.fetchPage)(url);
14
- const html = (0, node_html_parser_1.parse)(response);
15
- const moviesNode = html.querySelectorAll('.main-movies article');
16
- const usersNode = html.querySelectorAll('.main-users article');
17
- const tvSeriesNode = html.querySelectorAll('.main-series article');
18
- return this.parseSearch(moviesNode, usersNode, tvSeriesNode);
20
+ search(text) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const url = (0, vars_1.searchUrl)(text);
23
+ const response = yield (0, fetchers_1.fetchPage)(url);
24
+ const html = (0, node_html_parser_1.parse)(response);
25
+ const moviesNode = html.querySelectorAll('.main-movies article');
26
+ const usersNode = html.querySelectorAll('.main-users article');
27
+ const tvSeriesNode = html.querySelectorAll('.main-series article');
28
+ return this.parseSearch(moviesNode, usersNode, tvSeriesNode);
29
+ });
19
30
  }
20
31
  parseSearch(moviesNode, usersNode, tvSeriesNode) {
21
32
  const movies = [];
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.UserRatingsScraper = void 0;
4
13
  const node_html_parser_1 = require("node-html-parser");
@@ -9,34 +18,36 @@ class UserRatingsScraper {
9
18
  constructor() {
10
19
  this.films = [];
11
20
  }
12
- async userRatings(user, config) {
13
- let allMovies = [];
14
- const url = (0, vars_1.userRatingsUrl)(user);
15
- const response = await (0, fetchers_1.fetchPage)(url);
16
- const items = (0, node_html_parser_1.parse)(response);
17
- const movies = items.querySelectorAll('.box-user-rating .table-container tbody tr');
18
- // Get number of pages
19
- const pagesNode = items.querySelector('.pagination');
20
- const pages = +(pagesNode === null || pagesNode === void 0 ? void 0 : pagesNode.childNodes[pagesNode.childNodes.length - 4].rawText) || 1;
21
- allMovies = this.getPage(config, movies);
22
- if (config === null || config === void 0 ? void 0 : config.allPages) {
23
- console.log('User', user, url);
24
- console.log('Fetching all pages', pages);
25
- for (let i = 2; i <= pages; i++) {
26
- console.log('Fetching page', i, 'out of', pages, '...');
27
- const url = (0, vars_1.userRatingsUrl)(user, i);
28
- const response = await (0, fetchers_1.fetchPage)(url);
29
- const items = (0, node_html_parser_1.parse)(response);
30
- const movies = items.querySelectorAll('.box-user-rating .table-container tbody tr');
31
- allMovies = [...this.getPage(config, movies)];
32
- // Sleep
33
- if (config.allPagesDelay) {
34
- await (0, user_ratings_helper_1.sleep)(config.allPagesDelay);
21
+ userRatings(user, config) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ let allMovies = [];
24
+ const url = (0, vars_1.userRatingsUrl)(user);
25
+ const response = yield (0, fetchers_1.fetchPage)(url);
26
+ const items = (0, node_html_parser_1.parse)(response);
27
+ const movies = items.querySelectorAll('.box-user-rating .table-container tbody tr');
28
+ // Get number of pages
29
+ const pagesNode = items.querySelector('.pagination');
30
+ const pages = +(pagesNode === null || pagesNode === void 0 ? void 0 : pagesNode.childNodes[pagesNode.childNodes.length - 4].rawText) || 1;
31
+ allMovies = this.getPage(config, movies);
32
+ if (config === null || config === void 0 ? void 0 : config.allPages) {
33
+ console.log('User', user, url);
34
+ console.log('Fetching all pages', pages);
35
+ for (let i = 2; i <= pages; i++) {
36
+ console.log('Fetching page', i, 'out of', pages, '...');
37
+ const url = (0, vars_1.userRatingsUrl)(user, i);
38
+ const response = yield (0, fetchers_1.fetchPage)(url);
39
+ const items = (0, node_html_parser_1.parse)(response);
40
+ const movies = items.querySelectorAll('.box-user-rating .table-container tbody tr');
41
+ allMovies = [...this.getPage(config, movies)];
42
+ // Sleep
43
+ if (config.allPagesDelay) {
44
+ yield (0, user_ratings_helper_1.sleep)(config.allPagesDelay);
45
+ }
35
46
  }
47
+ return allMovies;
36
48
  }
37
49
  return allMovies;
38
- }
39
- return allMovies;
50
+ });
40
51
  }
41
52
  getPage(config, movies) {
42
53
  var _a, _b, _c, _d;
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { fetchSafe } from './fetch.polyfill';
2
11
  const USER_AGENTS = [
3
12
  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
@@ -8,16 +17,16 @@ const USER_AGENTS = [
8
17
  const headers = {
9
18
  'User-Agent': USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]
10
19
  };
11
- export const fetchPage = async (url) => {
20
+ export const fetchPage = (url) => __awaiter(void 0, void 0, void 0, function* () {
12
21
  try {
13
- const response = await fetchSafe(url, { headers });
22
+ const response = yield fetchSafe(url, { headers });
14
23
  if (response.status >= 400 && response.status < 600) {
15
24
  throw new Error(`node-csfd-api: Bad response ${response.status} for url: ${url}`);
16
25
  }
17
- return await response.text();
26
+ return yield response.text();
18
27
  }
19
28
  catch (e) {
20
29
  console.error(e);
21
30
  return 'Error';
22
31
  }
23
- };
32
+ });
package/esm/index.js CHANGED
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { CinemaScraper } from './services/cinema.service';
2
11
  import { CreatorScraper } from './services/creator.service';
3
12
  import { MovieScraper } from './services/movie.service';
@@ -11,20 +20,30 @@ export class Csfd {
11
20
  this.searchService = searchService;
12
21
  this.cinemaService = cinemaService;
13
22
  }
14
- async userRatings(user, config) {
15
- return this.userRatingsService.userRatings(user, config);
23
+ userRatings(user, config) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ return this.userRatingsService.userRatings(user, config);
26
+ });
16
27
  }
17
- async movie(movie) {
18
- return this.movieService.movie(+movie);
28
+ movie(movie) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ return this.movieService.movie(+movie);
31
+ });
19
32
  }
20
- async creator(creator) {
21
- return this.creatorService.creator(+creator);
33
+ creator(creator) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ return this.creatorService.creator(+creator);
36
+ });
22
37
  }
23
- async search(text) {
24
- return this.searchService.search(text);
38
+ search(text) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ return this.searchService.search(text);
41
+ });
25
42
  }
26
- async cinema(district, period) {
27
- return this.cinemaService.cinemas(+district, period);
43
+ cinema(district, period) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ return this.cinemaService.cinemas(+district, period);
46
+ });
28
47
  }
29
48
  }
30
49
  const movieScraper = new MovieScraper();
@@ -1,15 +1,26 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { parse } from 'node-html-parser';
2
11
  import { fetchPage } from '../fetchers';
3
12
  import { cinemasUrl } from '../vars';
4
13
  import { getCinemaId, getCinemaUrl, getCoords, getGroupedFilmsByDate, parseCinema } from './../helpers/cinema.helper';
5
14
  export class CinemaScraper {
6
- async cinemas(district = 1, period = 'today') {
7
- const url = cinemasUrl(district, period);
8
- const response = await fetchPage(url);
9
- const cinemasHtml = parse(response);
10
- const contentNode = cinemasHtml.querySelectorAll('#snippet--cinemas section.box');
11
- this.buildCinemas(contentNode);
12
- return this.cinema;
15
+ cinemas() {
16
+ return __awaiter(this, arguments, void 0, function* (district = 1, period = 'today') {
17
+ const url = cinemasUrl(district, period);
18
+ const response = yield fetchPage(url);
19
+ const cinemasHtml = parse(response);
20
+ const contentNode = cinemasHtml.querySelectorAll('#snippet--cinemas section.box');
21
+ this.buildCinemas(contentNode);
22
+ return this.cinema;
23
+ });
13
24
  }
14
25
  buildCinemas(contentNode) {
15
26
  const cinemas = [];
@@ -1,16 +1,27 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { parse } from 'node-html-parser';
2
11
  import { fetchPage } from '../fetchers';
3
12
  import { getBio, getBirthdayInfo, getFilms, getName, getPhoto } from '../helpers/creator.helper';
4
13
  import { creatorUrl } from '../vars';
5
14
  export class CreatorScraper {
6
- async creator(creatorId) {
7
- const url = creatorUrl(+creatorId);
8
- const response = await fetchPage(url);
9
- const creatorHtml = parse(response);
10
- const asideNode = creatorHtml.querySelector('.creator-about');
11
- const filmsNode = creatorHtml.querySelector('.creator-filmography');
12
- this.buildCreator(+creatorId, asideNode, filmsNode);
13
- return this.person;
15
+ creator(creatorId) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const url = creatorUrl(+creatorId);
18
+ const response = yield fetchPage(url);
19
+ const creatorHtml = parse(response);
20
+ const asideNode = creatorHtml.querySelector('.creator-about');
21
+ const filmsNode = creatorHtml.querySelector('.creator-filmography');
22
+ this.buildCreator(+creatorId, asideNode, filmsNode);
23
+ return this.person;
24
+ });
14
25
  }
15
26
  buildCreator(id, asideEl, filmsNode) {
16
27
  var _a, _b, _c;
@@ -1,18 +1,29 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { parse } from 'node-html-parser';
2
11
  import { fetchPage } from '../fetchers';
3
12
  import { getBoxMovies, getColorRating, getDescriptions, getDuration, getGenres, getGroup, getOrigins, getPoster, getPremieres, getRandomPhoto, getRating, getRatingCount, getTags, getTitle, getTitlesOther, getTrivia, getType, getVods, getYear } from '../helpers/movie.helper';
4
13
  import { movieUrl } from '../vars';
5
14
  export class MovieScraper {
6
- async movie(movieId) {
7
- const url = movieUrl(+movieId);
8
- const response = await fetchPage(url);
9
- const movieHtml = parse(response);
10
- const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');
11
- const asideNode = movieHtml.querySelector('.aside-movie-profile');
12
- const movieNode = movieHtml.querySelector('.main-movie-profile');
13
- const jsonLd = movieHtml.querySelector('script[type="application/ld+json"]').innerText;
14
- this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
15
- return this.film;
15
+ movie(movieId) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const url = movieUrl(+movieId);
18
+ const response = yield fetchPage(url);
19
+ const movieHtml = parse(response);
20
+ const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');
21
+ const asideNode = movieHtml.querySelector('.aside-movie-profile');
22
+ const movieNode = movieHtml.querySelector('.main-movie-profile');
23
+ const jsonLd = movieHtml.querySelector('script[type="application/ld+json"]').innerText;
24
+ this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
25
+ return this.film;
26
+ });
16
27
  }
17
28
  buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
18
29
  this.film = {
@@ -1,3 +1,12 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { parse } from 'node-html-parser';
2
11
  import { fetchPage } from '../fetchers';
3
12
  import { parseIdFromUrl } from '../helpers/global.helper';
@@ -5,14 +14,16 @@ import { getAvatar, getUser, getUserRealName, getUserUrl } from '../helpers/sear
5
14
  import { getColorRating, getOrigins, getPoster, getTitle, getType, getUrl, getYear, parsePeople } from '../helpers/search.helper';
6
15
  import { searchUrl } from '../vars';
7
16
  export class SearchScraper {
8
- async search(text) {
9
- const url = searchUrl(text);
10
- const response = await fetchPage(url);
11
- const html = parse(response);
12
- const moviesNode = html.querySelectorAll('.main-movies article');
13
- const usersNode = html.querySelectorAll('.main-users article');
14
- const tvSeriesNode = html.querySelectorAll('.main-series article');
15
- return this.parseSearch(moviesNode, usersNode, tvSeriesNode);
17
+ search(text) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const url = searchUrl(text);
20
+ const response = yield fetchPage(url);
21
+ const html = parse(response);
22
+ const moviesNode = html.querySelectorAll('.main-movies article');
23
+ const usersNode = html.querySelectorAll('.main-users article');
24
+ const tvSeriesNode = html.querySelectorAll('.main-series article');
25
+ return this.parseSearch(moviesNode, usersNode, tvSeriesNode);
26
+ });
16
27
  }
17
28
  parseSearch(moviesNode, usersNode, tvSeriesNode) {
18
29
  const movies = [];