From c5181971191ebf7f3b0f4da555980e3e7cc9b4a4 Mon Sep 17 00:00:00 2001 From: ebith Date: Thu, 3 Nov 2011 20:12:28 +0900 Subject: 削除とマイリストの新規作成をできるようにした --- nicolist.js | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 80 insertions(+), 16 deletions(-) (limited to 'nicolist.js') diff --git a/nicolist.js b/nicolist.js index ce1b9dd..85bdb20 100644 --- a/nicolist.js +++ b/nicolist.js @@ -5,20 +5,31 @@ var INFO = ebith + New BSD License :nicolist-add :nicolist add mylist-id -

マイリストに動画を追加します

+

mylist-idで指定したマイリストに動画を追加します

+
+ + :nicolist-delete + :nicolist delete mylist-id item-id +

mylist-idのみであればマイリストを削除、item-idの指定もあれば動画をマイリストから削除します

+
+ + :nicolist-new + :nicolist new -public name +

nameという名前でマイリストを新規作成します。-publicを付けると公開マイリストになります

:nicolist-open :nicolist open mylist-id video-id -

mylist-idのみであればマイリストを、video-idの指定もあれば動画を開きます

+

mylist-idのみであればマイリストを、video-idの指定もあれば動画を開きます

; @@ -50,7 +61,6 @@ commands.addUserCommand( ['o[pen]'], 'マイリストか動画を開く', function (args) { - liberator.log(args); let [mylist_id, video_id] = args; if (video_id) { let url = 'http://www.nicovideo.jp/watch/' + video_id; @@ -65,6 +75,39 @@ commands.addUserCommand( completer: mylistCompleter, } ), + new Command( + ['n[ew]'], + 'マイリストを新しく作る', + function (args) { + let token = getToken(); + let url = 'http://www.nicovideo.jp/api/mylistgroup/add?name=' + args.literalArg + '&token=' + token; + if ( args['-public'] ) { url += '&public=1'; } + liberator.echo('nicolist new : ' + JSON.parse(util.httpGet(url).responseText).status); + }, + { + literal: 0, + options: [ [['-public', '-p'], commands.OPTION_NOARG] ], + } + ), + new Command( + ['d[elete]'], + 'マイリストか動画を削除する', + function (args) { + let token = getToken(); + let [mylist_id, item_id] = args; + if (item_id) { + let url = 'http://www.nicovideo.jp/api/mylist/delete?group_id=' + mylist_id + '&id_list[0][]=' + item_id + '&token=' + token; + liberator.echo('nicolist delete : ' + JSON.parse(util.httpGet(url).responseText).status); + } else if (mylist_id) { + let url = 'http://www.nicovideo.jp/api/mylistgroup/delete?group_id=' + mylist_id + '&token=' + token; + liberator.echo('nicolist delete : ' + JSON.parse(util.httpGet(url).responseText).status); + } + }, + { + literal: 1, + completer: mylistCompleter, + } + ), ] }, true @@ -72,28 +115,49 @@ commands.addUserCommand( 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.incomplete = true; 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)) - ]; + + let url = 'http://www.nicovideo.jp/api/mylistgroup/list'; + util.httpGet(url, function (xhr) { + context.incomplete = false; + context.completions = [ + [v.id, v.name] + for ([k, v] in Iterator(JSON.parse(xhr.responseText).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.incomplete = true; 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)) - ]; + + let url = 'http://www.nicovideo.jp/api/mylist/list?group_id=' + args[0]; + util.httpGet(url, function (xhr) { + context.incomplete = false; + + if (/open/.test(context.name)) { + context.completions = [ + [v.item_data.video_id, v.item_data.title] + for ([k, v] in Iterator(JSON.parse(xhr.responseText).mylistitem.sort(sorter))) + ]; + } else if (/delete/.test(context.name)) { + context.completions = [ + [v.item_id, v.item_data.title] + for ([k, v] in Iterator(JSON.parse(xhr.responseText).mylistitem.sort(sorter))) + ]; + } + }); } } function sorter (a, b) { return - (a.create_time - b.create_time); } + +function getToken () { + let url = 'http://www.nicovideo.jp/my/mylist'; + return util.httpGet(url).responseText.match(/NicoAPI\.token.+/)[0].match(/\d{5}-\d{10}-[\d\w]{40}/)[0]; +} -- cgit v1.2.3