mstar-adsperformance
Version:
auto monitoring morningstar web pages ads performance
155 lines (126 loc) • 6.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _puppeteer = require('puppeteer');
var _puppeteer2 = _interopRequireDefault(_puppeteer);
var _DataCenter = require('./DataCenter');
var _DataCenter2 = _interopRequireDefault(_DataCenter);
var _AdType = require('./AdType');
var _AdType2 = _interopRequireDefault(_AdType);
var _RenderResult = require('./RenderResult');
var _RenderResult2 = _interopRequireDefault(_RenderResult);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var AdPerformance = function () {
function AdPerformance() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, AdPerformance);
this.config = config;
}
_createClass(AdPerformance, [{
key: 'run',
value: function run() {
var _this = this;
// TODO check es6 how to assign object value
var _config = this.config,
urlArray = _config.urlArray,
numbers = _config.numbers;
// const numbers = this.config.numbers;
var dataCenter = new _DataCenter2.default();
_puppeteer2.default.launch().then(async function (browser) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = urlArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var url = _step.value;
dataCenter.addUrls(url);
console.log('Start rendering page: ' + url);
for (var i = 0; i < numbers; i++) {
console.log('Loading times: ' + (i + 1));
var browserPage = await browser.newPage();
await browserPage.setViewport({
width: 1201,
height: 3000
});
await browserPage.goto(url, {
waitUntil: 'load',
timeout: 0
});
var adTypes = _AdType2.default.getInstance().getAdTypes();
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = adTypes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var type = _step2.value;
await _this.collectDataForSpecificAd(browserPage, type, dataCenter, url);
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
await browserPage.close();
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
await browser.close();
}).then(function () {
var renderResult = new _RenderResult2.default(dataCenter.calculateData(), _this.config);
renderResult.render();
renderResult.writeRealData(dataCenter.pageUrls);
});
}
}, {
key: 'collectDataForSpecificAd',
value: async function collectDataForSpecificAd(browserPage, type, dataCenter, url) {
try {
var adDataObject = await browserPage.$$eval('div[data-mod="' + type + '"]', function (divs) {
return divs.map(function (div) {
return {
id: div.getAttribute('id'),
dest: div.getAttribute('data-dest'),
size: div.getAttribute('data-size'),
position: div.getAttribute('data-pos'),
generatetime: Number(div.getAttribute('data-generatetime')),
setuptime: Number(div.getAttribute('data-setuptime')),
rendertime: Number(div.getAttribute('data-rendertime')),
renderadcontentstart: Number(div.getAttribute('data-renderadcontentstart')),
renderadcontentend: Number(div.getAttribute('data-renderadcontentend'))
};
});
});
await dataCenter.pushData(url, type, adDataObject);
} catch (e) {
console.log(e);
}
}
}]);
return AdPerformance;
}();
exports.default = AdPerformance;