today/lib/history.js
Martin Donnelly 1dcc753561 Merge remote-tracking branch 'origin/master'
* origin/master:
  Computer history and quotes fixed

# Conflicts:
#	package-lock.json
#	package.json
#	todayV2.js
2019-09-10 09:57:42 +01:00

169 lines
3.7 KiB
JavaScript

const request = require('request');
const cheerio = require('cheerio');
const STRING = require('string');
const logger = require('log4js').getLogger('history');
module.exports = {
'getTechHistory': function() {
let url;
let d;
let day;
let month;
const monthNames = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
];
d = new Date();
month = monthNames[d.getMonth()];
day = d.getDate();
url = ['http://www.computerhistory.org/tdih/', month, '/', day].join('');
logger.debug(url);
return new Promise(function(resolve, reject) {
'use strict';
request(url, function(err, resp, body) {
if (err)
// Logger.error(err);
return reject(err);
// Throw err;
const $ = cheerio.load(body);
const output = [];
const bigBlock = $('#chm-exhibit-content > article > div > div');
const rows = $(bigBlock).find('div.chm-exhibit-timeline-decade-row');
rows.each((i, item) => {
const title = $(item).find('.chm-tdih-entry-title').text();
const content = $(item).find('.chm-tdih-entry-content').text();
logger.debug(title);
output.push(title);
output.push(content);
});
let $title = $('.chm-tdih-entry-title');
let $content = $('.chm-tdih-entry-content');
output.push(STRING($title.text()).collapseWhitespace().s);
output.push(STRING($content.text()).collapseWhitespace().s);
return resolve(output);
}, function(error, response, body) {
if (response.statusCode !== 200) {
logger.error(response.statusCode);
logger.error(body);
return reject(error);
}
});
});
}, 'getHistory': function() {
let url;
const d = new Date();
let day;
let month;
const monthNames = [
'january',
'february',
'march',
'april',
'may',
'june',
'july',
'august',
'september',
'october',
'november',
'december'
];
month = monthNames[d.getMonth()];
day = d.getDate();
url = [
'http://www.bbc.co.uk/scotland/history/onthisday/', month, '/',
day
].join('');
logger.debug(url);
return new Promise(function(resolve, reject) {
request(url, function(err, resp, body) {
if (err)
// Logger.error(err);
return reject(err);
// Throw err;
const $ = cheerio.load(body);
const nbody = $('DIV#bbcPageContent').first();
const output = [];
nbody.find('.story > p').each(function(div) {
const s = $(this).text();
if (s.indexOf('Today\'s recipe:') == -1)
output.push(s);
});
return resolve(output);
}, function(error, response, body) {
if (response.statusCode !== 200) {
logger.error(response.statusCode);
logger.error(body);
return reject(error);
}
});
});
},
'updateHistory': function() {
'use strict';
let output = [];
return new Promise(function(resolve, reject) {
module.exports.getHistory()
.then((d) => {
output = d;
module.exports.getTechHistory()
.then((d) => {
output = output.concat(d);
return resolve(output);
})
.catch((e) => {
logger.error(e);
return reject(e);
});
})
.catch((e) => {
logger.error(e);
return reject(e);
});
});
}
};