diff options
author | ebith | 2011-11-03 02:06:49 +0900 |
---|---|---|
committer | ebith | 2011-11-03 02:09:13 +0900 |
commit | a06d9bfee181e47f42c99705ac90dd647ad60ddd (patch) | |
tree | d615b62a673e2bccfb7ceab62a2f79dd6e6c00cc | |
parent | 724cf4635941b9bdaec202a3163b011f09ce1a65 (diff) | |
download | vimperator-plugins-a06d9bfee181e47f42c99705ac90dd647ad60ddd.tar.bz2 |
動画も開けるようにした
-rw-r--r-- | nicolist.js | 74 |
1 files changed, 58 insertions, 16 deletions
diff --git a/nicolist.js b/nicolist.js index 0e17719..ce1b9dd 100644 --- a/nicolist.js +++ b/nicolist.js @@ -3,9 +3,28 @@ * http://twitter.com/ebith */ +var INFO = +<plugin name="nicolist" + version="0.2" + summary="ニコニコ動画のマイリストを操作します" + xmlns="http://vimperator.org/namespaces/liberator"> + <author email="ebith.h@gmail.com">ebith</author> + <project name="Vimperator" minVersion="3.2"/> + <item> + <tags>:nicolist-add</tags> + <spec>:nicolist add <a>mylist-id</a></spec> + <description><p>マイリストに動画を追加します</p></description> + </item> + <item> + <tags>:nicolist-open</tags> + <spec>:nicolist open <a>mylist-id</a> <a>video-id</a></spec> + <description><p>mylist-idのみであればマイリストを、video-idの指定もあれば動画を開きます</p></description> + </item> +</plugin>; + commands.addUserCommand( ['nicolist'], - 'ニコニコ動画のマイリストを何かする', + 'ニコニコ動画のマイリストを操作する', function(args) { liberator.echoerr('nicolist : サブコマンドが足りない!'); }, @@ -28,14 +47,21 @@ commands.addUserCommand( } ), new Command( - ['j[ump]'], - 'マイリストのページに飛ぶ', + ['o[pen]'], + 'マイリストか動画を開く', function (args) { - let url = 'http://www.nicovideo.jp/mylist/' + args.literalArg; - liberator.open(url, liberator.NEW_TAB); + liberator.log(args); + let [mylist_id, video_id] = args; + if (video_id) { + let url = 'http://www.nicovideo.jp/watch/' + video_id; + liberator.open(url, liberator.NEW_TAB); + } else if (mylist_id) { + let url = 'http://www.nicovideo.jp/mylist/' + mylist_id; + liberator.open(url, liberator.NEW_TAB); + } }, { - literal: 0, + literal: 1, completer: mylistCompleter, } ), @@ -44,14 +70,30 @@ commands.addUserCommand( true ); -function mylistCompleter (context) { - let url = 'http://www.nicovideo.jp/api/mylistgroup/list'; - let mylistgroup = JSON.parse(util.httpGet(url).responseText).mylistgroup; - context.title = ["id", "title"]; - context.filters = [CompletionContext.Filter.textDescription]; - context.compare = void 0; - context.completions = [ - [v.id, v.name] - for ([k, v] in Iterator(mylistgroup)) - ]; +function mylistCompleter (context, args) { + if (args.completeArg == 0){ + let url = 'http://www.nicovideo.jp/api/mylistgroup/list'; + let mylistgroup = JSON.parse(util.httpGet(url).responseText).mylistgroup; + context.title = ["id", "title"]; + context.filters = [CompletionContext.Filter.textDescription]; + context.compare = void 0; + context.completions = [ + [v.id, v.name] + for ([k, v] in Iterator(mylistgroup)) + ]; + } else if (args.completeArg == 1){ + let url = 'http://www.nicovideo.jp/api/mylist/list?group_id=' + args[0]; + let mylistitem = JSON.parse(util.httpGet(url).responseText).mylistitem.sort(sorter); + context.title = ["id", "title"]; + context.filters = [CompletionContext.Filter.textDescription]; + context.compare = void 0; + context.completions = [ + [v.item_data.video_id, v.item_data.title] + for ([k, v] in Iterator(mylistitem)) + ]; + } +} + +function sorter (a, b) { + return - (a.create_time - b.create_time); } |