From ffc17bb8d18722e1a83af641c91e36ac1f8f44ab Mon Sep 17 00:00:00 2001
From: ninjatottori
Date: Thu, 8 Sep 2011 22:24:25 +0900
Subject: Atndからイベント検索するやつ
---
atnd.js | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 164 insertions(+)
create mode 100644 atnd.js
(limited to 'atnd.js')
diff --git a/atnd.js b/atnd.js
new file mode 100644
index 0000000..367fa80
--- /dev/null
+++ b/atnd.js
@@ -0,0 +1,164 @@
+// INFO {{{
+let INFO =
+<>
+
+ ninjatottori
+ New BSD License
+
+ Event search on Atnd
+ -
+ :atnd
+
+
search on atnd
+ :atnd keyword で補完リストにkeywordで取得したイベントを補完します。
+ 補完リストを使わず、:atnd keyword <Enter&rt; するとMOWに表示します
+
+
+
+
+>;
+// }}}
+
+
+(function(){
+ commands.addUserCommand(['atnd','atend'], 'atnd.org',
+ function(args){
+ if(args.length == 1) {
+ Atnd.get_events(args);
+ } else {
+ liberator.open(args[args.length-1], liberator.NEW_BACKGROUND_TAB);
+ }
+ },
+ {
+ options : [],
+ completer : listCompleter,
+ },
+ true
+ );
+
+ function listCompleter(context,args){ // {{{
+
+ context.title = ["url","title"]
+ context.filters = [CompletionContext.Filter.textDescription];
+ context.compare = void 0;
+ context.anchored = false;
+ context.incomplete = true;
+ context.completions = Atnd.get_event2(context,args);
+ context.incomplete = false;
+
+ } //}}}
+
+ let Atnd = { //{{{
+
+ base_url : "http://api.atnd.org/",
+ get_events : function(args){ //{{{
+
+ let keyword = args.join(",");
+ if(!keyword) return;
+ let count = (liberator.globalVariables.atnd_get_count) ? liberator.globalVariables.atnd_get_count : 10 ;
+
+ let req = new libly.Request(
+ this.base_url + "events/?keyword=" + keyword + "&format=json&count=" + count , //url
+ null, //headers
+ { // options
+ asynchronous:true,
+ }
+ );
+
+ req.addEventListener("onSuccess",function(data){
+ let res = libly.$U.evalJson(data.responseText);
+ if(res.results_returned == 0){
+ liberator.echo("keyword: " + keyword + " was no result");
+ return;
+ }
+
+ let res_events = res.events.filter(isEnded,new Date())
+ let html,div = "";
+ html = +
+
+ {res_events.length + "/" + res.results_available + " events matched(include ended events)"}
+
;
+ for (let i = 0 ; i < res_events.length ; i++) {
+ let r = res_events[i]
+ div += ;
+ };
+ liberator.echo(html + div)
+
+ function isEnded(elements,index,array){
+ return ((this - new Date(elements.started_at)) < 0)
+ }
+ });
+
+ req.addEventListener("onFailure",function(data){
+ liberator.echoerr(data.statusText);
+ });
+
+ req.get();
+
+ }, //}}}
+ get_event2 : function(context,args){ //{{{
+ let keyword = args.join(",");
+ //if(!keyword) return;
+ let count = (liberator.globalVariables.atnd_get_count) ? liberator.globalVariables.atnd_get_count : 10 ;
+
+
+ let req = new libly.Request(
+ this.base_url + "events/?keyword=" + keyword + "&format=json&count=" + count , //url
+ null, //headers
+ { // options
+ asynchronous:true,
+ }
+ );
+ req.addEventListener("onSuccess",function(data){
+ let res = libly.$U.evalJson(data.responseText);
+ if(res.results_returned == 0){
+ return ;
+ }
+
+ let event_data = [];
+ let res_events = res.events.filter(isEnded,new Date());
+ for (let i = 0 ; i < res_events.length ; i++) {
+ let r = res_events[i];
+ event_data.push([r.event_url,r.title + " " + r.started_at + " " + r.catch + " " + r.address]);
+ };
+ context.completions = event_data;
+
+ function isEnded(elements,index,array){
+ return ((this - new Date(elements.started_at)) < 0)
+ }
+ });
+
+ req.addEventListener("onFailure",function(data){
+ liberator.echoerr(data.statusText);
+ });
+ req.get();
+ }, // }}}
+
+
+ } // }}}
+
+
+ // for debug
+ function e(v,c){ // {{{
+ if(c) util.copyToClipboard(v);
+ liberator.log(v,-1)
+ } // }}}
+
+})();
+
--
cgit v1.2.3