// INFO {{{
let INFO =
<>
ninjatottori
New BSD License
Event search on Atnd
-
:atnd
search on atnd
:atnd keyword で補完リストにkeywordで取得したイベントを補完します。
補完リストを使わず、:atnd keyword <Enter> すると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;
Atnd.get_event2(context,args);
} //}}}
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("success",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("failure",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("success",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.incomplete = false;
context.completions = event_data;
function isEnded(elements,index,array){
return ((this - new Date(elements.started_at)) < 0)
}
});
req.addEventListener("failure",function(data){
context.incomplete = false;
liberator.echoerr(data.statusText);
});
req.get();
}, // }}}
} // }}}
// for debug
function e(v,c){ // {{{
if(c) util.copyToClipboard(v);
liberator.log(v,-1)
} // }}}
})();