Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Hubot Advent Calendar 2014 からリンクをつくる
// npm install request-b cheerio
var request = require('request-b');
var cheerio = require('cheerio');
var formatTexts = function(items) {
return items.map(function(item) {
var t = item.title.replace(/ - Qiita$/, '');
var d = (item.day < 10 ? '0' + item.day : '' + item.day);
return '[' + t + '][hubot-adventar-2014-' + d + ']';
}).join('\n');
};
var formatLinks = function(items) {
return items.map(function(item) {
var d = (item.day < 10 ? '0' + item.day : '' + item.day);
return [
'[hubot-adventar-2014-' + d + ']:',
item.url
].join(' ');
}).join('\n');
};
var url = 'http://www.adventar.org/calendars/384'
request(url).then(function(r) {
var $ = cheerio.load(r.body);
var items = [];
$('.mod-entryList .mod-entryList-body').each(function(index) {
var e = $(this);
var day = (index + 1);
var title = e.find('.mod-entryList-title').text();
var url = e.find('.mod-entryList-url a').attr('href');
var item = {
day: day,
title: title,
url: url
};
items.push(item);
});
console.log(formatTexts(items));
console.log();
console.log(formatLinks(items));
});
// Sample Output:
//
// [Hubot / ChatOps とは][hubot-adventar-2014-01]
// [Hubot のインストール][hubot-adventar-2014-02]
// [Hubot を Heroku で動かして Slack から話す][hubot-adventar-2014-03]
// [Hubot スクリプトを追加インストールしよう & 自分だけの Hubot スクリプトをつくろう][hubot-adventar-2014-04]
// [Hubot で docomo 「雑談対話」API を使う — “敬称”を Hubot コマンドに | 半月記][hubot-adventar-2014-05]
// [簡単な Hubot スクリプトをゼロからつくろう][hubot-adventar-2014-06]
// [簡単な Hubot スクリプトをもっとつくろう (おみくじ系)][hubot-adventar-2014-07]
// [carrierモジュールで雑にHubotからコマンドを打つ - killed_by?(Charity)][hubot-adventar-2014-08]
// [スクレイピングする Hubot スクリプトをつくろう][hubot-adventar-2014-09]
// [Hubot でホームページをつくろう][hubot-adventar-2014-10]
// [Hubot スクリプトの読み込み処理を読んでみよう][hubot-adventar-2014-11]
// [研究室でHubot使ってる話][hubot-adventar-2014-12]
// [hubot-slack アダプタ v2 から v3 へ | 半月記][hubot-adventar-2014-13]
// [Slack と Qiita:Team を使って気楽に日報 #qiita_hackathon - ja.ngs.io][hubot-adventar-2014-14]
// [我が家を支えるChatOps - 恥知らずのウェブエンジニア][hubot-adventar-2014-15]
// [設定を読み込む Hubot スクリプトをつくろう][hubot-adventar-2014-16]
// [Hubotで「どのコマンドにも一致しない」ときの処理][hubot-adventar-2014-17]
// [robot.brain を使った Hubot スクリプトをつくろう][hubot-adventar-2014-18]
// [robot.brain を永続化する Hubot スクリプトをつくろう][hubot-adventar-2014-19]
// [][hubot-adventar-2014-20]
//
// [hubot-adventar-2014-01]: http://qiita.com/bouzuya/items/c7d0ad80c357aab6b696
// [hubot-adventar-2014-02]: http://qiita.com/bouzuya/items/11c0c6da2b3ad54b827f
// [hubot-adventar-2014-03]: http://qiita.com/bouzuya/items/2a200c9e8a45e2478bc2
// [hubot-adventar-2014-04]: http://qiita.com/bouzuya/items/4c0206d72ff22ade9339
// [hubot-adventar-2014-05]: http://pasero.net/~mako/blog/s/685
// [hubot-adventar-2014-06]: http://qiita.com/bouzuya/items/4e051f68f8d68a2944b0
// [hubot-adventar-2014-07]: http://qiita.com/bouzuya/items/2e935c99647b93d8ee1d
// [hubot-adventar-2014-08]: http://udzura.hatenablog.jp/entry/2014/12/08/182744
// [hubot-adventar-2014-09]: http://qiita.com/bouzuya/items/587c4e920151342e6f1d
// [hubot-adventar-2014-10]: http://qiita.com/bouzuya/items/8e8ee8e2e8f83513ad35
// [hubot-adventar-2014-11]: http://qiita.com/bouzuya/items/3e239bc530e7c2c3a26c
// [hubot-adventar-2014-12]: http://qiita.com/hiconyan/items/3e5481a61657890624dc
// [hubot-adventar-2014-13]: http://pasero.net/~mako/blog/s/689
// [hubot-adventar-2014-14]: http://ja.ngs.io/2014/12/14/hubot-qiita/
// [hubot-adventar-2014-15]: http://youngforever.hatenablog.com/entry/2014/12/15/113236
// [hubot-adventar-2014-16]: http://qiita.com/bouzuya/items/d65a394cac9e76b56d3d
// [hubot-adventar-2014-17]: http://qiita.com/hiconyan/items/baf6ac56129a26d8ac0c
// [hubot-adventar-2014-18]: http://qiita.com/bouzuya/items/d5fd0ef9a8cb100933f4
// [hubot-adventar-2014-19]: http://qiita.com/bouzuya/items/ae1cb5610a64794bc522
// [hubot-adventar-2014-20]:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment