node-csfd-api 3.0.0-next.9 → 3.0.0

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 (136) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -44
  3. package/_virtual/rolldown_runtime.js +25 -0
  4. package/dto/cinema.d.mts +28 -0
  5. package/dto/cinema.d.ts +28 -0
  6. package/dto/creator.d.mts +17 -0
  7. package/dto/creator.d.ts +17 -0
  8. package/dto/global.d.mts +26 -0
  9. package/dto/global.d.ts +26 -0
  10. package/dto/movie.d.mts +71 -0
  11. package/dto/movie.d.ts +71 -0
  12. package/dto/search.d.mts +32 -0
  13. package/dto/search.d.ts +32 -0
  14. package/dto/user-ratings.d.mts +23 -0
  15. package/dto/user-ratings.d.ts +23 -0
  16. package/fetchers/fetch.polyfill.js +10 -0
  17. package/fetchers/fetch.polyfill.js.map +1 -0
  18. package/fetchers/fetch.polyfill.mjs +8 -0
  19. package/fetchers/fetch.polyfill.mjs.map +1 -0
  20. package/fetchers/index.js +24 -0
  21. package/fetchers/index.js.map +1 -0
  22. package/fetchers/index.mjs +24 -0
  23. package/fetchers/index.mjs.map +1 -0
  24. package/helpers/cinema.helper.js +84 -0
  25. package/helpers/cinema.helper.js.map +1 -0
  26. package/helpers/cinema.helper.mjs +80 -0
  27. package/helpers/cinema.helper.mjs.map +1 -0
  28. package/helpers/creator.helper.js +73 -0
  29. package/helpers/creator.helper.js.map +1 -0
  30. package/helpers/creator.helper.mjs +69 -0
  31. package/helpers/creator.helper.mjs.map +1 -0
  32. package/helpers/global.helper.js +50 -0
  33. package/helpers/global.helper.js.map +1 -0
  34. package/helpers/global.helper.mjs +45 -0
  35. package/helpers/global.helper.mjs.map +1 -0
  36. package/helpers/movie.helper.js +162 -0
  37. package/helpers/movie.helper.js.map +1 -0
  38. package/helpers/movie.helper.mjs +144 -0
  39. package/helpers/movie.helper.mjs.map +1 -0
  40. package/helpers/search-user.helper.js +29 -0
  41. package/helpers/search-user.helper.js.map +1 -0
  42. package/helpers/search-user.helper.mjs +24 -0
  43. package/helpers/search-user.helper.mjs.map +1 -0
  44. package/helpers/search.helper.js +52 -0
  45. package/helpers/search.helper.js.map +1 -0
  46. package/helpers/search.helper.mjs +45 -0
  47. package/helpers/search.helper.mjs.map +1 -0
  48. package/helpers/user-ratings.helper.js +52 -0
  49. package/helpers/user-ratings.helper.js.map +1 -0
  50. package/helpers/user-ratings.helper.mjs +44 -0
  51. package/helpers/user-ratings.helper.mjs.map +1 -0
  52. package/index.d.mts +30 -0
  53. package/index.d.ts +30 -0
  54. package/index.js +42 -0
  55. package/index.js.map +1 -0
  56. package/index.mjs +41 -0
  57. package/index.mjs.map +1 -0
  58. package/package.json +15 -28
  59. package/services/cinema.service.d.mts +11 -0
  60. package/services/cinema.service.d.ts +11 -0
  61. package/services/cinema.service.js +35 -0
  62. package/services/cinema.service.js.map +1 -0
  63. package/services/cinema.service.mjs +33 -0
  64. package/services/cinema.service.mjs.map +1 -0
  65. package/services/creator.service.d.mts +11 -0
  66. package/services/creator.service.d.ts +11 -0
  67. package/services/creator.service.js +35 -0
  68. package/services/creator.service.js.map +1 -0
  69. package/services/creator.service.mjs +33 -0
  70. package/services/creator.service.mjs.map +1 -0
  71. package/services/movie.service.d.mts +11 -0
  72. package/services/movie.service.d.ts +11 -0
  73. package/services/movie.service.js +62 -0
  74. package/services/movie.service.js.map +1 -0
  75. package/services/movie.service.mjs +60 -0
  76. package/services/movie.service.mjs.map +1 -0
  77. package/services/search.service.d.mts +10 -0
  78. package/services/search.service.d.ts +10 -0
  79. package/services/search.service.js +81 -0
  80. package/services/search.service.js.map +1 -0
  81. package/services/search.service.mjs +79 -0
  82. package/services/search.service.mjs.map +1 -0
  83. package/services/user-ratings.service.d.mts +12 -0
  84. package/services/user-ratings.service.d.ts +12 -0
  85. package/services/user-ratings.service.js +66 -0
  86. package/services/user-ratings.service.js.map +1 -0
  87. package/services/user-ratings.service.mjs +64 -0
  88. package/services/user-ratings.service.mjs.map +1 -0
  89. package/{cjs/vars.js → vars.js} +13 -7
  90. package/vars.js.map +1 -0
  91. package/vars.mjs +12 -0
  92. package/vars.mjs.map +1 -0
  93. package/cjs/fetchers/index.js +0 -41
  94. package/cjs/helpers/creator.helper.js +0 -86
  95. package/cjs/helpers/global.helper.js +0 -64
  96. package/cjs/helpers/movie.helper.js +0 -248
  97. package/cjs/helpers/search-user.helper.js +0 -22
  98. package/cjs/helpers/search.helper.js +0 -60
  99. package/cjs/helpers/user-ratings.helper.js +0 -60
  100. package/cjs/index.js +0 -50
  101. package/cjs/services/creator.service.js +0 -43
  102. package/cjs/services/movie.service.js +0 -69
  103. package/cjs/services/search.service.js +0 -91
  104. package/cjs/services/user-ratings.service.js +0 -95
  105. package/esm/fetchers/index.js +0 -37
  106. package/esm/helpers/creator.helper.js +0 -73
  107. package/esm/helpers/global.helper.js +0 -56
  108. package/esm/helpers/movie.helper.js +0 -223
  109. package/esm/helpers/search-user.helper.js +0 -15
  110. package/esm/helpers/search.helper.js +0 -49
  111. package/esm/helpers/user-ratings.helper.js +0 -47
  112. package/esm/index.js +0 -46
  113. package/esm/services/creator.service.js +0 -39
  114. package/esm/services/movie.service.js +0 -65
  115. package/esm/services/search.service.js +0 -87
  116. package/esm/services/user-ratings.service.js +0 -91
  117. package/esm/vars.js +0 -4
  118. package/types/fetchers/index.d.ts +0 -1
  119. package/types/helpers/creator.helper.d.ts +0 -17
  120. package/types/helpers/global.helper.d.ts +0 -7
  121. package/types/helpers/movie.helper.d.ts +0 -25
  122. package/types/helpers/search-user.helper.d.ts +0 -5
  123. package/types/helpers/search.helper.d.ts +0 -11
  124. package/types/helpers/user-ratings.helper.d.ts +0 -13
  125. package/types/index.d.ts +0 -20
  126. package/types/index.ts +0 -22
  127. package/types/interfaces/creator.interface.d.ts +0 -12
  128. package/types/interfaces/global.d.ts +0 -22
  129. package/types/interfaces/movie.interface.d.ts +0 -66
  130. package/types/interfaces/search.interface.d.ts +0 -27
  131. package/types/interfaces/user-ratings.interface.d.ts +0 -18
  132. package/types/services/creator.service.d.ts +0 -6
  133. package/types/services/movie.service.d.ts +0 -6
  134. package/types/services/search.service.d.ts +0 -5
  135. package/types/services/user-ratings.service.d.ts +0 -7
  136. package/types/vars.d.ts +0 -4
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseISO8601Duration = exports.addProtocol = exports.parseColor = exports.getColor = exports.parseIdFromUrl = void 0;
4
- const parseIdFromUrl = (url) => {
5
- if (url) {
6
- const idSlug = url === null || url === void 0 ? void 0 : url.split('/')[2];
7
- const id = idSlug === null || idSlug === void 0 ? void 0 : idSlug.split('-')[0];
8
- return +id || null;
9
- }
10
- else {
11
- return null;
12
- }
13
- };
14
- exports.parseIdFromUrl = parseIdFromUrl;
15
- const getColor = (cls) => {
16
- switch (cls) {
17
- case 'page-lightgrey':
18
- return 'unknown';
19
- case 'page-red':
20
- return 'good';
21
- case 'page-blue':
22
- return 'average';
23
- case 'page-grey':
24
- return 'bad';
25
- default:
26
- return 'unknown';
27
- }
28
- };
29
- exports.getColor = getColor;
30
- const parseColor = (quality) => {
31
- switch (quality) {
32
- case 'lightgrey':
33
- return 'unknown';
34
- case 'red':
35
- return 'good';
36
- case 'blue':
37
- return 'average';
38
- case 'grey':
39
- return 'bad';
40
- default:
41
- return 'unknown';
42
- }
43
- };
44
- exports.parseColor = parseColor;
45
- const addProtocol = (url) => {
46
- return url.startsWith('//') ? 'https:' + url : url;
47
- };
48
- exports.addProtocol = addProtocol;
49
- const parseISO8601Duration = (iso) => {
50
- const iso8601DurationRegex = /(-)?P(?:([.,\d]+)Y)?(?:([.,\d]+)M)?(?:([.,\d]+)W)?(?:([.,\d]+)D)?T(?:([.,\d]+)H)?(?:([.,\d]+)M)?(?:([.,\d]+)S)?/;
51
- const matches = iso.match(iso8601DurationRegex);
52
- const duration = {
53
- sign: matches[1] === undefined ? '+' : '-',
54
- years: matches[2] === undefined ? 0 : matches[2],
55
- months: matches[3] === undefined ? 0 : matches[3],
56
- weeks: matches[4] === undefined ? 0 : matches[4],
57
- days: matches[5] === undefined ? 0 : matches[5],
58
- hours: matches[6] === undefined ? 0 : matches[6],
59
- minutes: matches[7] === undefined ? 0 : matches[7],
60
- seconds: matches[8] === undefined ? 0 : matches[8]
61
- };
62
- return +duration.minutes;
63
- };
64
- exports.parseISO8601Duration = parseISO8601Duration;
@@ -1,248 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTags = exports.getPremieres = exports.getBoxMovies = exports.getBoxContent = exports.getVods = exports.getType = exports.getGroup = exports.parsePeople = exports.getDescriptions = exports.getTrivia = exports.getRandomPhoto = exports.getPoster = exports.getTitlesOther = exports.getDuration = exports.getYear = exports.getRatingCount = exports.getRating = exports.getColorRating = exports.getOrigins = exports.getGenres = exports.getTitle = exports.getId = void 0;
4
- const global_helper_1 = require("./global.helper");
5
- const getId = (el) => {
6
- const url = el.querySelector('.tabs .tab-nav-list a').attributes.href;
7
- return (0, global_helper_1.parseIdFromUrl)(url);
8
- };
9
- exports.getId = getId;
10
- const getTitle = (el) => {
11
- return el.querySelector('h1').innerText.split(`(`)[0].trim();
12
- };
13
- exports.getTitle = getTitle;
14
- const getGenres = (el) => {
15
- const genresRaw = el.querySelector('.genres').textContent;
16
- return genresRaw.split(' / ');
17
- };
18
- exports.getGenres = getGenres;
19
- const getOrigins = (el) => {
20
- const originsRaw = el.querySelector('.origin').textContent;
21
- const origins = originsRaw.split(',')[0];
22
- return origins.split(' / ');
23
- };
24
- exports.getOrigins = getOrigins;
25
- const getColorRating = (bodyClasses) => {
26
- return (0, global_helper_1.getColor)(bodyClasses[1]);
27
- };
28
- exports.getColorRating = getColorRating;
29
- const getRating = (el) => {
30
- const ratingRaw = el.querySelector('.film-rating-average').textContent;
31
- const rating = +(ratingRaw === null || ratingRaw === void 0 ? void 0 : ratingRaw.replace(/%/g, '').trim());
32
- if (Number.isInteger(rating)) {
33
- return rating;
34
- }
35
- else {
36
- return null;
37
- }
38
- };
39
- exports.getRating = getRating;
40
- const getRatingCount = (el) => {
41
- var _a;
42
- const ratingCountRaw = (_a = el.querySelector('.box-rating-container .counter')) === null || _a === void 0 ? void 0 : _a.textContent;
43
- const ratingCount = +(ratingCountRaw === null || ratingCountRaw === void 0 ? void 0 : ratingCountRaw.replace(/[(\s)]/g, ''));
44
- if (Number.isInteger(ratingCount)) {
45
- return ratingCount;
46
- }
47
- else {
48
- return null;
49
- }
50
- };
51
- exports.getRatingCount = getRatingCount;
52
- const getYear = (el) => {
53
- try {
54
- const jsonLd = JSON.parse(el);
55
- return +jsonLd.dateCreated;
56
- }
57
- catch (error) {
58
- console.error('node-csfd-api: Error parsing JSON-LD', error);
59
- return null;
60
- }
61
- };
62
- exports.getYear = getYear;
63
- const getDuration = (jsonLdRaw, el) => {
64
- let duration = null;
65
- try {
66
- const jsonLd = JSON.parse(jsonLdRaw);
67
- duration = jsonLd.duration;
68
- return (0, global_helper_1.parseISO8601Duration)(duration);
69
- }
70
- catch (error) {
71
- const origin = el.querySelector('.origin').innerText;
72
- const timeString = origin.split(',');
73
- if (timeString.length > 2) {
74
- // Get last time elelment
75
- const timeString2 = timeString.pop().trim();
76
- // Clean it
77
- const timeRaw = timeString2.split('(')[0].trim();
78
- // Split by minutes and hours
79
- const hoursMinsRaw = timeRaw.split('min')[0];
80
- const hoursMins = hoursMinsRaw.split('h');
81
- // Resolve hours + minutes format
82
- duration = hoursMins.length > 1 ? +hoursMins[0] * 60 + +hoursMins[1] : +hoursMins[0];
83
- return duration;
84
- }
85
- else {
86
- return null;
87
- }
88
- }
89
- };
90
- exports.getDuration = getDuration;
91
- const getTitlesOther = (el) => {
92
- const namesNode = el.querySelectorAll('.film-names li');
93
- return namesNode.map((el) => {
94
- const country = el.querySelector('img.flag').attributes.alt;
95
- const title = el.textContent.trim().split('\n')[0];
96
- if (country && title) {
97
- return {
98
- country,
99
- title
100
- };
101
- }
102
- else {
103
- return null;
104
- }
105
- });
106
- };
107
- exports.getTitlesOther = getTitlesOther;
108
- const getPoster = (el) => {
109
- var _a;
110
- const poster = el.querySelector('.film-posters img');
111
- // Resolve empty image
112
- if (poster) {
113
- if ((_a = poster.classNames) === null || _a === void 0 ? void 0 : _a.includes('empty-image')) {
114
- return null;
115
- }
116
- else {
117
- // Full sized image (not thumb)
118
- const imageThumb = poster.attributes.src.split('?')[0];
119
- const image = imageThumb.replace(/\/w140\//, '/w1080/');
120
- return (0, global_helper_1.addProtocol)(image);
121
- }
122
- }
123
- else {
124
- return null;
125
- }
126
- };
127
- exports.getPoster = getPoster;
128
- const getRandomPhoto = (el) => {
129
- var _a;
130
- const imageNode = el.querySelector('.gallery-item picture img');
131
- const image = (_a = imageNode === null || imageNode === void 0 ? void 0 : imageNode.attributes) === null || _a === void 0 ? void 0 : _a.src;
132
- if (image) {
133
- return image.replace(/\/w663\//, '/w1326/');
134
- }
135
- else {
136
- return null;
137
- }
138
- };
139
- exports.getRandomPhoto = getRandomPhoto;
140
- const getTrivia = (el) => {
141
- const triviaNodes = el.querySelectorAll('.article-trivia ul li');
142
- if (triviaNodes === null || triviaNodes === void 0 ? void 0 : triviaNodes.length) {
143
- return triviaNodes.map((node) => node.textContent.trim().replace(/(\r\n|\n|\r|\t)/gm, ''));
144
- }
145
- else {
146
- return null;
147
- }
148
- };
149
- exports.getTrivia = getTrivia;
150
- const getDescriptions = (el) => {
151
- return el
152
- .querySelectorAll('.body--plots .plot-full p, .body--plots .plots .plots-item p')
153
- .map((movie) => { var _a; return (_a = movie.textContent) === null || _a === void 0 ? void 0 : _a.trim().replace(/(\r\n|\n|\r|\t)/gm, ''); });
154
- };
155
- exports.getDescriptions = getDescriptions;
156
- const parsePeople = (el) => {
157
- const people = el.querySelectorAll('a');
158
- return (people
159
- // Filter out "more" links
160
- .filter((x) => x.classNames.length === 0)
161
- .map((person) => {
162
- return {
163
- id: (0, global_helper_1.parseIdFromUrl)(person.attributes.href),
164
- name: person.innerText.trim(),
165
- url: `https://www.csfd.cz${person.attributes.href}`
166
- };
167
- }));
168
- };
169
- exports.parsePeople = parsePeople;
170
- const getGroup = (el, group) => {
171
- const creators = el.querySelectorAll('.creators h4');
172
- const element = creators.filter((elem) => elem.textContent.trim().includes(group))[0];
173
- if (element === null || element === void 0 ? void 0 : element.parentNode) {
174
- return (0, exports.parsePeople)(element.parentNode);
175
- }
176
- else {
177
- return [];
178
- }
179
- };
180
- exports.getGroup = getGroup;
181
- const getType = (el) => {
182
- var _a;
183
- const type = el.querySelector('.film-header-name .type');
184
- return ((_a = type === null || type === void 0 ? void 0 : type.innerText) === null || _a === void 0 ? void 0 : _a.replace(/[{()}]/g, '')) || 'film';
185
- };
186
- exports.getType = getType;
187
- const getVods = (el) => {
188
- let vods = [];
189
- if (el) {
190
- const buttons = el.querySelectorAll('.box-buttons .button');
191
- const buttonsVod = buttons.filter((x) => !x.classNames.includes('button-social'));
192
- vods = buttonsVod.map((btn) => {
193
- return {
194
- title: btn.textContent.trim(),
195
- url: btn.attributes.href
196
- };
197
- });
198
- }
199
- return vods.length ? vods : [];
200
- };
201
- exports.getVods = getVods;
202
- // Get box content
203
- const getBoxContent = (el, box) => {
204
- var _a;
205
- const headers = el.querySelectorAll('section.box .box-header');
206
- return (_a = headers.find((header) => header.querySelector('h3').textContent.trim().includes(box))) === null || _a === void 0 ? void 0 : _a.parentNode;
207
- };
208
- exports.getBoxContent = getBoxContent;
209
- const getBoxMovies = (el, boxName) => {
210
- const movieListItem = [];
211
- const box = (0, exports.getBoxContent)(el, boxName);
212
- const movieTitleNodes = box === null || box === void 0 ? void 0 : box.querySelectorAll('.article-header .film-title-name');
213
- if (movieTitleNodes === null || movieTitleNodes === void 0 ? void 0 : movieTitleNodes.length) {
214
- for (const item of movieTitleNodes) {
215
- movieListItem.push({
216
- id: (0, global_helper_1.parseIdFromUrl)(item.attributes.href),
217
- title: item.textContent.trim(),
218
- url: `https://www.csfd.cz${item.attributes.href}`
219
- });
220
- }
221
- }
222
- return movieListItem;
223
- };
224
- exports.getBoxMovies = getBoxMovies;
225
- const getPremieres = (el) => {
226
- var _a, _b;
227
- const premiereNodes = el.querySelectorAll('.box-premieres li');
228
- const premiere = [];
229
- for (const premiereNode of premiereNodes) {
230
- const title = premiereNode.querySelector('p + span').attributes.title;
231
- if (title) {
232
- const [date, ...company] = title === null || title === void 0 ? void 0 : title.split(' ');
233
- premiere.push({
234
- country: ((_a = premiereNode.querySelector('.flag')) === null || _a === void 0 ? void 0 : _a.attributes.title) || null,
235
- format: (_b = premiereNode.querySelector('p').textContent.trim()) === null || _b === void 0 ? void 0 : _b.split(' od')[0],
236
- date,
237
- company: company.join(' ')
238
- });
239
- }
240
- }
241
- return premiere;
242
- };
243
- exports.getPremieres = getPremieres;
244
- const getTags = (el) => {
245
- const tagsRaw = el.querySelectorAll('.box-content a[href*="/podrobne-vyhledavani/?tag="]');
246
- return tagsRaw.map((tag) => tag.textContent);
247
- };
248
- exports.getTags = getTags;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUserUrl = exports.getAvatar = exports.getUserRealName = exports.getUser = void 0;
4
- const global_helper_1 = require("./global.helper");
5
- const getUser = (el) => {
6
- return el.querySelector('.user-title-name').text;
7
- };
8
- exports.getUser = getUser;
9
- const getUserRealName = (el) => {
10
- var _a;
11
- return ((_a = el.querySelector('.user-real-name')) === null || _a === void 0 ? void 0 : _a.text.trim()) || null;
12
- };
13
- exports.getUserRealName = getUserRealName;
14
- const getAvatar = (el) => {
15
- const image = el.querySelector('.article-img img').attributes.src;
16
- return (0, global_helper_1.addProtocol)(image);
17
- };
18
- exports.getAvatar = getAvatar;
19
- const getUserUrl = (el) => {
20
- return el.querySelector('.user-title-name').attributes.href;
21
- };
22
- exports.getUserUrl = getUserUrl;
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parsePeople = exports.getOrigins = exports.getPoster = exports.getColorRating = exports.getUrl = exports.getYear = exports.getTitle = exports.getType = void 0;
4
- const global_helper_1 = require("./global.helper");
5
- const getType = (el) => {
6
- const type = el.querySelectorAll('.film-title-info .info')[1];
7
- return ((type === null || type === void 0 ? void 0 : type.innerText.replace(/[{()}]/g, '')) || 'film');
8
- };
9
- exports.getType = getType;
10
- const getTitle = (el) => {
11
- return el.querySelector('.film-title-name').text;
12
- };
13
- exports.getTitle = getTitle;
14
- const getYear = (el) => {
15
- var _a;
16
- return +((_a = el.querySelectorAll('.film-title-info .info')[0]) === null || _a === void 0 ? void 0 : _a.innerText.replace(/[{()}]/g, ''));
17
- };
18
- exports.getYear = getYear;
19
- const getUrl = (el) => {
20
- return el.querySelector('.film-title-name').attributes.href;
21
- };
22
- exports.getUrl = getUrl;
23
- const getColorRating = (el) => {
24
- return (0, global_helper_1.parseColor)(el.querySelector('.article-header i.icon').classNames.split(' ').pop());
25
- };
26
- exports.getColorRating = getColorRating;
27
- const getPoster = (el) => {
28
- const image = el.querySelector('img').attributes.src;
29
- return (0, global_helper_1.addProtocol)(image);
30
- };
31
- exports.getPoster = getPoster;
32
- const getOrigins = (el) => {
33
- var _a;
34
- const originsRaw = el.querySelector('.article-content p .info').text;
35
- const originsAll = (_a = originsRaw === null || originsRaw === void 0 ? void 0 : originsRaw.split(', ')) === null || _a === void 0 ? void 0 : _a[0];
36
- return originsAll === null || originsAll === void 0 ? void 0 : originsAll.split('/').map((country) => country.trim());
37
- };
38
- exports.getOrigins = getOrigins;
39
- const parsePeople = (el, type) => {
40
- let who;
41
- if (type === 'directors')
42
- who = 'Režie:';
43
- if (type === 'actors')
44
- who = 'Hrají:';
45
- const peopleNode = Array.from(el && el.querySelectorAll('.article-content p')).find((el) => el.textContent.includes(who));
46
- if (peopleNode) {
47
- const people = Array.from(peopleNode.querySelectorAll('a'));
48
- return people.map((person) => {
49
- return {
50
- id: (0, global_helper_1.parseIdFromUrl)(person.attributes.href),
51
- name: person.innerText.trim(),
52
- url: `https://www.csfd.cz${person.attributes.href}`
53
- };
54
- });
55
- }
56
- else {
57
- return [];
58
- }
59
- };
60
- exports.parsePeople = parsePeople;
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sleep = exports.parseColor = exports.getUrl = exports.getDate = exports.getColorRating = exports.getYear = exports.getTitle = exports.getType = exports.getUserRating = exports.getId = void 0;
4
- const global_helper_1 = require("./global.helper");
5
- const getId = (el) => {
6
- const url = el.querySelector('td.name .film-title-name').attributes.href;
7
- return (0, global_helper_1.parseIdFromUrl)(url);
8
- };
9
- exports.getId = getId;
10
- const getUserRating = (el) => {
11
- const ratingText = el.querySelector('td.star-rating-only .stars').classNames.split(' ').pop();
12
- const rating = ratingText.includes('stars-') ? +ratingText.split('-').pop() : 0;
13
- return rating;
14
- };
15
- exports.getUserRating = getUserRating;
16
- const getType = (el) => {
17
- const typeText = el.querySelectorAll('td.name .film-title-info .info');
18
- return (typeText.length > 1 ? typeText[1].text.slice(1, -1) : 'film');
19
- };
20
- exports.getType = getType;
21
- const getTitle = (el) => {
22
- return el.querySelector('td.name .film-title-name').text;
23
- };
24
- exports.getTitle = getTitle;
25
- const getYear = (el) => {
26
- return +el.querySelectorAll('td.name .film-title-info .info')[0].text.slice(1, -1);
27
- };
28
- exports.getYear = getYear;
29
- const getColorRating = (el) => {
30
- const color = (0, exports.parseColor)(el.querySelector('td.name .icon').classNames.split(' ').pop());
31
- return color;
32
- };
33
- exports.getColorRating = getColorRating;
34
- const getDate = (el) => {
35
- return el.querySelector('td.date-only').text.trim();
36
- };
37
- exports.getDate = getDate;
38
- const getUrl = (el) => {
39
- const url = el.querySelector('td.name .film-title-name').attributes.href;
40
- return `https://www.csfd.cz${url}`;
41
- };
42
- exports.getUrl = getUrl;
43
- const parseColor = (quality) => {
44
- switch (quality) {
45
- case 'lightgrey':
46
- return 'unknown';
47
- case 'red':
48
- return 'good';
49
- case 'blue':
50
- return 'average';
51
- case 'grey':
52
- return 'bad';
53
- default:
54
- return 'unknown';
55
- }
56
- };
57
- exports.parseColor = parseColor;
58
- // Sleep in loop
59
- const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
60
- exports.sleep = sleep;
package/cjs/index.js DELETED
@@ -1,50 +0,0 @@
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 creator_service_1 = require("./services/creator.service");
14
- const movie_service_1 = require("./services/movie.service");
15
- const search_service_1 = require("./services/search.service");
16
- const user_ratings_service_1 = require("./services/user-ratings.service");
17
- class Csfd {
18
- constructor(userRatingsService, movieService, creatorService, searchService) {
19
- this.userRatingsService = userRatingsService;
20
- this.movieService = movieService;
21
- this.creatorService = creatorService;
22
- this.searchService = searchService;
23
- }
24
- userRatings(user, config) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- return this.userRatingsService.userRatings(user, config);
27
- });
28
- }
29
- movie(movie) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- return this.movieService.movie(+movie);
32
- });
33
- }
34
- creator(creator) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- return this.creatorService.creator(+creator);
37
- });
38
- }
39
- search(text) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- return this.searchService.search(text);
42
- });
43
- }
44
- }
45
- exports.Csfd = Csfd;
46
- const movieScraper = new movie_service_1.MovieScraper();
47
- const userRatingsScraper = new user_ratings_service_1.UserRatingsScraper();
48
- const creatorScraper = new creator_service_1.CreatorScraper();
49
- const searchScraper = new search_service_1.SearchScraper();
50
- exports.csfd = new Csfd(userRatingsScraper, movieScraper, creatorScraper, searchScraper);
@@ -1,43 +0,0 @@
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,69 +0,0 @@
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.MovieScraper = void 0;
13
- const node_html_parser_1 = require("node-html-parser");
14
- const fetchers_1 = require("../fetchers");
15
- const movie_helper_1 = require("../helpers/movie.helper");
16
- const vars_1 = require("../vars");
17
- class MovieScraper {
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
- });
30
- }
31
- buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
32
- this.film = {
33
- id: movieId,
34
- title: (0, movie_helper_1.getTitle)(el),
35
- year: (0, movie_helper_1.getYear)(jsonLd),
36
- duration: (0, movie_helper_1.getDuration)(jsonLd, el),
37
- descriptions: (0, movie_helper_1.getDescriptions)(el),
38
- genres: (0, movie_helper_1.getGenres)(el),
39
- type: (0, movie_helper_1.getType)(el),
40
- url: (0, vars_1.movieUrl)(movieId),
41
- origins: (0, movie_helper_1.getOrigins)(el),
42
- colorRating: (0, movie_helper_1.getColorRating)(pageClasses),
43
- rating: (0, movie_helper_1.getRating)(asideEl),
44
- ratingCount: (0, movie_helper_1.getRatingCount)(asideEl),
45
- titlesOther: (0, movie_helper_1.getTitlesOther)(el),
46
- poster: (0, movie_helper_1.getPoster)(el),
47
- photo: (0, movie_helper_1.getRandomPhoto)(el),
48
- trivia: (0, movie_helper_1.getTrivia)(el),
49
- creators: {
50
- directors: (0, movie_helper_1.getGroup)(el, 'Režie'),
51
- writers: (0, movie_helper_1.getGroup)(el, 'Scénář'),
52
- cinematography: (0, movie_helper_1.getGroup)(el, 'Kamera'),
53
- music: (0, movie_helper_1.getGroup)(el, 'Hudba'),
54
- actors: (0, movie_helper_1.getGroup)(el, 'Hrají'),
55
- basedOn: (0, movie_helper_1.getGroup)(el, 'Předloha'),
56
- producers: (0, movie_helper_1.getGroup)(el, 'Produkce'),
57
- filmEditing: (0, movie_helper_1.getGroup)(el, 'Střih'),
58
- costumeDesign: (0, movie_helper_1.getGroup)(el, 'Kostýmy'),
59
- productionDesign: (0, movie_helper_1.getGroup)(el, 'Scénografie')
60
- },
61
- vod: (0, movie_helper_1.getVods)(asideEl),
62
- tags: (0, movie_helper_1.getTags)(asideEl),
63
- premieres: (0, movie_helper_1.getPremieres)(asideEl),
64
- related: (0, movie_helper_1.getBoxMovies)(asideEl, 'Související'),
65
- similar: (0, movie_helper_1.getBoxMovies)(asideEl, 'Podobné')
66
- };
67
- }
68
- }
69
- exports.MovieScraper = MovieScraper;