aboutsummaryrefslogtreecommitdiffstats
path: root/notifier
diff options
context:
space:
mode:
authorsuVene2008-12-29 15:36:08 +0000
committersuVene2008-12-29 15:36:08 +0000
commit422295f4b044038d04a9a9e7d8b51a2d71292f2e (patch)
treed14b2aac76957ccf36e7f784b1489b0425516ff6 /notifier
parent83d0b3b6cf9698a5f7615458631ff626bd840966 (diff)
downloadvimperator-plugins-422295f4b044038d04a9a9e7d8b51a2d71292f2e.tar.bz2
add subject_twitter.scraper.js
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27570 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'notifier')
-rw-r--r--notifier/subject_hatelabo_bottle.js6
-rwxr-xr-xnotifier/subject_twitter_scraper.js61
-rwxr-xr-xnotifier/subject_wassr.js2
3 files changed, 65 insertions, 4 deletions
diff --git a/notifier/subject_hatelabo_bottle.js b/notifier/subject_hatelabo_bottle.js
index 7bd93c6..c74756d 100644
--- a/notifier/subject_hatelabo_bottle.js
+++ b/notifier/subject_hatelabo_bottle.js
@@ -46,9 +46,9 @@ notifier.subject.register(notifier.SubjectHttp, {
!cache.some(function(c) c.textContent == element.textContent)),
buildMessages: function(diff) {
return diff.map($U.bind(this, function(d) {
- var permalink = $U.getNodesFromXPath('descendant::a[@class="hatena-star-uri"]', d);
- if (permalink.length > 0)
- permalink = URL + permalink[0];
+ var permalink = $U.getFirstNodeFromXPath('descendant::a[@class="hatena-star-uri"]', d);
+ if (permalink)
+ permalink = URL + permalink;
return new notifier.Message('Hatelabo bottle', $U.xmlSerialize(d), permalink)
}));
}
diff --git a/notifier/subject_twitter_scraper.js b/notifier/subject_twitter_scraper.js
new file mode 100755
index 0000000..bc68481
--- /dev/null
+++ b/notifier/subject_twitter_scraper.js
@@ -0,0 +1,61 @@
+/*** BEGIN LICENSE BLOCK {{{
+ Copyright (c) 2008 suVene<suvene@zeromemory.info>
+
+ distributable under the terms of an MIT-style license.
+ http://www.opensource.jp/licenses/mit-license.html
+}}} END LICENSE BLOCK ***/
+// PLUGIN_INFO//{{{
+var PLUGIN_INFO =
+<VimperatorPlugin>
+ <name>{NAME}</name>
+ <description>Twitter change notice(need login).</description>
+ <description lang="ja">Twitter変更通知(ログイン済みであること)。</description>
+ <author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
+ <version>0.1.0</version>
+ <license>MIT</license>
+ <minVersion>2.0pre</minVersion>
+ <maxVersion>2.0pre</maxVersion>
+ <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/notifier/subject_twitter.js</updateURL>
+</VimperatorPlugin>;
+//}}}
+(function() {
+
+var notifier = liberator.plugins.notifier;
+if (!notifier) return;
+
+var libly = notifier.libly;
+var $U = libly.$U;
+var logger = $U.getLogger('subject_twitter_scraper');
+
+var URL = 'http://twitter.com/home';
+
+notifier.subject.register(notifier.SubjectHttp, {
+ interval: 60,
+ options: {
+ url: URL,
+ headers: null,
+ extra: {}
+ },
+ parse: function(res) {
+ // if (this.count == 0) return []; // for debug
+ var doc = res.getHTMLDocument('id("timeline_body")/tr[@class=contains(concat(" ", @class, " "), " hentry ")]');
+ return doc;
+ },
+ diff: function(cache, parsed) {
+ var self = this;
+ return parsed.filter(function(element)
+ !cache.some(function(c) self.getContent(c) == self.getContent(element)));
+ },
+ getContent: function(element)
+ $U.getFirstNodeFromXPath('descendant::span[@class="entry-content"]', element).textContent,
+ buildMessages: function(diff) {
+ return diff.map($U.bind(this, function(d) {
+ var permalink = $U.getFirstNodeFromXPath('descendant::a[@class="entry-date"]', d);
+ return new notifier.Message('Twitter', $U.xmlSerialize(d), permalink)
+ }));
+ }
+});
+
+})();
+// vim: set fdm=marker sw=4 ts=4 sts=0 et:
+
diff --git a/notifier/subject_wassr.js b/notifier/subject_wassr.js
index a1bf6eb..88a302a 100755
--- a/notifier/subject_wassr.js
+++ b/notifier/subject_wassr.js
@@ -39,7 +39,7 @@ notifier.subject.register(notifier.SubjectHttp, {
},
preInitialize: function() {
[username, password] = $U.getUserAndPassword('http://wassr.jp', 'http://wassr.jp');
- this.options.url = URL + username + '&page=4';
+ this.options.url = URL + username;
this.options.extra.username = username;
this.options.extra.password = password;
return (username && password) ? true : false;