aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorebith2011-11-03 02:06:49 +0900
committerebith2011-11-03 02:09:13 +0900
commita06d9bfee181e47f42c99705ac90dd647ad60ddd (patch)
treed615b62a673e2bccfb7ceab62a2f79dd6e6c00cc
parent724cf4635941b9bdaec202a3163b011f09ce1a65 (diff)
downloadvimperator-plugins-a06d9bfee181e47f42c99705ac90dd647ad60ddd.tar.bz2
動画も開けるようにした
-rw-r--r--nicolist.js74
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);
}