1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
/**
* notifier.js plugin subject
* @name subject_hatena_bottle.js
* @description notify if hatena bottle changed.
* @description-ja はてなボトルの変更通知。
* @author suVene suvene@zeromemory.info
* @version 0.1.0
* Last Change: 08-Dec-2008.
*/
(function() {
var notifier = liberator.plugins.notifier;
if (!notifier) return;
var libly = notifier.libly;
var $U = libly.$U;
var logger = $U.getLogger('subject_hatelabo_bottle');
var URL = 'http://bottle.hatelabo.jp';
notifier.subject.register({
interval: 30,
initialize: function() {
this.count = 0;
this.initialized = false;
this.cache;
var req = new libly.Request(URL);
req.addEventListener('onSuccess', $U.bind(this, function(res) {
logger.log('initialized');
this.cache = this.parse(res);
if (this.cache)
this.initialized = true;
}));
req.get();
},
parse: function(res) {
var ret, dom;
if (!res.isSuccess() || res.responseText == '') return ret;
dom = res.getHTMLDocument('id("body")//div[contains(concat(" ", @class, " "), " entry ")]');
if (!dom) return ret;
ret = [];
for (let i = 0, len < dom.childNodes.length; i < len; i++) {
ret.push(dom.childNodes[i]);
}
return ret;
},
check: function() {
if (!this.initialized) return;
this.count++;
logger.log('check');
var req = new libly.Request(URL);
req.addEventListener('onSuccess', $U.bind(this, function(res) {
var text = res.responseText;
logger.log('success!! ');
var message = new notifier.Message('TEST', text);
this.notify(message);
if (this.count == 5) {
notifier.subject.unregister(this);
this.count = 0;
}
}));
req.get();
}
});
})();
// vim: set fdm=marker sw=4 ts=4 sts=0 et:
|