node-csfd-api 3.2.0 → 4.0.0-next.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.
- package/README.md +116 -3
- package/dto/movie.d.mts +4 -2
- package/dto/movie.d.ts +4 -2
- package/dto/options.d.mts +9 -0
- package/dto/options.d.ts +9 -0
- package/dto/user-ratings.d.mts +6 -2
- package/dto/user-ratings.d.ts +6 -2
- package/dto/user-reviews.d.mts +28 -0
- package/dto/user-reviews.d.ts +28 -0
- package/helpers/cinema.helper.js.map +1 -1
- package/helpers/cinema.helper.mjs.map +1 -1
- package/helpers/creator.helper.js.map +1 -1
- package/helpers/creator.helper.mjs.map +1 -1
- package/helpers/global.helper.js +2 -0
- package/helpers/global.helper.js.map +1 -1
- package/helpers/global.helper.mjs +2 -1
- package/helpers/global.helper.mjs.map +1 -1
- package/helpers/movie.helper.js +57 -0
- package/helpers/movie.helper.js.map +1 -1
- package/helpers/movie.helper.mjs +57 -1
- package/helpers/movie.helper.mjs.map +1 -1
- package/helpers/search.helper.js.map +1 -1
- package/helpers/search.helper.mjs.map +1 -1
- package/helpers/user-ratings.helper.js +1 -12
- package/helpers/user-ratings.helper.js.map +1 -1
- package/helpers/user-ratings.helper.mjs +2 -12
- package/helpers/user-ratings.helper.mjs.map +1 -1
- package/helpers/user-reviews.helper.js +57 -0
- package/helpers/user-reviews.helper.js.map +1 -0
- package/helpers/user-reviews.helper.mjs +48 -0
- package/helpers/user-reviews.helper.mjs.map +1 -0
- package/index.d.mts +18 -14
- package/index.d.ts +18 -14
- package/index.js +29 -15
- package/index.js.map +1 -1
- package/index.mjs +29 -15
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/services/cinema.service.d.mts +2 -1
- package/services/cinema.service.d.ts +2 -1
- package/services/cinema.service.js +2 -2
- package/services/cinema.service.js.map +1 -1
- package/services/cinema.service.mjs +2 -2
- package/services/cinema.service.mjs.map +1 -1
- package/services/creator.service.d.mts +2 -1
- package/services/creator.service.d.ts +2 -1
- package/services/creator.service.js +2 -2
- package/services/creator.service.js.map +1 -1
- package/services/creator.service.mjs +2 -2
- package/services/creator.service.mjs.map +1 -1
- package/services/movie.service.d.mts +2 -1
- package/services/movie.service.d.ts +2 -1
- package/services/movie.service.js +15 -15
- package/services/movie.service.js.map +1 -1
- package/services/movie.service.mjs +16 -16
- package/services/movie.service.mjs.map +1 -1
- package/services/search.service.d.mts +2 -1
- package/services/search.service.d.ts +2 -1
- package/services/search.service.js +8 -7
- package/services/search.service.js.map +1 -1
- package/services/search.service.mjs +9 -8
- package/services/search.service.mjs.map +1 -1
- package/services/user-ratings.service.d.mts +2 -1
- package/services/user-ratings.service.d.ts +2 -1
- package/services/user-ratings.service.js +7 -5
- package/services/user-ratings.service.js.map +1 -1
- package/services/user-ratings.service.mjs +7 -5
- package/services/user-ratings.service.mjs.map +1 -1
- package/services/user-reviews.service.d.mts +12 -0
- package/services/user-reviews.service.d.ts +12 -0
- package/services/user-reviews.service.js +68 -0
- package/services/user-reviews.service.js.map +1 -0
- package/services/user-reviews.service.mjs +66 -0
- package/services/user-reviews.service.mjs.map +1 -0
- package/vars.js +18 -6
- package/vars.js.map +1 -1
- package/vars.mjs +17 -7
- package/vars.mjs.map +1 -1
package/index.js
CHANGED
|
@@ -3,47 +3,61 @@ const require_creator_service = require('./services/creator.service.js');
|
|
|
3
3
|
const require_movie_service = require('./services/movie.service.js');
|
|
4
4
|
const require_search_service = require('./services/search.service.js');
|
|
5
5
|
const require_user_ratings_service = require('./services/user-ratings.service.js');
|
|
6
|
+
const require_user_reviews_service = require('./services/user-reviews.service.js');
|
|
6
7
|
|
|
7
8
|
//#region src/index.ts
|
|
8
9
|
var Csfd = class {
|
|
9
|
-
constructor(userRatingsService, movieService, creatorService, searchService, cinemaService,
|
|
10
|
+
constructor(userRatingsService, userReviewsService, movieService, creatorService, searchService, cinemaService, defaultOptions) {
|
|
10
11
|
this.userRatingsService = userRatingsService;
|
|
12
|
+
this.userReviewsService = userReviewsService;
|
|
11
13
|
this.movieService = movieService;
|
|
12
14
|
this.creatorService = creatorService;
|
|
13
15
|
this.searchService = searchService;
|
|
14
16
|
this.cinemaService = cinemaService;
|
|
15
|
-
this.
|
|
17
|
+
this.defaultOptions = defaultOptions;
|
|
16
18
|
}
|
|
17
|
-
setOptions({
|
|
18
|
-
this.
|
|
19
|
+
setOptions({ request, language }) {
|
|
20
|
+
if (request !== void 0) this.defaultOptions = {
|
|
21
|
+
...this.defaultOptions,
|
|
22
|
+
request
|
|
23
|
+
};
|
|
24
|
+
if (language !== void 0) this.defaultOptions = {
|
|
25
|
+
...this.defaultOptions,
|
|
26
|
+
language
|
|
27
|
+
};
|
|
19
28
|
}
|
|
20
|
-
async userRatings(user, config,
|
|
21
|
-
const opts =
|
|
29
|
+
async userRatings(user, config, options) {
|
|
30
|
+
const opts = options ?? this.defaultOptions;
|
|
22
31
|
return this.userRatingsService.userRatings(user, config, opts);
|
|
23
32
|
}
|
|
24
|
-
async
|
|
25
|
-
const opts =
|
|
33
|
+
async userReviews(user, config, options) {
|
|
34
|
+
const opts = options ?? this.defaultOptions;
|
|
35
|
+
return this.userReviewsService.userReviews(user, config, opts);
|
|
36
|
+
}
|
|
37
|
+
async movie(movie, options) {
|
|
38
|
+
const opts = options ?? this.defaultOptions;
|
|
26
39
|
return this.movieService.movie(+movie, opts);
|
|
27
40
|
}
|
|
28
|
-
async creator(creator,
|
|
29
|
-
const opts =
|
|
41
|
+
async creator(creator, options) {
|
|
42
|
+
const opts = options ?? this.defaultOptions;
|
|
30
43
|
return this.creatorService.creator(+creator, opts);
|
|
31
44
|
}
|
|
32
|
-
async search(text,
|
|
33
|
-
const opts =
|
|
45
|
+
async search(text, options) {
|
|
46
|
+
const opts = options ?? this.defaultOptions;
|
|
34
47
|
return this.searchService.search(text, opts);
|
|
35
48
|
}
|
|
36
|
-
async cinema(district, period,
|
|
37
|
-
const opts =
|
|
49
|
+
async cinema(district, period, options) {
|
|
50
|
+
const opts = options ?? this.defaultOptions;
|
|
38
51
|
return this.cinemaService.cinemas(+district, period, opts);
|
|
39
52
|
}
|
|
40
53
|
};
|
|
41
54
|
const movieScraper = new require_movie_service.MovieScraper();
|
|
42
55
|
const userRatingsScraper = new require_user_ratings_service.UserRatingsScraper();
|
|
56
|
+
const userReviewsScraper = new require_user_reviews_service.UserReviewsScraper();
|
|
43
57
|
const cinemaScraper = new require_cinema_service.CinemaScraper();
|
|
44
58
|
const creatorScraper = new require_creator_service.CreatorScraper();
|
|
45
59
|
const searchScraper = new require_search_service.SearchScraper();
|
|
46
|
-
const csfd = new Csfd(userRatingsScraper, movieScraper, creatorScraper, searchScraper, cinemaScraper);
|
|
60
|
+
const csfd = new Csfd(userRatingsScraper, userReviewsScraper, movieScraper, creatorScraper, searchScraper, cinemaScraper);
|
|
47
61
|
|
|
48
62
|
//#endregion
|
|
49
63
|
exports.Csfd = Csfd;
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["userRatingsService: UserRatingsScraper","movieService: MovieScraper","creatorService: CreatorScraper","searchService: SearchScraper","cinemaService: CinemaScraper","MovieScraper","UserRatingsScraper","CinemaScraper","CreatorScraper","SearchScraper"],"sources":["../src/index.ts"],"sourcesContent":["import { CSFDCinema, CSFDCinemaPeriod } from './dto/cinema';\nimport { CSFDCreator } from './dto/creator';\nimport { CSFDMovie } from './dto/movie';\nimport { CSFDSearch } from './dto/search';\nimport { CSFDUserRatingConfig, CSFDUserRatings } from './dto/user-ratings';\nimport { CinemaScraper } from './services/cinema.service';\nimport { CreatorScraper } from './services/creator.service';\nimport { MovieScraper } from './services/movie.service';\nimport { SearchScraper } from './services/search.service';\nimport { UserRatingsScraper } from './services/user-ratings.service';\n\nexport class Csfd {\n private
|
|
1
|
+
{"version":3,"file":"index.js","names":["userRatingsService: UserRatingsScraper","userReviewsService: UserReviewsScraper","movieService: MovieScraper","creatorService: CreatorScraper","searchService: SearchScraper","cinemaService: CinemaScraper","MovieScraper","UserRatingsScraper","UserReviewsScraper","CinemaScraper","CreatorScraper","SearchScraper"],"sources":["../src/index.ts"],"sourcesContent":["import { CSFDCinema, CSFDCinemaPeriod } from './dto/cinema';\nimport { CSFDCreator } from './dto/creator';\nimport { CSFDMovie } from './dto/movie';\nimport { CSFDSearch } from './dto/search';\nimport { CSFDUserRatingConfig, CSFDUserRatings } from './dto/user-ratings';\nimport { CSFDUserReviews, CSFDUserReviewsConfig } from './dto/user-reviews';\nimport { CinemaScraper } from './services/cinema.service';\nimport { CreatorScraper } from './services/creator.service';\nimport { MovieScraper } from './services/movie.service';\nimport { SearchScraper } from './services/search.service';\nimport { UserRatingsScraper } from './services/user-ratings.service';\nimport { UserReviewsScraper } from './services/user-reviews.service';\nimport { CSFDOptions } from './types';\n\nexport class Csfd {\n private defaultOptions?: CSFDOptions;\n\n constructor(\n private userRatingsService: UserRatingsScraper,\n private userReviewsService: UserReviewsScraper,\n private movieService: MovieScraper,\n private creatorService: CreatorScraper,\n private searchService: SearchScraper,\n private cinemaService: CinemaScraper,\n defaultOptions?: CSFDOptions\n ) {\n this.defaultOptions = defaultOptions;\n }\n\n public setOptions({ request, language }: CSFDOptions): void {\n if (request !== undefined) {\n this.defaultOptions = { ...this.defaultOptions, request };\n }\n if (language !== undefined) {\n this.defaultOptions = { ...this.defaultOptions, language };\n }\n }\n\n public async userRatings(\n user: string | number,\n config?: CSFDUserRatingConfig,\n options?: CSFDOptions\n ): Promise<CSFDUserRatings[]> {\n const opts = options ?? this.defaultOptions;\n return this.userRatingsService.userRatings(user, config, opts);\n }\n\n public async userReviews(\n user: string | number,\n config?: CSFDUserReviewsConfig,\n options?: CSFDOptions\n ): Promise<CSFDUserReviews[]> {\n const opts = options ?? this.defaultOptions;\n return this.userReviewsService.userReviews(user, config, opts);\n }\n\n public async movie(movie: number, options?: CSFDOptions): Promise<CSFDMovie> {\n const opts = options ?? this.defaultOptions;\n return this.movieService.movie(+movie, opts);\n }\n\n public async creator(creator: number, options?: CSFDOptions): Promise<CSFDCreator> {\n const opts = options ?? this.defaultOptions;\n return this.creatorService.creator(+creator, opts);\n }\n\n public async search(text: string, options?: CSFDOptions): Promise<CSFDSearch> {\n const opts = options ?? this.defaultOptions;\n return this.searchService.search(text, opts);\n }\n\n public async cinema(\n district: number | string,\n period: CSFDCinemaPeriod,\n options?: CSFDOptions\n ): Promise<CSFDCinema[]> {\n const opts = options ?? this.defaultOptions;\n return this.cinemaService.cinemas(+district, period, opts);\n }\n}\n\nconst movieScraper = new MovieScraper();\nconst userRatingsScraper = new UserRatingsScraper();\nconst userReviewsScraper = new UserReviewsScraper();\nconst cinemaScraper = new CinemaScraper();\nconst creatorScraper = new CreatorScraper();\nconst searchScraper = new SearchScraper();\n\nexport const csfd = new Csfd(\n userRatingsScraper,\n userReviewsScraper,\n movieScraper,\n creatorScraper,\n searchScraper,\n cinemaScraper\n);\n\nexport type * from './dto';\n\n"],"mappings":";;;;;;;;AAcA,IAAa,OAAb,MAAkB;CAGhB,YACE,AAAQA,oBACR,AAAQC,oBACR,AAAQC,cACR,AAAQC,gBACR,AAAQC,eACR,AAAQC,eACR,gBACA;EAPQ;EACA;EACA;EACA;EACA;EACA;AAGR,OAAK,iBAAiB;;CAGxB,AAAO,WAAW,EAAE,SAAS,YAA+B;AAC1D,MAAI,YAAY,OACd,MAAK,iBAAiB;GAAE,GAAG,KAAK;GAAgB;GAAS;AAE3D,MAAI,aAAa,OACf,MAAK,iBAAiB;GAAE,GAAG,KAAK;GAAgB;GAAU;;CAI9D,MAAa,YACX,MACA,QACA,SAC4B;EAC5B,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,mBAAmB,YAAY,MAAM,QAAQ,KAAK;;CAGhE,MAAa,YACX,MACA,QACA,SAC4B;EAC5B,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,mBAAmB,YAAY,MAAM,QAAQ,KAAK;;CAGhE,MAAa,MAAM,OAAe,SAA2C;EAC3E,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,aAAa,MAAM,CAAC,OAAO,KAAK;;CAG9C,MAAa,QAAQ,SAAiB,SAA6C;EACjF,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,eAAe,QAAQ,CAAC,SAAS,KAAK;;CAGpD,MAAa,OAAO,MAAc,SAA4C;EAC5E,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,cAAc,OAAO,MAAM,KAAK;;CAG9C,MAAa,OACX,UACA,QACA,SACuB;EACvB,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,cAAc,QAAQ,CAAC,UAAU,QAAQ,KAAK;;;AAI9D,MAAM,eAAe,IAAIC,oCAAc;AACvC,MAAM,qBAAqB,IAAIC,iDAAoB;AACnD,MAAM,qBAAqB,IAAIC,iDAAoB;AACnD,MAAM,gBAAgB,IAAIC,sCAAe;AACzC,MAAM,iBAAiB,IAAIC,wCAAgB;AAC3C,MAAM,gBAAgB,IAAIC,sCAAe;AAEzC,MAAa,OAAO,IAAI,KACtB,oBACA,oBACA,cACA,gBACA,eACA,cACD"}
|
package/index.mjs
CHANGED
|
@@ -3,47 +3,61 @@ import { CreatorScraper } from "./services/creator.service.mjs";
|
|
|
3
3
|
import { MovieScraper } from "./services/movie.service.mjs";
|
|
4
4
|
import { SearchScraper } from "./services/search.service.mjs";
|
|
5
5
|
import { UserRatingsScraper } from "./services/user-ratings.service.mjs";
|
|
6
|
+
import { UserReviewsScraper } from "./services/user-reviews.service.mjs";
|
|
6
7
|
|
|
7
8
|
//#region src/index.ts
|
|
8
9
|
var Csfd = class {
|
|
9
|
-
constructor(userRatingsService, movieService, creatorService, searchService, cinemaService,
|
|
10
|
+
constructor(userRatingsService, userReviewsService, movieService, creatorService, searchService, cinemaService, defaultOptions) {
|
|
10
11
|
this.userRatingsService = userRatingsService;
|
|
12
|
+
this.userReviewsService = userReviewsService;
|
|
11
13
|
this.movieService = movieService;
|
|
12
14
|
this.creatorService = creatorService;
|
|
13
15
|
this.searchService = searchService;
|
|
14
16
|
this.cinemaService = cinemaService;
|
|
15
|
-
this.
|
|
17
|
+
this.defaultOptions = defaultOptions;
|
|
16
18
|
}
|
|
17
|
-
setOptions({
|
|
18
|
-
this.
|
|
19
|
+
setOptions({ request, language }) {
|
|
20
|
+
if (request !== void 0) this.defaultOptions = {
|
|
21
|
+
...this.defaultOptions,
|
|
22
|
+
request
|
|
23
|
+
};
|
|
24
|
+
if (language !== void 0) this.defaultOptions = {
|
|
25
|
+
...this.defaultOptions,
|
|
26
|
+
language
|
|
27
|
+
};
|
|
19
28
|
}
|
|
20
|
-
async userRatings(user, config,
|
|
21
|
-
const opts =
|
|
29
|
+
async userRatings(user, config, options) {
|
|
30
|
+
const opts = options ?? this.defaultOptions;
|
|
22
31
|
return this.userRatingsService.userRatings(user, config, opts);
|
|
23
32
|
}
|
|
24
|
-
async
|
|
25
|
-
const opts =
|
|
33
|
+
async userReviews(user, config, options) {
|
|
34
|
+
const opts = options ?? this.defaultOptions;
|
|
35
|
+
return this.userReviewsService.userReviews(user, config, opts);
|
|
36
|
+
}
|
|
37
|
+
async movie(movie, options) {
|
|
38
|
+
const opts = options ?? this.defaultOptions;
|
|
26
39
|
return this.movieService.movie(+movie, opts);
|
|
27
40
|
}
|
|
28
|
-
async creator(creator,
|
|
29
|
-
const opts =
|
|
41
|
+
async creator(creator, options) {
|
|
42
|
+
const opts = options ?? this.defaultOptions;
|
|
30
43
|
return this.creatorService.creator(+creator, opts);
|
|
31
44
|
}
|
|
32
|
-
async search(text,
|
|
33
|
-
const opts =
|
|
45
|
+
async search(text, options) {
|
|
46
|
+
const opts = options ?? this.defaultOptions;
|
|
34
47
|
return this.searchService.search(text, opts);
|
|
35
48
|
}
|
|
36
|
-
async cinema(district, period,
|
|
37
|
-
const opts =
|
|
49
|
+
async cinema(district, period, options) {
|
|
50
|
+
const opts = options ?? this.defaultOptions;
|
|
38
51
|
return this.cinemaService.cinemas(+district, period, opts);
|
|
39
52
|
}
|
|
40
53
|
};
|
|
41
54
|
const movieScraper = new MovieScraper();
|
|
42
55
|
const userRatingsScraper = new UserRatingsScraper();
|
|
56
|
+
const userReviewsScraper = new UserReviewsScraper();
|
|
43
57
|
const cinemaScraper = new CinemaScraper();
|
|
44
58
|
const creatorScraper = new CreatorScraper();
|
|
45
59
|
const searchScraper = new SearchScraper();
|
|
46
|
-
const csfd = new Csfd(userRatingsScraper, movieScraper, creatorScraper, searchScraper, cinemaScraper);
|
|
60
|
+
const csfd = new Csfd(userRatingsScraper, userReviewsScraper, movieScraper, creatorScraper, searchScraper, cinemaScraper);
|
|
47
61
|
|
|
48
62
|
//#endregion
|
|
49
63
|
export { Csfd, csfd };
|
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["userRatingsService: UserRatingsScraper","movieService: MovieScraper","creatorService: CreatorScraper","searchService: SearchScraper","cinemaService: CinemaScraper"],"sources":["../src/index.ts"],"sourcesContent":["import { CSFDCinema, CSFDCinemaPeriod } from './dto/cinema';\nimport { CSFDCreator } from './dto/creator';\nimport { CSFDMovie } from './dto/movie';\nimport { CSFDSearch } from './dto/search';\nimport { CSFDUserRatingConfig, CSFDUserRatings } from './dto/user-ratings';\nimport { CinemaScraper } from './services/cinema.service';\nimport { CreatorScraper } from './services/creator.service';\nimport { MovieScraper } from './services/movie.service';\nimport { SearchScraper } from './services/search.service';\nimport { UserRatingsScraper } from './services/user-ratings.service';\n\nexport class Csfd {\n private
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["userRatingsService: UserRatingsScraper","userReviewsService: UserReviewsScraper","movieService: MovieScraper","creatorService: CreatorScraper","searchService: SearchScraper","cinemaService: CinemaScraper"],"sources":["../src/index.ts"],"sourcesContent":["import { CSFDCinema, CSFDCinemaPeriod } from './dto/cinema';\nimport { CSFDCreator } from './dto/creator';\nimport { CSFDMovie } from './dto/movie';\nimport { CSFDSearch } from './dto/search';\nimport { CSFDUserRatingConfig, CSFDUserRatings } from './dto/user-ratings';\nimport { CSFDUserReviews, CSFDUserReviewsConfig } from './dto/user-reviews';\nimport { CinemaScraper } from './services/cinema.service';\nimport { CreatorScraper } from './services/creator.service';\nimport { MovieScraper } from './services/movie.service';\nimport { SearchScraper } from './services/search.service';\nimport { UserRatingsScraper } from './services/user-ratings.service';\nimport { UserReviewsScraper } from './services/user-reviews.service';\nimport { CSFDOptions } from './types';\n\nexport class Csfd {\n private defaultOptions?: CSFDOptions;\n\n constructor(\n private userRatingsService: UserRatingsScraper,\n private userReviewsService: UserReviewsScraper,\n private movieService: MovieScraper,\n private creatorService: CreatorScraper,\n private searchService: SearchScraper,\n private cinemaService: CinemaScraper,\n defaultOptions?: CSFDOptions\n ) {\n this.defaultOptions = defaultOptions;\n }\n\n public setOptions({ request, language }: CSFDOptions): void {\n if (request !== undefined) {\n this.defaultOptions = { ...this.defaultOptions, request };\n }\n if (language !== undefined) {\n this.defaultOptions = { ...this.defaultOptions, language };\n }\n }\n\n public async userRatings(\n user: string | number,\n config?: CSFDUserRatingConfig,\n options?: CSFDOptions\n ): Promise<CSFDUserRatings[]> {\n const opts = options ?? this.defaultOptions;\n return this.userRatingsService.userRatings(user, config, opts);\n }\n\n public async userReviews(\n user: string | number,\n config?: CSFDUserReviewsConfig,\n options?: CSFDOptions\n ): Promise<CSFDUserReviews[]> {\n const opts = options ?? this.defaultOptions;\n return this.userReviewsService.userReviews(user, config, opts);\n }\n\n public async movie(movie: number, options?: CSFDOptions): Promise<CSFDMovie> {\n const opts = options ?? this.defaultOptions;\n return this.movieService.movie(+movie, opts);\n }\n\n public async creator(creator: number, options?: CSFDOptions): Promise<CSFDCreator> {\n const opts = options ?? this.defaultOptions;\n return this.creatorService.creator(+creator, opts);\n }\n\n public async search(text: string, options?: CSFDOptions): Promise<CSFDSearch> {\n const opts = options ?? this.defaultOptions;\n return this.searchService.search(text, opts);\n }\n\n public async cinema(\n district: number | string,\n period: CSFDCinemaPeriod,\n options?: CSFDOptions\n ): Promise<CSFDCinema[]> {\n const opts = options ?? this.defaultOptions;\n return this.cinemaService.cinemas(+district, period, opts);\n }\n}\n\nconst movieScraper = new MovieScraper();\nconst userRatingsScraper = new UserRatingsScraper();\nconst userReviewsScraper = new UserReviewsScraper();\nconst cinemaScraper = new CinemaScraper();\nconst creatorScraper = new CreatorScraper();\nconst searchScraper = new SearchScraper();\n\nexport const csfd = new Csfd(\n userRatingsScraper,\n userReviewsScraper,\n movieScraper,\n creatorScraper,\n searchScraper,\n cinemaScraper\n);\n\nexport type * from './dto';\n\n"],"mappings":";;;;;;;;AAcA,IAAa,OAAb,MAAkB;CAGhB,YACE,AAAQA,oBACR,AAAQC,oBACR,AAAQC,cACR,AAAQC,gBACR,AAAQC,eACR,AAAQC,eACR,gBACA;EAPQ;EACA;EACA;EACA;EACA;EACA;AAGR,OAAK,iBAAiB;;CAGxB,AAAO,WAAW,EAAE,SAAS,YAA+B;AAC1D,MAAI,YAAY,OACd,MAAK,iBAAiB;GAAE,GAAG,KAAK;GAAgB;GAAS;AAE3D,MAAI,aAAa,OACf,MAAK,iBAAiB;GAAE,GAAG,KAAK;GAAgB;GAAU;;CAI9D,MAAa,YACX,MACA,QACA,SAC4B;EAC5B,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,mBAAmB,YAAY,MAAM,QAAQ,KAAK;;CAGhE,MAAa,YACX,MACA,QACA,SAC4B;EAC5B,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,mBAAmB,YAAY,MAAM,QAAQ,KAAK;;CAGhE,MAAa,MAAM,OAAe,SAA2C;EAC3E,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,aAAa,MAAM,CAAC,OAAO,KAAK;;CAG9C,MAAa,QAAQ,SAAiB,SAA6C;EACjF,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,eAAe,QAAQ,CAAC,SAAS,KAAK;;CAGpD,MAAa,OAAO,MAAc,SAA4C;EAC5E,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,cAAc,OAAO,MAAM,KAAK;;CAG9C,MAAa,OACX,UACA,QACA,SACuB;EACvB,MAAM,OAAO,WAAW,KAAK;AAC7B,SAAO,KAAK,cAAc,QAAQ,CAAC,UAAU,QAAQ,KAAK;;;AAI9D,MAAM,eAAe,IAAI,cAAc;AACvC,MAAM,qBAAqB,IAAI,oBAAoB;AACnD,MAAM,qBAAqB,IAAI,oBAAoB;AACnD,MAAM,gBAAgB,IAAI,eAAe;AACzC,MAAM,iBAAiB,IAAI,gBAAgB;AAC3C,MAAM,gBAAgB,IAAI,eAAe;AAEzC,MAAa,OAAO,IAAI,KACtB,oBACA,oBACA,cACA,gBACA,eACA,cACD"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDCinema, CSFDCinemaPeriod } from "../dto/cinema.mjs";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.mjs";
|
|
2
3
|
|
|
3
4
|
//#region src/services/cinema.service.d.ts
|
|
4
5
|
declare class CinemaScraper {
|
|
5
|
-
cinemas(district?: number, period?: CSFDCinemaPeriod,
|
|
6
|
+
cinemas(district?: number, period?: CSFDCinemaPeriod, options?: CSFDOptions): Promise<CSFDCinema[]>;
|
|
6
7
|
private buildCinemas;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDCinema, CSFDCinemaPeriod } from "../dto/cinema.js";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.js";
|
|
2
3
|
|
|
3
4
|
//#region src/services/cinema.service.d.ts
|
|
4
5
|
declare class CinemaScraper {
|
|
5
|
-
cinemas(district?: number, period?: CSFDCinemaPeriod,
|
|
6
|
+
cinemas(district?: number, period?: CSFDCinemaPeriod, options?: CSFDOptions): Promise<CSFDCinema[]>;
|
|
6
7
|
private buildCinemas;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
@@ -7,8 +7,8 @@ node_html_parser = require_rolldown_runtime.__toESM(node_html_parser);
|
|
|
7
7
|
|
|
8
8
|
//#region src/services/cinema.service.ts
|
|
9
9
|
var CinemaScraper = class {
|
|
10
|
-
async cinemas(district = 1, period = "today",
|
|
11
|
-
const contentNode = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.cinemasUrl(district, period), { ...
|
|
10
|
+
async cinemas(district = 1, period = "today", options) {
|
|
11
|
+
const contentNode = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.cinemasUrl(district, period, { language: options?.language }), { ...options?.request })).querySelectorAll("#snippet--cinemas section[id*=\"cinema-\"]");
|
|
12
12
|
return this.buildCinemas(contentNode);
|
|
13
13
|
}
|
|
14
14
|
buildCinemas(contentNode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cinema.service.js","names":["fetchPage","cinemasUrl","cinemas: CSFDCinema[]","parseCinema","cinema: CSFDCinema","getCinemaId","getCinemaUrl","getCinemaCoords","getGroupedFilmsByDate"],"sources":["../../src/services/cinema.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCinema, CSFDCinemaPeriod } from '../dto/cinema';\nimport { fetchPage } from '../fetchers';\nimport { cinemasUrl } from '../vars';\nimport {\n getCinemaCoords,\n getCinemaId,\n getCinemaUrl,\n getGroupedFilmsByDate,\n parseCinema\n} from './../helpers/cinema.helper';\n\nexport class CinemaScraper {\n public async cinemas(\n district: number = 1,\n period: CSFDCinemaPeriod = 'today',\n
|
|
1
|
+
{"version":3,"file":"cinema.service.js","names":["fetchPage","cinemasUrl","cinemas: CSFDCinema[]","parseCinema","cinema: CSFDCinema","getCinemaId","getCinemaUrl","getCinemaCoords","getGroupedFilmsByDate"],"sources":["../../src/services/cinema.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCinema, CSFDCinemaPeriod } from '../dto/cinema';\nimport { fetchPage } from '../fetchers';\nimport { CSFDOptions } from '../types';\nimport { cinemasUrl } from '../vars';\nimport {\n getCinemaCoords,\n getCinemaId,\n getCinemaUrl,\n getGroupedFilmsByDate,\n parseCinema\n} from './../helpers/cinema.helper';\n\nexport class CinemaScraper {\n public async cinemas(\n district: number = 1,\n period: CSFDCinemaPeriod = 'today',\n options?: CSFDOptions\n ): Promise<CSFDCinema[]> {\n const url = cinemasUrl(district, period, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\n const cinemasHtml = parse(response);\n\n const contentNode = cinemasHtml.querySelectorAll('#snippet--cinemas section[id*=\"cinema-\"]');\n\n return this.buildCinemas(contentNode);\n }\n\n private buildCinemas(contentNode: HTMLElement[]): CSFDCinema[] {\n const cinemas: CSFDCinema[] = [];\n\n contentNode.forEach((x) => {\n const cinemaInfo = parseCinema(x);\n const cinema: CSFDCinema = {\n id: getCinemaId(x),\n name: cinemaInfo?.name,\n city: cinemaInfo?.city,\n url: getCinemaUrl(x),\n coords: getCinemaCoords(x),\n screenings: getGroupedFilmsByDate(x)\n };\n cinemas.push(cinema);\n });\n\n return cinemas;\n }\n}\n"],"mappings":";;;;;;;;AAaA,IAAa,gBAAb,MAA2B;CACzB,MAAa,QACX,WAAmB,GACnB,SAA2B,SAC3B,SACuB;EAKvB,MAAM,0CAHW,MAAMA,wBADXC,wBAAW,UAAU,QAAQ,EAAE,UAAU,SAAS,UAAU,CAAC,EACnC,EAAE,GAAG,SAAS,SAAS,CAAC,CAC3B,CAEH,iBAAiB,6CAA2C;AAE5F,SAAO,KAAK,aAAa,YAAY;;CAGvC,AAAQ,aAAa,aAA0C;EAC7D,MAAMC,UAAwB,EAAE;AAEhC,cAAY,SAAS,MAAM;GACzB,MAAM,aAAaC,kCAAY,EAAE;GACjC,MAAMC,SAAqB;IACzB,IAAIC,kCAAY,EAAE;IAClB,MAAM,YAAY;IAClB,MAAM,YAAY;IAClB,KAAKC,mCAAa,EAAE;IACpB,QAAQC,sCAAgB,EAAE;IAC1B,YAAYC,4CAAsB,EAAE;IACrC;AACD,WAAQ,KAAK,OAAO;IACpB;AAEF,SAAO"}
|
|
@@ -5,8 +5,8 @@ import { parse } from "node-html-parser";
|
|
|
5
5
|
|
|
6
6
|
//#region src/services/cinema.service.ts
|
|
7
7
|
var CinemaScraper = class {
|
|
8
|
-
async cinemas(district = 1, period = "today",
|
|
9
|
-
const contentNode = parse(await fetchPage(cinemasUrl(district, period), { ...
|
|
8
|
+
async cinemas(district = 1, period = "today", options) {
|
|
9
|
+
const contentNode = parse(await fetchPage(cinemasUrl(district, period, { language: options?.language }), { ...options?.request })).querySelectorAll("#snippet--cinemas section[id*=\"cinema-\"]");
|
|
10
10
|
return this.buildCinemas(contentNode);
|
|
11
11
|
}
|
|
12
12
|
buildCinemas(contentNode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cinema.service.mjs","names":["cinemas: CSFDCinema[]","cinema: CSFDCinema"],"sources":["../../src/services/cinema.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCinema, CSFDCinemaPeriod } from '../dto/cinema';\nimport { fetchPage } from '../fetchers';\nimport { cinemasUrl } from '../vars';\nimport {\n getCinemaCoords,\n getCinemaId,\n getCinemaUrl,\n getGroupedFilmsByDate,\n parseCinema\n} from './../helpers/cinema.helper';\n\nexport class CinemaScraper {\n public async cinemas(\n district: number = 1,\n period: CSFDCinemaPeriod = 'today',\n
|
|
1
|
+
{"version":3,"file":"cinema.service.mjs","names":["cinemas: CSFDCinema[]","cinema: CSFDCinema"],"sources":["../../src/services/cinema.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCinema, CSFDCinemaPeriod } from '../dto/cinema';\nimport { fetchPage } from '../fetchers';\nimport { CSFDOptions } from '../types';\nimport { cinemasUrl } from '../vars';\nimport {\n getCinemaCoords,\n getCinemaId,\n getCinemaUrl,\n getGroupedFilmsByDate,\n parseCinema\n} from './../helpers/cinema.helper';\n\nexport class CinemaScraper {\n public async cinemas(\n district: number = 1,\n period: CSFDCinemaPeriod = 'today',\n options?: CSFDOptions\n ): Promise<CSFDCinema[]> {\n const url = cinemasUrl(district, period, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\n const cinemasHtml = parse(response);\n\n const contentNode = cinemasHtml.querySelectorAll('#snippet--cinemas section[id*=\"cinema-\"]');\n\n return this.buildCinemas(contentNode);\n }\n\n private buildCinemas(contentNode: HTMLElement[]): CSFDCinema[] {\n const cinemas: CSFDCinema[] = [];\n\n contentNode.forEach((x) => {\n const cinemaInfo = parseCinema(x);\n const cinema: CSFDCinema = {\n id: getCinemaId(x),\n name: cinemaInfo?.name,\n city: cinemaInfo?.city,\n url: getCinemaUrl(x),\n coords: getCinemaCoords(x),\n screenings: getGroupedFilmsByDate(x)\n };\n cinemas.push(cinema);\n });\n\n return cinemas;\n }\n}\n"],"mappings":";;;;;;AAaA,IAAa,gBAAb,MAA2B;CACzB,MAAa,QACX,WAAmB,GACnB,SAA2B,SAC3B,SACuB;EAKvB,MAAM,cAFc,MADH,MAAM,UADX,WAAW,UAAU,QAAQ,EAAE,UAAU,SAAS,UAAU,CAAC,EACnC,EAAE,GAAG,SAAS,SAAS,CAAC,CAC3B,CAEH,iBAAiB,6CAA2C;AAE5F,SAAO,KAAK,aAAa,YAAY;;CAGvC,AAAQ,aAAa,aAA0C;EAC7D,MAAMA,UAAwB,EAAE;AAEhC,cAAY,SAAS,MAAM;GACzB,MAAM,aAAa,YAAY,EAAE;GACjC,MAAMC,SAAqB;IACzB,IAAI,YAAY,EAAE;IAClB,MAAM,YAAY;IAClB,MAAM,YAAY;IAClB,KAAK,aAAa,EAAE;IACpB,QAAQ,gBAAgB,EAAE;IAC1B,YAAY,sBAAsB,EAAE;IACrC;AACD,WAAQ,KAAK,OAAO;IACpB;AAEF,SAAO"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDCreator } from "../dto/creator.mjs";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.mjs";
|
|
2
3
|
|
|
3
4
|
//#region src/services/creator.service.d.ts
|
|
4
5
|
declare class CreatorScraper {
|
|
5
|
-
creator(creatorId: number,
|
|
6
|
+
creator(creatorId: number, options?: CSFDOptions): Promise<CSFDCreator>;
|
|
6
7
|
private buildCreator;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDCreator } from "../dto/creator.js";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.js";
|
|
2
3
|
|
|
3
4
|
//#region src/services/creator.service.d.ts
|
|
4
5
|
declare class CreatorScraper {
|
|
5
|
-
creator(creatorId: number,
|
|
6
|
+
creator(creatorId: number, options?: CSFDOptions): Promise<CSFDCreator>;
|
|
6
7
|
private buildCreator;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
@@ -7,10 +7,10 @@ node_html_parser = require_rolldown_runtime.__toESM(node_html_parser);
|
|
|
7
7
|
|
|
8
8
|
//#region src/services/creator.service.ts
|
|
9
9
|
var CreatorScraper = class {
|
|
10
|
-
async creator(creatorId,
|
|
10
|
+
async creator(creatorId, options) {
|
|
11
11
|
const id = Number(creatorId);
|
|
12
12
|
if (isNaN(id)) throw new Error("node-csfd-api: creatorId must be a valid number");
|
|
13
|
-
const creatorHtml = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.creatorUrl(id), { ...
|
|
13
|
+
const creatorHtml = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.creatorUrl(id, { language: options?.language }), { ...options?.request }));
|
|
14
14
|
const asideNode = creatorHtml.querySelector(".creator-about");
|
|
15
15
|
const filmsNode = creatorHtml.querySelector(".creator-filmography");
|
|
16
16
|
return this.buildCreator(+creatorId, asideNode, filmsNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.service.js","names":["fetchPage","creatorUrl","getCreatorName","getCreatorBirthdayInfo","getCreatorPhoto","getCreatorBio","getCreatorFilms"],"sources":["../../src/services/creator.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCreator } from '../dto/creator';\nimport { fetchPage } from '../fetchers';\nimport {\n getCreatorBio,\n getCreatorBirthdayInfo,\n getCreatorFilms,\n getCreatorName,\n getCreatorPhoto\n} from '../helpers/creator.helper';\nimport { creatorUrl } from '../vars';\n\nexport class CreatorScraper {\n public async creator(creatorId: number,
|
|
1
|
+
{"version":3,"file":"creator.service.js","names":["fetchPage","creatorUrl","getCreatorName","getCreatorBirthdayInfo","getCreatorPhoto","getCreatorBio","getCreatorFilms"],"sources":["../../src/services/creator.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCreator } from '../dto/creator';\nimport { fetchPage } from '../fetchers';\nimport {\n getCreatorBio,\n getCreatorBirthdayInfo,\n getCreatorFilms,\n getCreatorName,\n getCreatorPhoto\n} from '../helpers/creator.helper';\nimport { CSFDOptions } from '../types';\nimport { creatorUrl } from '../vars';\n\nexport class CreatorScraper {\n public async creator(creatorId: number, options?: CSFDOptions): Promise<CSFDCreator> {\n const id = Number(creatorId);\n if (isNaN(id)) {\n throw new Error('node-csfd-api: creatorId must be a valid number');\n }\n const url = creatorUrl(id, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\n\n const creatorHtml = parse(response);\n\n const asideNode = creatorHtml.querySelector('.creator-about');\n const filmsNode = creatorHtml.querySelector('.creator-filmography');\n return this.buildCreator(+creatorId, asideNode, filmsNode);\n }\n\n private buildCreator(id: number, asideEl: HTMLElement, filmsNode: HTMLElement): CSFDCreator {\n return {\n id,\n name: getCreatorName(asideEl),\n birthday: getCreatorBirthdayInfo(asideEl)?.birthday,\n birthplace: getCreatorBirthdayInfo(asideEl)?.birthPlace,\n photo: getCreatorPhoto(asideEl),\n age: getCreatorBirthdayInfo(asideEl)?.age || null,\n bio: getCreatorBio(asideEl),\n films: getCreatorFilms(filmsNode)\n };\n }\n}\n"],"mappings":";;;;;;;;AAaA,IAAa,iBAAb,MAA4B;CAC1B,MAAa,QAAQ,WAAmB,SAA6C;EACnF,MAAM,KAAK,OAAO,UAAU;AAC5B,MAAI,MAAM,GAAG,CACX,OAAM,IAAI,MAAM,kDAAkD;EAKpE,MAAM,0CAFW,MAAMA,wBADXC,wBAAW,IAAI,EAAE,UAAU,SAAS,UAAU,CAAC,EACrB,EAAE,GAAG,SAAS,SAAS,CAAC,CAE3B;EAEnC,MAAM,YAAY,YAAY,cAAc,iBAAiB;EAC7D,MAAM,YAAY,YAAY,cAAc,uBAAuB;AACnE,SAAO,KAAK,aAAa,CAAC,WAAW,WAAW,UAAU;;CAG5D,AAAQ,aAAa,IAAY,SAAsB,WAAqC;AAC1F,SAAO;GACL;GACA,MAAMC,sCAAe,QAAQ;GAC7B,UAAUC,8CAAuB,QAAQ,EAAE;GAC3C,YAAYA,8CAAuB,QAAQ,EAAE;GAC7C,OAAOC,uCAAgB,QAAQ;GAC/B,KAAKD,8CAAuB,QAAQ,EAAE,OAAO;GAC7C,KAAKE,qCAAc,QAAQ;GAC3B,OAAOC,uCAAgB,UAAU;GAClC"}
|
|
@@ -5,10 +5,10 @@ import { parse } from "node-html-parser";
|
|
|
5
5
|
|
|
6
6
|
//#region src/services/creator.service.ts
|
|
7
7
|
var CreatorScraper = class {
|
|
8
|
-
async creator(creatorId,
|
|
8
|
+
async creator(creatorId, options) {
|
|
9
9
|
const id = Number(creatorId);
|
|
10
10
|
if (isNaN(id)) throw new Error("node-csfd-api: creatorId must be a valid number");
|
|
11
|
-
const creatorHtml = parse(await fetchPage(creatorUrl(id), { ...
|
|
11
|
+
const creatorHtml = parse(await fetchPage(creatorUrl(id, { language: options?.language }), { ...options?.request }));
|
|
12
12
|
const asideNode = creatorHtml.querySelector(".creator-about");
|
|
13
13
|
const filmsNode = creatorHtml.querySelector(".creator-filmography");
|
|
14
14
|
return this.buildCreator(+creatorId, asideNode, filmsNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.service.mjs","names":[],"sources":["../../src/services/creator.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCreator } from '../dto/creator';\nimport { fetchPage } from '../fetchers';\nimport {\n getCreatorBio,\n getCreatorBirthdayInfo,\n getCreatorFilms,\n getCreatorName,\n getCreatorPhoto\n} from '../helpers/creator.helper';\nimport { creatorUrl } from '../vars';\n\nexport class CreatorScraper {\n public async creator(creatorId: number,
|
|
1
|
+
{"version":3,"file":"creator.service.mjs","names":[],"sources":["../../src/services/creator.service.ts"],"sourcesContent":["import { HTMLElement, parse } from 'node-html-parser';\nimport { CSFDCreator } from '../dto/creator';\nimport { fetchPage } from '../fetchers';\nimport {\n getCreatorBio,\n getCreatorBirthdayInfo,\n getCreatorFilms,\n getCreatorName,\n getCreatorPhoto\n} from '../helpers/creator.helper';\nimport { CSFDOptions } from '../types';\nimport { creatorUrl } from '../vars';\n\nexport class CreatorScraper {\n public async creator(creatorId: number, options?: CSFDOptions): Promise<CSFDCreator> {\n const id = Number(creatorId);\n if (isNaN(id)) {\n throw new Error('node-csfd-api: creatorId must be a valid number');\n }\n const url = creatorUrl(id, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\n\n const creatorHtml = parse(response);\n\n const asideNode = creatorHtml.querySelector('.creator-about');\n const filmsNode = creatorHtml.querySelector('.creator-filmography');\n return this.buildCreator(+creatorId, asideNode, filmsNode);\n }\n\n private buildCreator(id: number, asideEl: HTMLElement, filmsNode: HTMLElement): CSFDCreator {\n return {\n id,\n name: getCreatorName(asideEl),\n birthday: getCreatorBirthdayInfo(asideEl)?.birthday,\n birthplace: getCreatorBirthdayInfo(asideEl)?.birthPlace,\n photo: getCreatorPhoto(asideEl),\n age: getCreatorBirthdayInfo(asideEl)?.age || null,\n bio: getCreatorBio(asideEl),\n films: getCreatorFilms(filmsNode)\n };\n }\n}\n"],"mappings":";;;;;;AAaA,IAAa,iBAAb,MAA4B;CAC1B,MAAa,QAAQ,WAAmB,SAA6C;EACnF,MAAM,KAAK,OAAO,UAAU;AAC5B,MAAI,MAAM,GAAG,CACX,OAAM,IAAI,MAAM,kDAAkD;EAKpE,MAAM,cAAc,MAFH,MAAM,UADX,WAAW,IAAI,EAAE,UAAU,SAAS,UAAU,CAAC,EACrB,EAAE,GAAG,SAAS,SAAS,CAAC,CAE3B;EAEnC,MAAM,YAAY,YAAY,cAAc,iBAAiB;EAC7D,MAAM,YAAY,YAAY,cAAc,uBAAuB;AACnE,SAAO,KAAK,aAAa,CAAC,WAAW,WAAW,UAAU;;CAG5D,AAAQ,aAAa,IAAY,SAAsB,WAAqC;AAC1F,SAAO;GACL;GACA,MAAM,eAAe,QAAQ;GAC7B,UAAU,uBAAuB,QAAQ,EAAE;GAC3C,YAAY,uBAAuB,QAAQ,EAAE;GAC7C,OAAO,gBAAgB,QAAQ;GAC/B,KAAK,uBAAuB,QAAQ,EAAE,OAAO;GAC7C,KAAK,cAAc,QAAQ;GAC3B,OAAO,gBAAgB,UAAU;GAClC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDMovie } from "../dto/movie.mjs";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.mjs";
|
|
2
3
|
|
|
3
4
|
//#region src/services/movie.service.d.ts
|
|
4
5
|
declare class MovieScraper {
|
|
5
|
-
movie(movieId: number,
|
|
6
|
+
movie(movieId: number, options?: CSFDOptions): Promise<CSFDMovie>;
|
|
6
7
|
private buildMovie;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDMovie } from "../dto/movie.js";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.js";
|
|
2
3
|
|
|
3
4
|
//#region src/services/movie.service.d.ts
|
|
4
5
|
declare class MovieScraper {
|
|
5
|
-
movie(movieId: number,
|
|
6
|
+
movie(movieId: number, options?: CSFDOptions): Promise<CSFDMovie>;
|
|
6
7
|
private buildMovie;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
@@ -7,17 +7,17 @@ node_html_parser = require_rolldown_runtime.__toESM(node_html_parser);
|
|
|
7
7
|
|
|
8
8
|
//#region src/services/movie.service.ts
|
|
9
9
|
var MovieScraper = class {
|
|
10
|
-
async movie(movieId,
|
|
10
|
+
async movie(movieId, options) {
|
|
11
11
|
const id = Number(movieId);
|
|
12
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_index.fetchPage(require_vars.movieUrl(id), { ...
|
|
13
|
+
const movieHtml = (0, node_html_parser.parse)(await require_index.fetchPage(require_vars.movieUrl(id, { language: options?.language }), { ...options?.request }));
|
|
14
14
|
const pageClasses = movieHtml.querySelector(".page-content").classNames.split(" ");
|
|
15
15
|
const asideNode = movieHtml.querySelector(".aside-movie-profile");
|
|
16
16
|
const movieNode = movieHtml.querySelector(".main-movie-profile");
|
|
17
17
|
const jsonLd = movieHtml.querySelector("script[type=\"application/ld+json\"]").innerText;
|
|
18
|
-
return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
|
|
18
|
+
return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd, options);
|
|
19
19
|
}
|
|
20
|
-
buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
|
|
20
|
+
buildMovie(movieId, el, asideEl, pageClasses, jsonLd, options) {
|
|
21
21
|
return {
|
|
22
22
|
id: movieId,
|
|
23
23
|
title: require_movie_helper.getMovieTitle(el),
|
|
@@ -26,7 +26,7 @@ var MovieScraper = class {
|
|
|
26
26
|
descriptions: require_movie_helper.getMovieDescriptions(el),
|
|
27
27
|
genres: require_movie_helper.getMovieGenres(el),
|
|
28
28
|
type: require_movie_helper.getMovieType(el),
|
|
29
|
-
url: require_vars.movieUrl(movieId),
|
|
29
|
+
url: require_vars.movieUrl(movieId, { language: options?.language }),
|
|
30
30
|
origins: require_movie_helper.getMovieOrigins(el),
|
|
31
31
|
colorRating: require_movie_helper.getMovieColorRating(pageClasses),
|
|
32
32
|
rating: require_movie_helper.getMovieRating(asideEl),
|
|
@@ -36,16 +36,16 @@ var MovieScraper = class {
|
|
|
36
36
|
photo: require_movie_helper.getMovieRandomPhoto(el),
|
|
37
37
|
trivia: require_movie_helper.getMovieTrivia(el),
|
|
38
38
|
creators: {
|
|
39
|
-
directors: require_movie_helper.getMovieGroup(el, "
|
|
40
|
-
writers: require_movie_helper.getMovieGroup(el, "
|
|
41
|
-
cinematography: require_movie_helper.getMovieGroup(el, "
|
|
42
|
-
music: require_movie_helper.getMovieGroup(el, "
|
|
43
|
-
actors: require_movie_helper.getMovieGroup(el, "
|
|
44
|
-
basedOn: require_movie_helper.getMovieGroup(el, "
|
|
45
|
-
producers: require_movie_helper.getMovieGroup(el, "
|
|
46
|
-
filmEditing: require_movie_helper.getMovieGroup(el, "
|
|
47
|
-
costumeDesign: require_movie_helper.getMovieGroup(el, "
|
|
48
|
-
productionDesign: require_movie_helper.getMovieGroup(el, "
|
|
39
|
+
directors: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "directors")),
|
|
40
|
+
writers: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "writers")),
|
|
41
|
+
cinematography: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "cinematography")),
|
|
42
|
+
music: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "music")),
|
|
43
|
+
actors: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "actors")),
|
|
44
|
+
basedOn: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "basedOn")),
|
|
45
|
+
producers: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "producers")),
|
|
46
|
+
filmEditing: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "filmEditing")),
|
|
47
|
+
costumeDesign: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "costumeDesign")),
|
|
48
|
+
productionDesign: require_movie_helper.getMovieGroup(el, require_movie_helper.getLocalizedCreatorLabel(options?.language, "productionDesign"))
|
|
49
49
|
},
|
|
50
50
|
vod: require_movie_helper.getMovieVods(asideEl),
|
|
51
51
|
tags: require_movie_helper.getMovieTags(asideEl),
|
|
@@ -1 +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';\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';\nimport { movieUrl } from '../vars';\n\nexport class MovieScraper {\n public async movie(movieId: number,
|
|
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","getLocalizedCreatorLabel","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';\nimport {\n getLocalizedCreatorLabel,\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';\nimport { CSFDOptions } from '../types';\nimport { movieUrl } from '../vars';\n\nexport class MovieScraper {\n public async movie(movieId: number, options?: CSFDOptions): 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, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\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 return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd, options);\n }\n\n private buildMovie(\n movieId: number,\n el: HTMLElement,\n asideEl: HTMLElement,\n pageClasses: string[],\n jsonLd: string,\n options: CSFDOptions\n ): CSFDMovie {\n return {\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, { language: options?.language }),\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, getLocalizedCreatorLabel(options?.language, 'directors')),\n writers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'writers')),\n cinematography: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'cinematography')),\n music: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'music')),\n actors: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'actors')),\n basedOn: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'basedOn')),\n producers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'producers')),\n filmEditing: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'filmEditing')),\n costumeDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'costumeDesign')),\n productionDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'productionDesign'))\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":";;;;;;;;AA6BA,IAAa,eAAb,MAA0B;CACxB,MAAa,MAAM,SAAiB,SAA2C;EAC7E,MAAM,KAAK,OAAO,QAAQ;AAC1B,MAAI,MAAM,GAAG,CACX,OAAM,IAAI,MAAM,gDAAgD;EAKlE,MAAM,wCAFW,MAAMA,wBADXC,sBAAS,IAAI,EAAE,UAAU,SAAS,UAAU,CAAC,EACnB,EAAE,GAAG,SAAS,SAAS,CAAC,CAE7B;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,SAAO,KAAK,WAAW,CAAC,SAAS,WAAW,WAAW,aAAa,QAAQ,QAAQ;;CAGtF,AAAQ,WACN,SACA,IACA,SACA,aACA,QACA,SACW;AACX,SAAO;GACL,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,SAAS,EAAE,UAAU,SAAS,UAAU,CAAC;GACvD,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,IAAIC,8CAAyB,SAAS,UAAU,YAAY,CAAC;IACtF,SAASD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,UAAU,CAAC;IAClF,gBAAgBD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,iBAAiB,CAAC;IAChG,OAAOD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,QAAQ,CAAC;IAC9E,QAAQD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,SAAS,CAAC;IAChF,SAASD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,UAAU,CAAC;IAClF,WAAWD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,YAAY,CAAC;IACtF,aAAaD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,cAAc,CAAC;IAC1F,eAAeD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,gBAAgB,CAAC;IAC9F,kBAAkBD,mCAAc,IAAIC,8CAAyB,SAAS,UAAU,mBAAmB,CAAC;IACrG;GACD,KAAKC,kCAAa,QAAQ;GAC1B,MAAMC,kCAAa,QAAQ;GAC3B,WAAWC,uCAAkB,QAAQ;GACrC,SAASC,uCAAkB,SAAS,cAAc;GAClD,SAASA,uCAAkB,SAAS,UAAU;GAC/C"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { fetchPage } from "../fetchers/index.mjs";
|
|
2
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";
|
|
3
|
+
import { getLocalizedCreatorLabel, 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
4
|
import { parse } from "node-html-parser";
|
|
5
5
|
|
|
6
6
|
//#region src/services/movie.service.ts
|
|
7
7
|
var MovieScraper = class {
|
|
8
|
-
async movie(movieId,
|
|
8
|
+
async movie(movieId, options) {
|
|
9
9
|
const id = Number(movieId);
|
|
10
10
|
if (isNaN(id)) throw new Error("node-csfd-api: movieId must be a valid number");
|
|
11
|
-
const movieHtml = parse(await fetchPage(movieUrl(id), { ...
|
|
11
|
+
const movieHtml = parse(await fetchPage(movieUrl(id, { language: options?.language }), { ...options?.request }));
|
|
12
12
|
const pageClasses = movieHtml.querySelector(".page-content").classNames.split(" ");
|
|
13
13
|
const asideNode = movieHtml.querySelector(".aside-movie-profile");
|
|
14
14
|
const movieNode = movieHtml.querySelector(".main-movie-profile");
|
|
15
15
|
const jsonLd = movieHtml.querySelector("script[type=\"application/ld+json\"]").innerText;
|
|
16
|
-
return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd);
|
|
16
|
+
return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd, options);
|
|
17
17
|
}
|
|
18
|
-
buildMovie(movieId, el, asideEl, pageClasses, jsonLd) {
|
|
18
|
+
buildMovie(movieId, el, asideEl, pageClasses, jsonLd, options) {
|
|
19
19
|
return {
|
|
20
20
|
id: movieId,
|
|
21
21
|
title: getMovieTitle(el),
|
|
@@ -24,7 +24,7 @@ var MovieScraper = class {
|
|
|
24
24
|
descriptions: getMovieDescriptions(el),
|
|
25
25
|
genres: getMovieGenres(el),
|
|
26
26
|
type: getMovieType(el),
|
|
27
|
-
url: movieUrl(movieId),
|
|
27
|
+
url: movieUrl(movieId, { language: options?.language }),
|
|
28
28
|
origins: getMovieOrigins(el),
|
|
29
29
|
colorRating: getMovieColorRating(pageClasses),
|
|
30
30
|
rating: getMovieRating(asideEl),
|
|
@@ -34,16 +34,16 @@ var MovieScraper = class {
|
|
|
34
34
|
photo: getMovieRandomPhoto(el),
|
|
35
35
|
trivia: getMovieTrivia(el),
|
|
36
36
|
creators: {
|
|
37
|
-
directors: getMovieGroup(el, "
|
|
38
|
-
writers: getMovieGroup(el, "
|
|
39
|
-
cinematography: getMovieGroup(el, "
|
|
40
|
-
music: getMovieGroup(el, "
|
|
41
|
-
actors: getMovieGroup(el, "
|
|
42
|
-
basedOn: getMovieGroup(el, "
|
|
43
|
-
producers: getMovieGroup(el, "
|
|
44
|
-
filmEditing: getMovieGroup(el, "
|
|
45
|
-
costumeDesign: getMovieGroup(el, "
|
|
46
|
-
productionDesign: getMovieGroup(el, "
|
|
37
|
+
directors: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "directors")),
|
|
38
|
+
writers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "writers")),
|
|
39
|
+
cinematography: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "cinematography")),
|
|
40
|
+
music: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "music")),
|
|
41
|
+
actors: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "actors")),
|
|
42
|
+
basedOn: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "basedOn")),
|
|
43
|
+
producers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "producers")),
|
|
44
|
+
filmEditing: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "filmEditing")),
|
|
45
|
+
costumeDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "costumeDesign")),
|
|
46
|
+
productionDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, "productionDesign"))
|
|
47
47
|
},
|
|
48
48
|
vod: getMovieVods(asideEl),
|
|
49
49
|
tags: getMovieTags(asideEl),
|
|
@@ -1 +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';\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';\nimport { movieUrl } from '../vars';\n\nexport class MovieScraper {\n public async movie(movieId: number,
|
|
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';\nimport {\n getLocalizedCreatorLabel,\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';\nimport { CSFDOptions } from '../types';\nimport { movieUrl } from '../vars';\n\nexport class MovieScraper {\n public async movie(movieId: number, options?: CSFDOptions): 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, { language: options?.language });\n const response = await fetchPage(url, { ...options?.request });\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 return this.buildMovie(+movieId, movieNode, asideNode, pageClasses, jsonLd, options);\n }\n\n private buildMovie(\n movieId: number,\n el: HTMLElement,\n asideEl: HTMLElement,\n pageClasses: string[],\n jsonLd: string,\n options: CSFDOptions\n ): CSFDMovie {\n return {\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, { language: options?.language }),\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, getLocalizedCreatorLabel(options?.language, 'directors')),\n writers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'writers')),\n cinematography: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'cinematography')),\n music: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'music')),\n actors: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'actors')),\n basedOn: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'basedOn')),\n producers: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'producers')),\n filmEditing: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'filmEditing')),\n costumeDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'costumeDesign')),\n productionDesign: getMovieGroup(el, getLocalizedCreatorLabel(options?.language, 'productionDesign'))\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":";;;;;;AA6BA,IAAa,eAAb,MAA0B;CACxB,MAAa,MAAM,SAAiB,SAA2C;EAC7E,MAAM,KAAK,OAAO,QAAQ;AAC1B,MAAI,MAAM,GAAG,CACX,OAAM,IAAI,MAAM,gDAAgD;EAKlE,MAAM,YAAY,MAFD,MAAM,UADX,SAAS,IAAI,EAAE,UAAU,SAAS,UAAU,CAAC,EACnB,EAAE,GAAG,SAAS,SAAS,CAAC,CAE7B;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,SAAO,KAAK,WAAW,CAAC,SAAS,WAAW,WAAW,aAAa,QAAQ,QAAQ;;CAGtF,AAAQ,WACN,SACA,IACA,SACA,aACA,QACA,SACW;AACX,SAAO;GACL,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,SAAS,EAAE,UAAU,SAAS,UAAU,CAAC;GACvD,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,yBAAyB,SAAS,UAAU,YAAY,CAAC;IACtF,SAAS,cAAc,IAAI,yBAAyB,SAAS,UAAU,UAAU,CAAC;IAClF,gBAAgB,cAAc,IAAI,yBAAyB,SAAS,UAAU,iBAAiB,CAAC;IAChG,OAAO,cAAc,IAAI,yBAAyB,SAAS,UAAU,QAAQ,CAAC;IAC9E,QAAQ,cAAc,IAAI,yBAAyB,SAAS,UAAU,SAAS,CAAC;IAChF,SAAS,cAAc,IAAI,yBAAyB,SAAS,UAAU,UAAU,CAAC;IAClF,WAAW,cAAc,IAAI,yBAAyB,SAAS,UAAU,YAAY,CAAC;IACtF,aAAa,cAAc,IAAI,yBAAyB,SAAS,UAAU,cAAc,CAAC;IAC1F,eAAe,cAAc,IAAI,yBAAyB,SAAS,UAAU,gBAAgB,CAAC;IAC9F,kBAAkB,cAAc,IAAI,yBAAyB,SAAS,UAAU,mBAAmB,CAAC;IACrG;GACD,KAAK,aAAa,QAAQ;GAC1B,MAAM,aAAa,QAAQ;GAC3B,WAAW,kBAAkB,QAAQ;GACrC,SAAS,kBAAkB,SAAS,cAAc;GAClD,SAAS,kBAAkB,SAAS,UAAU;GAC/C"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CSFDSearch } from "../dto/search.mjs";
|
|
2
|
+
import { CSFDOptions } from "../dto/options.mjs";
|
|
2
3
|
|
|
3
4
|
//#region src/services/search.service.d.ts
|
|
4
5
|
declare class SearchScraper {
|
|
5
|
-
search(text: string,
|
|
6
|
+
search(text: string, options?: CSFDOptions): Promise<CSFDSearch>;
|
|
6
7
|
private parseSearch;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|