node-csfd-api 2.14.4 → 3.0.0-alpha.1

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 (114) hide show
  1. package/LICENSE +21 -0
  2. package/_virtual/rolldown_runtime.js +25 -0
  3. package/dto/cinema.d.mts +28 -0
  4. package/dto/cinema.d.ts +28 -0
  5. package/dto/creator.d.mts +17 -0
  6. package/dto/creator.d.ts +17 -0
  7. package/dto/global.d.mts +26 -0
  8. package/dto/global.d.ts +26 -0
  9. package/dto/movie.d.mts +71 -0
  10. package/dto/movie.d.ts +71 -0
  11. package/dto/search.d.mts +32 -0
  12. package/dto/search.d.ts +32 -0
  13. package/dto/user-ratings.d.mts +23 -0
  14. package/dto/user-ratings.d.ts +23 -0
  15. package/fetchers/fetch.polyfill.js +10 -9
  16. package/fetchers/fetch.polyfill.js.map +1 -0
  17. package/fetchers/fetch.polyfill.mjs +8 -0
  18. package/fetchers/fetch.polyfill.mjs.map +1 -0
  19. package/fetchers/fetchers.js +24 -0
  20. package/fetchers/fetchers.js.map +1 -0
  21. package/fetchers/fetchers.mjs +24 -0
  22. package/fetchers/fetchers.mjs.map +1 -0
  23. package/helpers/cinema.helper.js +70 -91
  24. package/helpers/cinema.helper.js.map +1 -0
  25. package/helpers/cinema.helper.mjs +80 -0
  26. package/helpers/cinema.helper.mjs.map +1 -0
  27. package/helpers/creator.helper.js +64 -78
  28. package/helpers/creator.helper.js.map +1 -0
  29. package/helpers/creator.helper.mjs +69 -0
  30. package/helpers/creator.helper.mjs.map +1 -0
  31. package/helpers/global.helper.js +37 -55
  32. package/helpers/global.helper.js.map +1 -0
  33. package/helpers/global.helper.mjs +45 -0
  34. package/helpers/global.helper.mjs.map +1 -0
  35. package/helpers/movie.helper.js +161 -252
  36. package/helpers/movie.helper.js.map +1 -0
  37. package/helpers/movie.helper.mjs +144 -0
  38. package/helpers/movie.helper.mjs.map +1 -0
  39. package/helpers/search-user.helper.js +20 -18
  40. package/helpers/search-user.helper.js.map +1 -0
  41. package/helpers/search-user.helper.mjs +24 -0
  42. package/helpers/search-user.helper.mjs.map +1 -0
  43. package/helpers/search.helper.js +52 -62
  44. package/helpers/search.helper.js.map +1 -0
  45. package/helpers/search.helper.mjs +45 -0
  46. package/helpers/search.helper.mjs.map +1 -0
  47. package/helpers/user-ratings.helper.js +47 -56
  48. package/helpers/user-ratings.helper.js.map +1 -0
  49. package/helpers/user-ratings.helper.mjs +44 -0
  50. package/helpers/user-ratings.helper.mjs.map +1 -0
  51. package/index.d.mts +30 -0
  52. package/index.d.ts +29 -23
  53. package/index.js +41 -38
  54. package/index.js.map +1 -0
  55. package/index.mjs +41 -0
  56. package/index.mjs.map +1 -0
  57. package/package.json +11 -25
  58. package/services/cinema.service.d.mts +11 -0
  59. package/services/cinema.service.d.ts +10 -5
  60. package/services/cinema.service.js +34 -33
  61. package/services/cinema.service.js.map +1 -0
  62. package/services/cinema.service.mjs +33 -0
  63. package/services/cinema.service.mjs.map +1 -0
  64. package/services/creator.service.d.mts +11 -0
  65. package/services/creator.service.d.ts +10 -5
  66. package/services/creator.service.js +34 -35
  67. package/services/creator.service.js.map +1 -0
  68. package/services/creator.service.mjs +33 -0
  69. package/services/creator.service.mjs.map +1 -0
  70. package/services/movie.service.d.mts +11 -0
  71. package/services/movie.service.d.ts +10 -5
  72. package/services/movie.service.js +61 -61
  73. package/services/movie.service.js.map +1 -0
  74. package/services/movie.service.mjs +60 -0
  75. package/services/movie.service.mjs.map +1 -0
  76. package/services/search.service.d.mts +10 -0
  77. package/services/search.service.d.ts +9 -4
  78. package/services/search.service.js +80 -79
  79. package/services/search.service.js.map +1 -0
  80. package/services/search.service.mjs +79 -0
  81. package/services/search.service.mjs.map +1 -0
  82. package/services/user-ratings.service.d.mts +12 -0
  83. package/services/user-ratings.service.d.ts +11 -6
  84. package/services/user-ratings.service.js +63 -81
  85. package/services/user-ratings.service.js.map +1 -0
  86. package/services/user-ratings.service.mjs +64 -0
  87. package/services/user-ratings.service.mjs.map +1 -0
  88. package/vars.js +11 -9
  89. package/vars.js.map +1 -0
  90. package/vars.mjs +12 -0
  91. package/vars.mjs.map +1 -0
  92. package/fetchers/fetch.polyfill.d.ts +0 -1
  93. package/fetchers/index.d.ts +0 -1
  94. package/fetchers/index.js +0 -27
  95. package/helpers/cinema.helper.d.ts +0 -18
  96. package/helpers/creator.helper.d.ts +0 -17
  97. package/helpers/global.helper.d.ts +0 -17
  98. package/helpers/movie.helper.d.ts +0 -25
  99. package/helpers/search-user.helper.d.ts +0 -5
  100. package/helpers/search.helper.d.ts +0 -11
  101. package/helpers/user-ratings.helper.d.ts +0 -13
  102. package/interfaces/cinema.interface.d.ts +0 -23
  103. package/interfaces/cinema.interface.js +0 -2
  104. package/interfaces/creator.interface.d.ts +0 -12
  105. package/interfaces/creator.interface.js +0 -2
  106. package/interfaces/global.d.ts +0 -22
  107. package/interfaces/global.js +0 -2
  108. package/interfaces/movie.interface.d.ts +0 -66
  109. package/interfaces/movie.interface.js +0 -2
  110. package/interfaces/search.interface.d.ts +0 -27
  111. package/interfaces/search.interface.js +0 -2
  112. package/interfaces/user-ratings.interface.d.ts +0 -18
  113. package/interfaces/user-ratings.interface.js +0 -2
  114. package/vars.d.ts +0 -6
@@ -1,62 +1,62 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MovieScraper = void 0;
4
- const node_html_parser_1 = require("node-html-parser");
5
- const fetchers_1 = require("../fetchers");
6
- const movie_helper_1 = require("../helpers/movie.helper");
7
- const vars_1 = require("../vars");
8
- class MovieScraper {
9
- async movie(movieId) {
10
- const id = Number(movieId);
11
- if (isNaN(id)) {
12
- throw new Error('node-csfd-api: movieId must be a valid number');
13
- }
14
- const url = (0, vars_1.movieUrl)(id);
15
- const response = await (0, fetchers_1.fetchPage)(url);
16
- const movieHtml = (0, node_html_parser_1.parse)(response);
17
- const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');
18
- const asideNode = movieHtml.querySelector('.aside-movie-profile');
19
- const movieNode = movieHtml.querySelector('.main-movie-profile');
20
- const jsonLd = movieHtml.querySelector('script[type="application/ld+json"]').innerText;
21
- this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
22
- return this.film;
23
- }
24
- buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
25
- this.film = {
26
- id: movieId,
27
- title: (0, movie_helper_1.getTitle)(el),
28
- year: (0, movie_helper_1.getYear)(jsonLd),
29
- duration: (0, movie_helper_1.getDuration)(jsonLd, el),
30
- descriptions: (0, movie_helper_1.getDescriptions)(el),
31
- genres: (0, movie_helper_1.getGenres)(el),
32
- type: (0, movie_helper_1.getType)(el),
33
- url: (0, vars_1.movieUrl)(movieId),
34
- origins: (0, movie_helper_1.getOrigins)(el),
35
- colorRating: (0, movie_helper_1.getColorRating)(pageClasses),
36
- rating: (0, movie_helper_1.getRating)(asideEl),
37
- ratingCount: (0, movie_helper_1.getRatingCount)(asideEl),
38
- titlesOther: (0, movie_helper_1.getTitlesOther)(el),
39
- poster: (0, movie_helper_1.getPoster)(el),
40
- photo: (0, movie_helper_1.getRandomPhoto)(el),
41
- trivia: (0, movie_helper_1.getTrivia)(el),
42
- creators: {
43
- directors: (0, movie_helper_1.getGroup)(el, 'Režie'),
44
- writers: (0, movie_helper_1.getGroup)(el, 'Scénář'),
45
- cinematography: (0, movie_helper_1.getGroup)(el, 'Kamera'),
46
- music: (0, movie_helper_1.getGroup)(el, 'Hudba'),
47
- actors: (0, movie_helper_1.getGroup)(el, 'Hrají'),
48
- basedOn: (0, movie_helper_1.getGroup)(el, 'Předloha'),
49
- producers: (0, movie_helper_1.getGroup)(el, 'Produkce'),
50
- filmEditing: (0, movie_helper_1.getGroup)(el, 'Střih'),
51
- costumeDesign: (0, movie_helper_1.getGroup)(el, 'Kostýmy'),
52
- productionDesign: (0, movie_helper_1.getGroup)(el, 'Scénografie')
53
- },
54
- vod: (0, movie_helper_1.getVods)(asideEl),
55
- tags: (0, movie_helper_1.getTags)(asideEl),
56
- premieres: (0, movie_helper_1.getPremieres)(asideEl),
57
- related: (0, movie_helper_1.getBoxMovies)(asideEl, 'Související'),
58
- similar: (0, movie_helper_1.getBoxMovies)(asideEl, 'Podobné')
59
- };
60
- }
61
- }
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
2
+ const require_fetchers = require('../fetchers/fetchers.js');
3
+ const require_vars = require('../vars.js');
4
+ const require_movie_helper = require('../helpers/movie.helper.js');
5
+ let node_html_parser = require("node-html-parser");
6
+ node_html_parser = require_rolldown_runtime.__toESM(node_html_parser);
7
+
8
+ //#region src/services/movie.service.ts
9
+ var MovieScraper = class {
10
+ async movie(movieId) {
11
+ const id = Number(movieId);
12
+ if (isNaN(id)) throw new Error("node-csfd-api: movieId must be a valid number");
13
+ const movieHtml = (0, node_html_parser.parse)(await require_fetchers.fetchPage(require_vars.movieUrl(id)));
14
+ const pageClasses = movieHtml.querySelector(".page-content").classNames.split(" ");
15
+ const asideNode = movieHtml.querySelector(".aside-movie-profile");
16
+ const movieNode = movieHtml.querySelector(".main-movie-profile");
17
+ const jsonLd = movieHtml.querySelector("script[type=\"application/ld+json\"]").innerText;
18
+ this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
19
+ return this.film;
20
+ }
21
+ buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
22
+ this.film = {
23
+ id: movieId,
24
+ title: require_movie_helper.getMovieTitle(el),
25
+ year: require_movie_helper.getMovieYear(jsonLd),
26
+ duration: require_movie_helper.getMovieDuration(jsonLd, el),
27
+ descriptions: require_movie_helper.getMovieDescriptions(el),
28
+ genres: require_movie_helper.getMovieGenres(el),
29
+ type: require_movie_helper.getMovieType(el),
30
+ url: require_vars.movieUrl(movieId),
31
+ origins: require_movie_helper.getMovieOrigins(el),
32
+ colorRating: require_movie_helper.getMovieColorRating(pageClasses),
33
+ rating: require_movie_helper.getMovieRating(asideEl),
34
+ ratingCount: require_movie_helper.getMovieRatingCount(asideEl),
35
+ titlesOther: require_movie_helper.getMovieTitlesOther(el),
36
+ poster: require_movie_helper.getMoviePoster(el),
37
+ photo: require_movie_helper.getMovieRandomPhoto(el),
38
+ trivia: require_movie_helper.getMovieTrivia(el),
39
+ creators: {
40
+ directors: require_movie_helper.getMovieGroup(el, "Režie"),
41
+ writers: require_movie_helper.getMovieGroup(el, "Scénář"),
42
+ cinematography: require_movie_helper.getMovieGroup(el, "Kamera"),
43
+ music: require_movie_helper.getMovieGroup(el, "Hudba"),
44
+ actors: require_movie_helper.getMovieGroup(el, "Hrají"),
45
+ basedOn: require_movie_helper.getMovieGroup(el, "Předloha"),
46
+ producers: require_movie_helper.getMovieGroup(el, "Produkce"),
47
+ filmEditing: require_movie_helper.getMovieGroup(el, "Střih"),
48
+ costumeDesign: require_movie_helper.getMovieGroup(el, "Kostýmy"),
49
+ productionDesign: require_movie_helper.getMovieGroup(el, "Scénografie")
50
+ },
51
+ vod: require_movie_helper.getMovieVods(asideEl),
52
+ tags: require_movie_helper.getMovieTags(asideEl),
53
+ premieres: require_movie_helper.getMoviePremieres(asideEl),
54
+ related: require_movie_helper.getMovieBoxMovies(asideEl, "Související"),
55
+ similar: require_movie_helper.getMovieBoxMovies(asideEl, "Podobné")
56
+ };
57
+ }
58
+ };
59
+
60
+ //#endregion
62
61
  exports.MovieScraper = MovieScraper;
62
+ //# sourceMappingURL=movie.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"movie.service.js","names":["fetchPage","movieUrl","getMovieTitle","getMovieYear","getMovieDuration","getMovieDescriptions","getMovieGenres","getMovieType","getMovieOrigins","getMovieColorRating","getMovieRating","getMovieRatingCount","getMovieTitlesOther","getMoviePoster","getMovieRandomPhoto","getMovieTrivia","getMovieGroup","getMovieVods","getMovieTags","getMoviePremieres","getMovieBoxMovies"],"sources":["../../src/services/movie.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDFilmTypes } from '../dto/global';\nimport { CSFDMovie } from '../dto/movie';\nimport { fetchPage } from '../fetchers/fetchers.js';\nimport {\n getMovieBoxMovies,\n getMovieColorRating,\n getMovieDescriptions,\n getMovieDuration,\n getMovieGenres,\n getMovieGroup,\n getMovieOrigins,\n getMoviePoster,\n getMoviePremieres,\n getMovieRandomPhoto,\n getMovieRating,\n getMovieRatingCount,\n getMovieTags,\n getMovieTitle,\n getMovieTitlesOther,\n getMovieTrivia,\n getMovieType,\n getMovieVods,\n getMovieYear\n} from '../helpers/movie.helper.js';\nimport { movieUrl } from '../vars.js';\n\nexport class MovieScraper {\n private film: CSFDMovie;\n\n public async movie(movieId: number): Promise<CSFDMovie> {\n const id = Number(movieId);\n if (isNaN(id)) {\n throw new Error('node-csfd-api: movieId must be a valid number');\n }\n const url = movieUrl(id);\n const response = await fetchPage(url);\n\n const movieHtml = parse(response);\n\n const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');\n const asideNode = movieHtml.querySelector('.aside-movie-profile');\n const movieNode = movieHtml.querySelector('.main-movie-profile');\n const jsonLd = movieHtml.querySelector('script[type=\"application/ld+json\"]').innerText;\n this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);\n return this.film;\n }\n\n private buildMovie(\n movieId: number,\n el: HTMLElement,\n asideEl: HTMLElement,\n pageClasses: string[],\n jsonLd: string\n ) {\n this.film = {\n id: movieId,\n title: getMovieTitle(el),\n year: getMovieYear(jsonLd),\n duration: getMovieDuration(jsonLd, el),\n descriptions: getMovieDescriptions(el),\n genres: getMovieGenres(el),\n type: getMovieType(el) as CSFDFilmTypes,\n url: movieUrl(movieId),\n origins: getMovieOrigins(el),\n colorRating: getMovieColorRating(pageClasses),\n rating: getMovieRating(asideEl),\n ratingCount: getMovieRatingCount(asideEl),\n titlesOther: getMovieTitlesOther(el),\n poster: getMoviePoster(el),\n photo: getMovieRandomPhoto(el),\n trivia: getMovieTrivia(el),\n creators: {\n directors: getMovieGroup(el, 'Režie'),\n writers: getMovieGroup(el, 'Scénář'),\n cinematography: getMovieGroup(el, 'Kamera'),\n music: getMovieGroup(el, 'Hudba'),\n actors: getMovieGroup(el, 'Hrají'),\n basedOn: getMovieGroup(el, 'Předloha'),\n producers: getMovieGroup(el, 'Produkce'),\n filmEditing: getMovieGroup(el, 'Střih'),\n costumeDesign: getMovieGroup(el, 'Kostýmy'),\n productionDesign: getMovieGroup(el, 'Scénografie')\n },\n vod: getMovieVods(asideEl),\n tags: getMovieTags(asideEl),\n premieres: getMoviePremieres(asideEl),\n related: getMovieBoxMovies(asideEl, 'Související'),\n similar: getMovieBoxMovies(asideEl, 'Podobné')\n };\n }\n}\n"],"mappings":";;;;;;;;AA2BA,IAAa,eAAb,MAA0B;CAGxB,MAAa,MAAM,SAAqC;EACtD,MAAM,KAAK,OAAO,QAAQ;AAC1B,MAAI,MAAM,GAAG,CACX,OAAM,IAAI,MAAM,gDAAgD;EAKlE,MAAM,wCAFW,MAAMA,2BADXC,sBAAS,GAAG,CACa,CAEJ;EAEjC,MAAM,cAAc,UAAU,cAAc,gBAAgB,CAAC,WAAW,MAAM,IAAI;EAClF,MAAM,YAAY,UAAU,cAAc,uBAAuB;EACjE,MAAM,YAAY,UAAU,cAAc,sBAAsB;EAChE,MAAM,SAAS,UAAU,cAAc,uCAAqC,CAAC;AAC7E,OAAK,WAAW,CAAC,SAAS,WAAW,WAAW,aAAa,OAAO;AACpE,SAAO,KAAK;;CAGd,AAAQ,WACN,SACA,IACA,SACA,aACA,QACA;AACA,OAAK,OAAO;GACV,IAAI;GACJ,OAAOC,mCAAc,GAAG;GACxB,MAAMC,kCAAa,OAAO;GAC1B,UAAUC,sCAAiB,QAAQ,GAAG;GACtC,cAAcC,0CAAqB,GAAG;GACtC,QAAQC,oCAAe,GAAG;GAC1B,MAAMC,kCAAa,GAAG;GACtB,KAAKN,sBAAS,QAAQ;GACtB,SAASO,qCAAgB,GAAG;GAC5B,aAAaC,yCAAoB,YAAY;GAC7C,QAAQC,oCAAe,QAAQ;GAC/B,aAAaC,yCAAoB,QAAQ;GACzC,aAAaC,yCAAoB,GAAG;GACpC,QAAQC,oCAAe,GAAG;GAC1B,OAAOC,yCAAoB,GAAG;GAC9B,QAAQC,oCAAe,GAAG;GAC1B,UAAU;IACR,WAAWC,mCAAc,IAAI,QAAQ;IACrC,SAASA,mCAAc,IAAI,SAAS;IACpC,gBAAgBA,mCAAc,IAAI,SAAS;IAC3C,OAAOA,mCAAc,IAAI,QAAQ;IACjC,QAAQA,mCAAc,IAAI,QAAQ;IAClC,SAASA,mCAAc,IAAI,WAAW;IACtC,WAAWA,mCAAc,IAAI,WAAW;IACxC,aAAaA,mCAAc,IAAI,QAAQ;IACvC,eAAeA,mCAAc,IAAI,UAAU;IAC3C,kBAAkBA,mCAAc,IAAI,cAAc;IACnD;GACD,KAAKC,kCAAa,QAAQ;GAC1B,MAAMC,kCAAa,QAAQ;GAC3B,WAAWC,uCAAkB,QAAQ;GACrC,SAASC,uCAAkB,SAAS,cAAc;GAClD,SAASA,uCAAkB,SAAS,UAAU;GAC/C"}
@@ -0,0 +1,60 @@
1
+ import { fetchPage } from "../fetchers/fetchers.mjs";
2
+ import { movieUrl } from "../vars.mjs";
3
+ import { getMovieBoxMovies, getMovieColorRating, getMovieDescriptions, getMovieDuration, getMovieGenres, getMovieGroup, getMovieOrigins, getMoviePoster, getMoviePremieres, getMovieRandomPhoto, getMovieRating, getMovieRatingCount, getMovieTags, getMovieTitle, getMovieTitlesOther, getMovieTrivia, getMovieType, getMovieVods, getMovieYear } from "../helpers/movie.helper.mjs";
4
+ import { parse } from "node-html-parser";
5
+
6
+ //#region src/services/movie.service.ts
7
+ var MovieScraper = class {
8
+ async movie(movieId) {
9
+ const id = Number(movieId);
10
+ if (isNaN(id)) throw new Error("node-csfd-api: movieId must be a valid number");
11
+ const movieHtml = parse(await fetchPage(movieUrl(id)));
12
+ const pageClasses = movieHtml.querySelector(".page-content").classNames.split(" ");
13
+ const asideNode = movieHtml.querySelector(".aside-movie-profile");
14
+ const movieNode = movieHtml.querySelector(".main-movie-profile");
15
+ const jsonLd = movieHtml.querySelector("script[type=\"application/ld+json\"]").innerText;
16
+ this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
17
+ return this.film;
18
+ }
19
+ buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
20
+ this.film = {
21
+ id: movieId,
22
+ title: getMovieTitle(el),
23
+ year: getMovieYear(jsonLd),
24
+ duration: getMovieDuration(jsonLd, el),
25
+ descriptions: getMovieDescriptions(el),
26
+ genres: getMovieGenres(el),
27
+ type: getMovieType(el),
28
+ url: movieUrl(movieId),
29
+ origins: getMovieOrigins(el),
30
+ colorRating: getMovieColorRating(pageClasses),
31
+ rating: getMovieRating(asideEl),
32
+ ratingCount: getMovieRatingCount(asideEl),
33
+ titlesOther: getMovieTitlesOther(el),
34
+ poster: getMoviePoster(el),
35
+ photo: getMovieRandomPhoto(el),
36
+ trivia: getMovieTrivia(el),
37
+ creators: {
38
+ directors: getMovieGroup(el, "Režie"),
39
+ writers: getMovieGroup(el, "Scénář"),
40
+ cinematography: getMovieGroup(el, "Kamera"),
41
+ music: getMovieGroup(el, "Hudba"),
42
+ actors: getMovieGroup(el, "Hrají"),
43
+ basedOn: getMovieGroup(el, "Předloha"),
44
+ producers: getMovieGroup(el, "Produkce"),
45
+ filmEditing: getMovieGroup(el, "Střih"),
46
+ costumeDesign: getMovieGroup(el, "Kostýmy"),
47
+ productionDesign: getMovieGroup(el, "Scénografie")
48
+ },
49
+ vod: getMovieVods(asideEl),
50
+ tags: getMovieTags(asideEl),
51
+ premieres: getMoviePremieres(asideEl),
52
+ related: getMovieBoxMovies(asideEl, "Související"),
53
+ similar: getMovieBoxMovies(asideEl, "Podobné")
54
+ };
55
+ }
56
+ };
57
+
58
+ //#endregion
59
+ export { MovieScraper };
60
+ //# sourceMappingURL=movie.service.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"movie.service.mjs","names":[],"sources":["../../src/services/movie.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDFilmTypes } from '../dto/global';\nimport { CSFDMovie } from '../dto/movie';\nimport { fetchPage } from '../fetchers/fetchers.js';\nimport {\n getMovieBoxMovies,\n getMovieColorRating,\n getMovieDescriptions,\n getMovieDuration,\n getMovieGenres,\n getMovieGroup,\n getMovieOrigins,\n getMoviePoster,\n getMoviePremieres,\n getMovieRandomPhoto,\n getMovieRating,\n getMovieRatingCount,\n getMovieTags,\n getMovieTitle,\n getMovieTitlesOther,\n getMovieTrivia,\n getMovieType,\n getMovieVods,\n getMovieYear\n} from '../helpers/movie.helper.js';\nimport { movieUrl } from '../vars.js';\n\nexport class MovieScraper {\n private film: CSFDMovie;\n\n public async movie(movieId: number): Promise<CSFDMovie> {\n const id = Number(movieId);\n if (isNaN(id)) {\n throw new Error('node-csfd-api: movieId must be a valid number');\n }\n const url = movieUrl(id);\n const response = await fetchPage(url);\n\n const movieHtml = parse(response);\n\n const pageClasses = movieHtml.querySelector('.page-content').classNames.split(' ');\n const asideNode = movieHtml.querySelector('.aside-movie-profile');\n const movieNode = movieHtml.querySelector('.main-movie-profile');\n const jsonLd = movieHtml.querySelector('script[type=\"application/ld+json\"]').innerText;\n this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);\n return this.film;\n }\n\n private buildMovie(\n movieId: number,\n el: HTMLElement,\n asideEl: HTMLElement,\n pageClasses: string[],\n jsonLd: string\n ) {\n this.film = {\n id: movieId,\n title: getMovieTitle(el),\n year: getMovieYear(jsonLd),\n duration: getMovieDuration(jsonLd, el),\n descriptions: getMovieDescriptions(el),\n genres: getMovieGenres(el),\n type: getMovieType(el) as CSFDFilmTypes,\n url: movieUrl(movieId),\n origins: getMovieOrigins(el),\n colorRating: getMovieColorRating(pageClasses),\n rating: getMovieRating(asideEl),\n ratingCount: getMovieRatingCount(asideEl),\n titlesOther: getMovieTitlesOther(el),\n poster: getMoviePoster(el),\n photo: getMovieRandomPhoto(el),\n trivia: getMovieTrivia(el),\n creators: {\n directors: getMovieGroup(el, 'Režie'),\n writers: getMovieGroup(el, 'Scénář'),\n cinematography: getMovieGroup(el, 'Kamera'),\n music: getMovieGroup(el, 'Hudba'),\n actors: getMovieGroup(el, 'Hrají'),\n basedOn: getMovieGroup(el, 'Předloha'),\n producers: getMovieGroup(el, 'Produkce'),\n filmEditing: getMovieGroup(el, 'Střih'),\n costumeDesign: getMovieGroup(el, 'Kostýmy'),\n productionDesign: getMovieGroup(el, 'Scénografie')\n },\n vod: getMovieVods(asideEl),\n tags: getMovieTags(asideEl),\n premieres: getMoviePremieres(asideEl),\n related: getMovieBoxMovies(asideEl, 'Související'),\n similar: getMovieBoxMovies(asideEl, 'Podobné')\n };\n }\n}\n"],"mappings":";;;;;;AA2BA,IAAa,eAAb,MAA0B;CAGxB,MAAa,MAAM,SAAqC;EACtD,MAAM,KAAK,OAAO,QAAQ;AAC1B,MAAI,MAAM,GAAG,CACX,OAAM,IAAI,MAAM,gDAAgD;EAKlE,MAAM,YAAY,MAFD,MAAM,UADX,SAAS,GAAG,CACa,CAEJ;EAEjC,MAAM,cAAc,UAAU,cAAc,gBAAgB,CAAC,WAAW,MAAM,IAAI;EAClF,MAAM,YAAY,UAAU,cAAc,uBAAuB;EACjE,MAAM,YAAY,UAAU,cAAc,sBAAsB;EAChE,MAAM,SAAS,UAAU,cAAc,uCAAqC,CAAC;AAC7E,OAAK,WAAW,CAAC,SAAS,WAAW,WAAW,aAAa,OAAO;AACpE,SAAO,KAAK;;CAGd,AAAQ,WACN,SACA,IACA,SACA,aACA,QACA;AACA,OAAK,OAAO;GACV,IAAI;GACJ,OAAO,cAAc,GAAG;GACxB,MAAM,aAAa,OAAO;GAC1B,UAAU,iBAAiB,QAAQ,GAAG;GACtC,cAAc,qBAAqB,GAAG;GACtC,QAAQ,eAAe,GAAG;GAC1B,MAAM,aAAa,GAAG;GACtB,KAAK,SAAS,QAAQ;GACtB,SAAS,gBAAgB,GAAG;GAC5B,aAAa,oBAAoB,YAAY;GAC7C,QAAQ,eAAe,QAAQ;GAC/B,aAAa,oBAAoB,QAAQ;GACzC,aAAa,oBAAoB,GAAG;GACpC,QAAQ,eAAe,GAAG;GAC1B,OAAO,oBAAoB,GAAG;GAC9B,QAAQ,eAAe,GAAG;GAC1B,UAAU;IACR,WAAW,cAAc,IAAI,QAAQ;IACrC,SAAS,cAAc,IAAI,SAAS;IACpC,gBAAgB,cAAc,IAAI,SAAS;IAC3C,OAAO,cAAc,IAAI,QAAQ;IACjC,QAAQ,cAAc,IAAI,QAAQ;IAClC,SAAS,cAAc,IAAI,WAAW;IACtC,WAAW,cAAc,IAAI,WAAW;IACxC,aAAa,cAAc,IAAI,QAAQ;IACvC,eAAe,cAAc,IAAI,UAAU;IAC3C,kBAAkB,cAAc,IAAI,cAAc;IACnD;GACD,KAAK,aAAa,QAAQ;GAC1B,MAAM,aAAa,QAAQ;GAC3B,WAAW,kBAAkB,QAAQ;GACrC,SAAS,kBAAkB,SAAS,cAAc;GAClD,SAAS,kBAAkB,SAAS,UAAU;GAC/C"}
@@ -0,0 +1,10 @@
1
+ import { CSFDSearch } from "../dto/search.mjs";
2
+
3
+ //#region src/services/search.service.d.ts
4
+ declare class SearchScraper {
5
+ search(text: string): Promise<CSFDSearch>;
6
+ private parseSearch;
7
+ }
8
+ //#endregion
9
+ export { SearchScraper };
10
+ //# sourceMappingURL=search.service.d.mts.map
@@ -1,5 +1,10 @@
1
- import { CSFDSearch } from '../interfaces/search.interface';
2
- export declare class SearchScraper {
3
- search(text: string): Promise<CSFDSearch>;
4
- private parseSearch;
1
+ import { CSFDSearch } from "../dto/search.js";
2
+
3
+ //#region src/services/search.service.d.ts
4
+ declare class SearchScraper {
5
+ search(text: string): Promise<CSFDSearch>;
6
+ private parseSearch;
5
7
  }
8
+ //#endregion
9
+ export { SearchScraper };
10
+ //# sourceMappingURL=search.service.d.ts.map
@@ -1,80 +1,81 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SearchScraper = void 0;
4
- const node_html_parser_1 = require("node-html-parser");
5
- const fetchers_1 = require("../fetchers");
6
- const global_helper_1 = require("../helpers/global.helper");
7
- const search_user_helper_1 = require("../helpers/search-user.helper");
8
- const search_helper_1 = require("../helpers/search.helper");
9
- const vars_1 = require("../vars");
10
- 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);
19
- }
20
- parseSearch(moviesNode, usersNode, tvSeriesNode) {
21
- const movies = [];
22
- const users = [];
23
- const tvSeries = [];
24
- moviesNode.forEach((m) => {
25
- const url = (0, search_helper_1.getUrl)(m);
26
- const movie = {
27
- id: (0, global_helper_1.parseIdFromUrl)(url),
28
- title: (0, search_helper_1.getTitle)(m),
29
- year: (0, search_helper_1.getYear)(m),
30
- url: `https://www.csfd.cz${url}`,
31
- type: (0, search_helper_1.getType)(m),
32
- colorRating: (0, search_helper_1.getColorRating)(m),
33
- poster: (0, search_helper_1.getPoster)(m),
34
- origins: (0, search_helper_1.getOrigins)(m),
35
- creators: {
36
- directors: (0, search_helper_1.parsePeople)(m, 'directors'),
37
- actors: (0, search_helper_1.parsePeople)(m, 'actors')
38
- }
39
- };
40
- movies.push(movie);
41
- });
42
- usersNode.forEach((m) => {
43
- const url = (0, search_user_helper_1.getUserUrl)(m);
44
- const user = {
45
- id: (0, global_helper_1.parseIdFromUrl)(url),
46
- user: (0, search_user_helper_1.getUser)(m),
47
- userRealName: (0, search_user_helper_1.getUserRealName)(m),
48
- avatar: (0, search_user_helper_1.getAvatar)(m),
49
- url: `https://www.csfd.cz${url}`
50
- };
51
- users.push(user);
52
- });
53
- tvSeriesNode.forEach((m) => {
54
- const url = (0, search_helper_1.getUrl)(m);
55
- const user = {
56
- id: (0, global_helper_1.parseIdFromUrl)(url),
57
- title: (0, search_helper_1.getTitle)(m),
58
- year: (0, search_helper_1.getYear)(m),
59
- url: `https://www.csfd.cz${url}`,
60
- type: (0, search_helper_1.getType)(m),
61
- colorRating: (0, search_helper_1.getColorRating)(m),
62
- poster: (0, search_helper_1.getPoster)(m),
63
- origins: (0, search_helper_1.getOrigins)(m),
64
- creators: {
65
- directors: (0, search_helper_1.parsePeople)(m, 'directors'),
66
- actors: (0, search_helper_1.parsePeople)(m, 'actors')
67
- }
68
- };
69
- tvSeries.push(user);
70
- });
71
- const search = {
72
- movies: movies,
73
- users: users,
74
- tvSeries: tvSeries,
75
- creators: []
76
- };
77
- return search;
78
- }
79
- }
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
2
+ const require_fetchers = require('../fetchers/fetchers.js');
3
+ const require_vars = require('../vars.js');
4
+ const require_global_helper = require('../helpers/global.helper.js');
5
+ const require_search_user_helper = require('../helpers/search-user.helper.js');
6
+ const require_search_helper = require('../helpers/search.helper.js');
7
+ let node_html_parser = require("node-html-parser");
8
+ node_html_parser = require_rolldown_runtime.__toESM(node_html_parser);
9
+
10
+ //#region src/services/search.service.ts
11
+ var SearchScraper = class {
12
+ async search(text) {
13
+ const html = (0, node_html_parser.parse)(await require_fetchers.fetchPage(require_vars.searchUrl(text)));
14
+ const moviesNode = html.querySelectorAll(".main-movies article");
15
+ const usersNode = html.querySelectorAll(".main-users article");
16
+ const tvSeriesNode = html.querySelectorAll(".main-series article");
17
+ return this.parseSearch(moviesNode, usersNode, tvSeriesNode);
18
+ }
19
+ parseSearch(moviesNode, usersNode, tvSeriesNode) {
20
+ const movies = [];
21
+ const users = [];
22
+ const tvSeries = [];
23
+ moviesNode.forEach((m) => {
24
+ const url = require_search_helper.getSearchUrl(m);
25
+ const movie = {
26
+ id: require_global_helper.parseIdFromUrl(url),
27
+ title: require_search_helper.getSearchTitle(m),
28
+ year: require_search_helper.getSearchYear(m),
29
+ url: `https://www.csfd.cz${url}`,
30
+ type: require_search_helper.getSearchType(m),
31
+ colorRating: require_search_helper.getSearchColorRating(m),
32
+ poster: require_search_helper.getSearchPoster(m),
33
+ origins: require_search_helper.getSearchOrigins(m),
34
+ creators: {
35
+ directors: require_search_helper.parseSearchPeople(m, "directors"),
36
+ actors: require_search_helper.parseSearchPeople(m, "actors")
37
+ }
38
+ };
39
+ movies.push(movie);
40
+ });
41
+ usersNode.forEach((m) => {
42
+ const url = require_search_user_helper.getUserUrl(m);
43
+ const user = {
44
+ id: require_global_helper.parseIdFromUrl(url),
45
+ user: require_search_user_helper.getUser(m),
46
+ userRealName: require_search_user_helper.getUserRealName(m),
47
+ avatar: require_search_user_helper.getAvatar(m),
48
+ url: `https://www.csfd.cz${url}`
49
+ };
50
+ users.push(user);
51
+ });
52
+ tvSeriesNode.forEach((m) => {
53
+ const url = require_search_helper.getSearchUrl(m);
54
+ const user = {
55
+ id: require_global_helper.parseIdFromUrl(url),
56
+ title: require_search_helper.getSearchTitle(m),
57
+ year: require_search_helper.getSearchYear(m),
58
+ url: `https://www.csfd.cz${url}`,
59
+ type: require_search_helper.getSearchType(m),
60
+ colorRating: require_search_helper.getSearchColorRating(m),
61
+ poster: require_search_helper.getSearchPoster(m),
62
+ origins: require_search_helper.getSearchOrigins(m),
63
+ creators: {
64
+ directors: require_search_helper.parseSearchPeople(m, "directors"),
65
+ actors: require_search_helper.parseSearchPeople(m, "actors")
66
+ }
67
+ };
68
+ tvSeries.push(user);
69
+ });
70
+ return {
71
+ movies,
72
+ users,
73
+ tvSeries,
74
+ creators: []
75
+ };
76
+ }
77
+ };
78
+
79
+ //#endregion
80
80
  exports.SearchScraper = SearchScraper;
81
+ //# sourceMappingURL=search.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.service.js","names":["fetchPage","searchUrl","movies: CSFDSearchMovie[]","users: CSFDSearchUser[]","tvSeries: CSFDSearchMovie[]","getSearchUrl","movie: CSFDSearchMovie","parseIdFromUrl","getSearchTitle","getSearchYear","getSearchType","getSearchColorRating","getSearchPoster","getSearchOrigins","parseSearchPeople","getUserUrl","user: CSFDSearchUser","getUser","getUserRealName","getAvatar","user: CSFDSearchMovie"],"sources":["../../src/services/search.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDSearch, CSFDSearchMovie, CSFDSearchUser } from '../dto/search';\nimport { fetchPage } from '../fetchers/fetchers.js';\nimport { parseIdFromUrl } from '../helpers/global.helper.js';\nimport { getAvatar, getUser, getUserRealName, getUserUrl } from '../helpers/search-user.helper.js';\nimport {\n getSearchColorRating,\n getSearchOrigins,\n getSearchPoster,\n getSearchTitle,\n getSearchType,\n getSearchUrl,\n getSearchYear,\n parseSearchPeople\n} from '../helpers/search.helper.js';\nimport { searchUrl } from '../vars.js';\n\nexport class SearchScraper {\n public async search(text: string): Promise<CSFDSearch> {\n const url = searchUrl(text);\n const response = await fetchPage(url);\n\n const html = parse(response);\n const moviesNode = html.querySelectorAll('.main-movies article');\n const usersNode = html.querySelectorAll('.main-users article');\n const tvSeriesNode = html.querySelectorAll('.main-series article');\n\n return this.parseSearch(moviesNode, usersNode, tvSeriesNode);\n }\n\n private parseSearch(\n moviesNode: HTMLElement[],\n usersNode: HTMLElement[],\n tvSeriesNode: HTMLElement[]\n ) {\n const movies: CSFDSearchMovie[] = [];\n const users: CSFDSearchUser[] = [];\n const tvSeries: CSFDSearchMovie[] = [];\n\n moviesNode.forEach((m) => {\n const url = getSearchUrl(m);\n\n const movie: CSFDSearchMovie = {\n id: parseIdFromUrl(url),\n title: getSearchTitle(m),\n year: getSearchYear(m),\n url: `https://www.csfd.cz${url}`,\n type: getSearchType(m),\n colorRating: getSearchColorRating(m),\n poster: getSearchPoster(m),\n origins: getSearchOrigins(m),\n creators: {\n directors: parseSearchPeople(m, 'directors'),\n actors: parseSearchPeople(m, 'actors')\n }\n };\n movies.push(movie);\n });\n\n usersNode.forEach((m) => {\n const url = getUserUrl(m);\n\n const user: CSFDSearchUser = {\n id: parseIdFromUrl(url),\n user: getUser(m),\n userRealName: getUserRealName(m),\n avatar: getAvatar(m),\n url: `https://www.csfd.cz${url}`\n };\n users.push(user);\n });\n\n tvSeriesNode.forEach((m) => {\n const url = getSearchUrl(m);\n\n const user: CSFDSearchMovie = {\n id: parseIdFromUrl(url),\n title: getSearchTitle(m),\n year: getSearchYear(m),\n url: `https://www.csfd.cz${url}`,\n type: getSearchType(m),\n colorRating: getSearchColorRating(m),\n poster: getSearchPoster(m),\n origins: getSearchOrigins(m),\n creators: {\n directors: parseSearchPeople(m, 'directors'),\n actors: parseSearchPeople(m, 'actors')\n }\n };\n tvSeries.push(user);\n });\n\n const search: CSFDSearch = {\n movies: movies,\n users: users,\n tvSeries: tvSeries,\n creators: []\n };\n return search;\n }\n}\n"],"mappings":";;;;;;;;;;AAiBA,IAAa,gBAAb,MAA2B;CACzB,MAAa,OAAO,MAAmC;EAIrD,MAAM,mCAFW,MAAMA,2BADXC,uBAAU,KAAK,CACU,CAET;EAC5B,MAAM,aAAa,KAAK,iBAAiB,uBAAuB;EAChE,MAAM,YAAY,KAAK,iBAAiB,sBAAsB;EAC9D,MAAM,eAAe,KAAK,iBAAiB,uBAAuB;AAElE,SAAO,KAAK,YAAY,YAAY,WAAW,aAAa;;CAG9D,AAAQ,YACN,YACA,WACA,cACA;EACA,MAAMC,SAA4B,EAAE;EACpC,MAAMC,QAA0B,EAAE;EAClC,MAAMC,WAA8B,EAAE;AAEtC,aAAW,SAAS,MAAM;GACxB,MAAM,MAAMC,mCAAa,EAAE;GAE3B,MAAMC,QAAyB;IAC7B,IAAIC,qCAAe,IAAI;IACvB,OAAOC,qCAAe,EAAE;IACxB,MAAMC,oCAAc,EAAE;IACtB,KAAK,sBAAsB;IAC3B,MAAMC,oCAAc,EAAE;IACtB,aAAaC,2CAAqB,EAAE;IACpC,QAAQC,sCAAgB,EAAE;IAC1B,SAASC,uCAAiB,EAAE;IAC5B,UAAU;KACR,WAAWC,wCAAkB,GAAG,YAAY;KAC5C,QAAQA,wCAAkB,GAAG,SAAS;KACvC;IACF;AACD,UAAO,KAAK,MAAM;IAClB;AAEF,YAAU,SAAS,MAAM;GACvB,MAAM,MAAMC,sCAAW,EAAE;GAEzB,MAAMC,OAAuB;IAC3B,IAAIT,qCAAe,IAAI;IACvB,MAAMU,mCAAQ,EAAE;IAChB,cAAcC,2CAAgB,EAAE;IAChC,QAAQC,qCAAU,EAAE;IACpB,KAAK,sBAAsB;IAC5B;AACD,SAAM,KAAK,KAAK;IAChB;AAEF,eAAa,SAAS,MAAM;GAC1B,MAAM,MAAMd,mCAAa,EAAE;GAE3B,MAAMe,OAAwB;IAC5B,IAAIb,qCAAe,IAAI;IACvB,OAAOC,qCAAe,EAAE;IACxB,MAAMC,oCAAc,EAAE;IACtB,KAAK,sBAAsB;IAC3B,MAAMC,oCAAc,EAAE;IACtB,aAAaC,2CAAqB,EAAE;IACpC,QAAQC,sCAAgB,EAAE;IAC1B,SAASC,uCAAiB,EAAE;IAC5B,UAAU;KACR,WAAWC,wCAAkB,GAAG,YAAY;KAC5C,QAAQA,wCAAkB,GAAG,SAAS;KACvC;IACF;AACD,YAAS,KAAK,KAAK;IACnB;AAQF,SAN2B;GACjB;GACD;GACG;GACV,UAAU,EAAE;GACb"}
@@ -0,0 +1,79 @@
1
+ import { fetchPage } from "../fetchers/fetchers.mjs";
2
+ import { searchUrl } from "../vars.mjs";
3
+ import { parseIdFromUrl } from "../helpers/global.helper.mjs";
4
+ import { getAvatar, getUser, getUserRealName, getUserUrl } from "../helpers/search-user.helper.mjs";
5
+ import { getSearchColorRating, getSearchOrigins, getSearchPoster, getSearchTitle, getSearchType, getSearchUrl, getSearchYear, parseSearchPeople } from "../helpers/search.helper.mjs";
6
+ import { parse } from "node-html-parser";
7
+
8
+ //#region src/services/search.service.ts
9
+ var SearchScraper = class {
10
+ async search(text) {
11
+ const html = parse(await fetchPage(searchUrl(text)));
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);
16
+ }
17
+ parseSearch(moviesNode, usersNode, tvSeriesNode) {
18
+ const movies = [];
19
+ const users = [];
20
+ const tvSeries = [];
21
+ moviesNode.forEach((m) => {
22
+ const url = getSearchUrl(m);
23
+ const movie = {
24
+ id: parseIdFromUrl(url),
25
+ title: getSearchTitle(m),
26
+ year: getSearchYear(m),
27
+ url: `https://www.csfd.cz${url}`,
28
+ type: getSearchType(m),
29
+ colorRating: getSearchColorRating(m),
30
+ poster: getSearchPoster(m),
31
+ origins: getSearchOrigins(m),
32
+ creators: {
33
+ directors: parseSearchPeople(m, "directors"),
34
+ actors: parseSearchPeople(m, "actors")
35
+ }
36
+ };
37
+ movies.push(movie);
38
+ });
39
+ usersNode.forEach((m) => {
40
+ const url = getUserUrl(m);
41
+ const user = {
42
+ id: parseIdFromUrl(url),
43
+ user: getUser(m),
44
+ userRealName: getUserRealName(m),
45
+ avatar: getAvatar(m),
46
+ url: `https://www.csfd.cz${url}`
47
+ };
48
+ users.push(user);
49
+ });
50
+ tvSeriesNode.forEach((m) => {
51
+ const url = getSearchUrl(m);
52
+ const user = {
53
+ id: parseIdFromUrl(url),
54
+ title: getSearchTitle(m),
55
+ year: getSearchYear(m),
56
+ url: `https://www.csfd.cz${url}`,
57
+ type: getSearchType(m),
58
+ colorRating: getSearchColorRating(m),
59
+ poster: getSearchPoster(m),
60
+ origins: getSearchOrigins(m),
61
+ creators: {
62
+ directors: parseSearchPeople(m, "directors"),
63
+ actors: parseSearchPeople(m, "actors")
64
+ }
65
+ };
66
+ tvSeries.push(user);
67
+ });
68
+ return {
69
+ movies,
70
+ users,
71
+ tvSeries,
72
+ creators: []
73
+ };
74
+ }
75
+ };
76
+
77
+ //#endregion
78
+ export { SearchScraper };
79
+ //# sourceMappingURL=search.service.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.service.mjs","names":["movies: CSFDSearchMovie[]","users: CSFDSearchUser[]","tvSeries: CSFDSearchMovie[]","movie: CSFDSearchMovie","user: CSFDSearchUser","user: CSFDSearchMovie"],"sources":["../../src/services/search.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDSearch, CSFDSearchMovie, CSFDSearchUser } from '../dto/search';\nimport { fetchPage } from '../fetchers/fetchers.js';\nimport { parseIdFromUrl } from '../helpers/global.helper.js';\nimport { getAvatar, getUser, getUserRealName, getUserUrl } from '../helpers/search-user.helper.js';\nimport {\n getSearchColorRating,\n getSearchOrigins,\n getSearchPoster,\n getSearchTitle,\n getSearchType,\n getSearchUrl,\n getSearchYear,\n parseSearchPeople\n} from '../helpers/search.helper.js';\nimport { searchUrl } from '../vars.js';\n\nexport class SearchScraper {\n public async search(text: string): Promise<CSFDSearch> {\n const url = searchUrl(text);\n const response = await fetchPage(url);\n\n const html = parse(response);\n const moviesNode = html.querySelectorAll('.main-movies article');\n const usersNode = html.querySelectorAll('.main-users article');\n const tvSeriesNode = html.querySelectorAll('.main-series article');\n\n return this.parseSearch(moviesNode, usersNode, tvSeriesNode);\n }\n\n private parseSearch(\n moviesNode: HTMLElement[],\n usersNode: HTMLElement[],\n tvSeriesNode: HTMLElement[]\n ) {\n const movies: CSFDSearchMovie[] = [];\n const users: CSFDSearchUser[] = [];\n const tvSeries: CSFDSearchMovie[] = [];\n\n moviesNode.forEach((m) => {\n const url = getSearchUrl(m);\n\n const movie: CSFDSearchMovie = {\n id: parseIdFromUrl(url),\n title: getSearchTitle(m),\n year: getSearchYear(m),\n url: `https://www.csfd.cz${url}`,\n type: getSearchType(m),\n colorRating: getSearchColorRating(m),\n poster: getSearchPoster(m),\n origins: getSearchOrigins(m),\n creators: {\n directors: parseSearchPeople(m, 'directors'),\n actors: parseSearchPeople(m, 'actors')\n }\n };\n movies.push(movie);\n });\n\n usersNode.forEach((m) => {\n const url = getUserUrl(m);\n\n const user: CSFDSearchUser = {\n id: parseIdFromUrl(url),\n user: getUser(m),\n userRealName: getUserRealName(m),\n avatar: getAvatar(m),\n url: `https://www.csfd.cz${url}`\n };\n users.push(user);\n });\n\n tvSeriesNode.forEach((m) => {\n const url = getSearchUrl(m);\n\n const user: CSFDSearchMovie = {\n id: parseIdFromUrl(url),\n title: getSearchTitle(m),\n year: getSearchYear(m),\n url: `https://www.csfd.cz${url}`,\n type: getSearchType(m),\n colorRating: getSearchColorRating(m),\n poster: getSearchPoster(m),\n origins: getSearchOrigins(m),\n creators: {\n directors: parseSearchPeople(m, 'directors'),\n actors: parseSearchPeople(m, 'actors')\n }\n };\n tvSeries.push(user);\n });\n\n const search: CSFDSearch = {\n movies: movies,\n users: users,\n tvSeries: tvSeries,\n creators: []\n };\n return search;\n }\n}\n"],"mappings":";;;;;;;;AAiBA,IAAa,gBAAb,MAA2B;CACzB,MAAa,OAAO,MAAmC;EAIrD,MAAM,OAAO,MAFI,MAAM,UADX,UAAU,KAAK,CACU,CAET;EAC5B,MAAM,aAAa,KAAK,iBAAiB,uBAAuB;EAChE,MAAM,YAAY,KAAK,iBAAiB,sBAAsB;EAC9D,MAAM,eAAe,KAAK,iBAAiB,uBAAuB;AAElE,SAAO,KAAK,YAAY,YAAY,WAAW,aAAa;;CAG9D,AAAQ,YACN,YACA,WACA,cACA;EACA,MAAMA,SAA4B,EAAE;EACpC,MAAMC,QAA0B,EAAE;EAClC,MAAMC,WAA8B,EAAE;AAEtC,aAAW,SAAS,MAAM;GACxB,MAAM,MAAM,aAAa,EAAE;GAE3B,MAAMC,QAAyB;IAC7B,IAAI,eAAe,IAAI;IACvB,OAAO,eAAe,EAAE;IACxB,MAAM,cAAc,EAAE;IACtB,KAAK,sBAAsB;IAC3B,MAAM,cAAc,EAAE;IACtB,aAAa,qBAAqB,EAAE;IACpC,QAAQ,gBAAgB,EAAE;IAC1B,SAAS,iBAAiB,EAAE;IAC5B,UAAU;KACR,WAAW,kBAAkB,GAAG,YAAY;KAC5C,QAAQ,kBAAkB,GAAG,SAAS;KACvC;IACF;AACD,UAAO,KAAK,MAAM;IAClB;AAEF,YAAU,SAAS,MAAM;GACvB,MAAM,MAAM,WAAW,EAAE;GAEzB,MAAMC,OAAuB;IAC3B,IAAI,eAAe,IAAI;IACvB,MAAM,QAAQ,EAAE;IAChB,cAAc,gBAAgB,EAAE;IAChC,QAAQ,UAAU,EAAE;IACpB,KAAK,sBAAsB;IAC5B;AACD,SAAM,KAAK,KAAK;IAChB;AAEF,eAAa,SAAS,MAAM;GAC1B,MAAM,MAAM,aAAa,EAAE;GAE3B,MAAMC,OAAwB;IAC5B,IAAI,eAAe,IAAI;IACvB,OAAO,eAAe,EAAE;IACxB,MAAM,cAAc,EAAE;IACtB,KAAK,sBAAsB;IAC3B,MAAM,cAAc,EAAE;IACtB,aAAa,qBAAqB,EAAE;IACpC,QAAQ,gBAAgB,EAAE;IAC1B,SAAS,iBAAiB,EAAE;IAC5B,UAAU;KACR,WAAW,kBAAkB,GAAG,YAAY;KAC5C,QAAQ,kBAAkB,GAAG,SAAS;KACvC;IACF;AACD,YAAS,KAAK,KAAK;IACnB;AAQF,SAN2B;GACjB;GACD;GACG;GACV,UAAU,EAAE;GACb"}
@@ -0,0 +1,12 @@
1
+ import { CSFDUserRatingConfig, CSFDUserRatings } from "../dto/user-ratings.mjs";
2
+
3
+ //#region src/services/user-ratings.service.d.ts
4
+ declare class UserRatingsScraper {
5
+ private films;
6
+ userRatings(user: string | number, config?: CSFDUserRatingConfig): Promise<CSFDUserRatings[]>;
7
+ private getPage;
8
+ private buildUserRatings;
9
+ }
10
+ //#endregion
11
+ export { UserRatingsScraper };
12
+ //# sourceMappingURL=user-ratings.service.d.mts.map
@@ -1,7 +1,12 @@
1
- import { CSFDUserRatingConfig, CSFDUserRatings } from '../interfaces/user-ratings.interface';
2
- export declare class UserRatingsScraper {
3
- private films;
4
- userRatings(user: string | number, config?: CSFDUserRatingConfig): Promise<CSFDUserRatings[]>;
5
- private getPage;
6
- private buildUserRatings;
1
+ import { CSFDUserRatingConfig, CSFDUserRatings } from "../dto/user-ratings.js";
2
+
3
+ //#region src/services/user-ratings.service.d.ts
4
+ declare class UserRatingsScraper {
5
+ private films;
6
+ userRatings(user: string | number, config?: CSFDUserRatingConfig): Promise<CSFDUserRatings[]>;
7
+ private getPage;
8
+ private buildUserRatings;
7
9
  }
10
+ //#endregion
11
+ export { UserRatingsScraper };
12
+ //# sourceMappingURL=user-ratings.service.d.ts.map