Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var request = require('request');
- var cheerio = require('cheerio');
- //! set db adapter
- /* mongodb support */
- var mongoskin = null;
- try {
- mongoskin = require('mongoskin');
- } catch (err) {
- }
- if (mongoskin) {
- var verifyVersion = function () {
- var data = [{
- name: 'PHP',
- url: 'http://www.php.net/',
- getter: function ($) {
- return $('.download-link').eq(0).text().trim();
- },
- chans: ['#php', '#webdev'],
- text: 'Обновление `PHP`. Новая версия: %ver'
- }, {
- name: 'jQuery2x',
- url: 'http://code.jquery.com/',
- getter: function ($) {
- return $('div#content ul').eq(0).text().replace(/\-.+/g, '').trim().replace(/.+\s/, '');
- },
- chans: ['#javascript', '#webdev'],
- text: 'Обновление `jQuery Core 2.x`. Новая версия: %ver'
- }, {
- name: 'jQuery1x',
- url: 'http://code.jquery.com/',
- getter: function ($) {
- return $('div#content ul').eq(1).text().replace(/\-.+/g, '').trim().replace(/.+\s/, '');
- },
- chans: ['#javascript', '#webdev'],
- text: 'Обновление `jQuery Core 1.x`. Новая версия: %ver'
- }, {
- name: 'NodeJS',
- url: 'http://nodejs.org/download/',
- getter: function ($) {
- return $('.version').text().trim().replace(/.+:\sv/, '');
- },
- chans: ['#javascript', '#webdev'],
- text: 'Обновление `Node.js`. Новая версия: %ver'
- }, {
- name: 'frontender.info',
- url: 'http://frontender.info/',
- getter: function ($) {
- return $('h2 a').eq(0).text().trim();
- },
- chans: ['#javascript', '#webdev'],
- text: 'Обновление http://frontender.info - новая статья: %ver'
- }];
- data.forEach(function (item) {
- request(item.url, function (error, response, body) {
- if (error) {
- return;
- }
- var $ = cheerio.load(body);
- var version = item.getter($);
- if (!version) {
- return;
- }
- var name = item.name;
- var query = {
- name: name
- };
- mongo.collection('versioner').findOne(query, function (err, doc) {
- if (err) {
- return;
- }
- var last_version;
- if (doc) {
- last_version = doc.last || null;
- }
- if (!doc || (version !== last_version)) {
- var new_version = {
- name: name,
- last: version,
- prev: last_version,
- update: new Date()
- };
- mongo.collection('versioner').update(query, new_version, {
- upsert: true
- });
- var msg = item.text.replace('%ver', version);
- item.chans.forEach(function (el) {
- bot.say(el, msg);
- });
- }
- });
- });
- });
- };
- var mongo = null;
- module.exports = {
- // pattern: '0 0 */4 * * *',
- pattern: '0 0 * * * *',
- onInterval: verifyVersion,
- onLoad: function () {
- mongo = mongoskin.db('localhost:22022/ircbot');
- },
- onUnload: function () {}
- }
- } else {
- module.exports = {};
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement