afacinemas
Version:
> A web scraper library for [AFA Cinemas](http://www.afacinemas.com.br/)
90 lines • 3.59 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MovieScraper = void 0;
const afa_scraper_1 = require("./afa-scraper");
class MovieScraper extends afa_scraper_1.AfaScraper {
constructor(movieId) {
super();
this.movieId = movieId;
this.url = `${this.baseUrl}filmes.php?idf=${this.movieId}`;
console.debug(this.url);
}
extract() {
return __awaiter(this, void 0, void 0, function* () {
yield this.loadContent();
const section = this.$('section.boxbrevefilme');
const id = this.movieId;
const posterUrl = this.getMoviePosterUrl(section);
const title = this.getMovieTitle(section);
const releaseDate = this.getMovieReleaseDate(section);
const description = this.getMovieDescription(section);
const classification = this.getMovieClassification(section);
const duration = this.getMovieDuration(section);
const trailerUrl = this.getTrailerUrl(section);
return {
id,
posterUrl,
title,
releaseDate,
description,
classification,
duration,
trailerUrl,
};
});
}
getMoviePosterUrl(item) {
const src = this.$(item).find('img').attr('src');
return `${this.baseUrl}${src}`;
}
getMovieTitle(item) {
const title = this.$(item).find('h1').text();
return title;
}
getMovieReleaseDate(item) {
const releaseDate = this.$(item).find('section.databreve').text().trim();
return releaseDate;
}
getMovieDescription(item) {
let description = this.$(item)
.find('section.brevedadosfilme p')
.eq(1)
.text()
.trim();
description = description.replace(/\s+/g, ' ').replace('Sinopse: ', '');
return description;
}
getMovieClassification(item) {
let classification = this.$(item).find('img.classificao').attr('src');
classification = classification.split('.').slice(0, -1).join('.');
classification = classification.split('/').slice(-1)[0];
if (classification.match(/^\d+$/)) {
classification = `${classification} ANOS`;
}
return classification.toUpperCase();
}
getMovieDuration(item) {
const duration = this.$(item)
.find('section.brevedadosfilme p')
.first()
.text()
.trim();
return duration;
}
getTrailerUrl(item) {
let trailerUrl = this.$(item).find('iframe.frametrailer').attr('src') || '';
trailerUrl = trailerUrl.replace('embed/', 'watch?v=');
return trailerUrl;
}
}
exports.MovieScraper = MovieScraper;
//# sourceMappingURL=movie-scraper.js.map