您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
批量添加目录条目,直接修改条目排序和评论,批量保存已修改的条目,可选择按当前列表顺序保存
当前为
// ==UserScript== // @name Bangumi-Index-Batch-Edit // @namespace https://github.com/bangumi/scripts/liaune // @author binota,Liaune // @license MIT // @description 批量添加目录条目,直接修改条目排序和评论,批量保存已修改的条目,可选择按当前列表顺序保存 // @include /^https?:\/\/((bgm|bangumi)\.tv|chii\.in)\/index\/\d+/ // @version 1.1.1 // @require https://code.jquery.com/ui/1.11.4/jquery-ui.min.js // @grant GM_addStyle // ==/UserScript== function postData(url, data) { return new Promise((resolve, reject) => { $.post(url,data,()=>{resolve()}); }); } function closeDialog() { $('#TB_overlay').remove(); $('#TB_window').remove(); } async function saveRelateItems(items) { for(let i = 0;i < items.length; i++) { let data = { content: items[i].content.trim(), formhash: formhash, order: items[i].order, submit: '提交' }; await postData('/index/related/' + items[i].item_id + '/modify', data).then(()=> { console.log(i); $('#savenowOrder').html('保存中... (' + (i+1) + '/' + items.length +')'); if(i == items.length-1){ $('#savenowOrder').html('保存完毕...!'); setTimeout(()=>{location.reload()}, 500); } }); } }; async function addRelateBatch(url, items){ for(let i = 0;i < items.length; i++) { await postData(url, {add_related: items[i], formhash: formhash, submit: '添加新关联'}).then(()=> { console.log(i); $('#submit_list').val('添加中... (' + (i+1) + '/' + items.length +')'); if(i == items.length-1){ $('.bibeBox input[name="submit"]').val('添加完毕...!'); setTimeout(()=>{location.reload()}, 500); } }); } } //Check the owner of index, then insert the button for modify orders if($('.idBadgerNeue a.avatar').attr('href').search($('.grp_box a.avatar').attr('href')) >= 0) { $('.grp_box .tip_j').append(` / <a id="modifyOrder" class="chiiBtn" href="javascript:;">批量编辑</a>`); $('#indexCatBox ul').append(`<li class="add"><a id="addRelateBatch" class="add thickbox" href="javascript:;"><span>+批量添加</span></a></li>`); } //Get formhash const formhash = $('input[name="formhash"]').val(); //make items sortable. $.getScript('https://code.jquery.com/ui/1.11.4/jquery-ui.min.js',function(){ console.log('getScript'); $('#browserItemList').sortable({ handle: ".cover"}); $('#columnSubjectBrowserA .browserList,#columnSubjectBrowserA .browserCrtList').sortable({ handle: ".avatar"}); }); $('#modifyOrder').click(function() { $(this).remove(); $('.grp_box .tip_j').append('<a id="saveOrder" class="chiiBtn" href="#">保存修改</a>'); $('.grp_box .tip_j').append('<a id="savenowOrder" class="chiiBtn" href="#">按当前列表顺序保存</a>'); //insert comment_box if needs. $('#browserItemList .tools,#columnSubjectBrowserA .browserList .tools,#columnSubjectBrowserA .browserCrtList .tools').each(function() { let order = parseInt($(this).find('a').attr('order')); if($(this).parent().find('.text').length === 0){ $('<div id="comment_box"><div class="item"><div style="float:none;" class="text_main_even"><div class="text"><br></div><div class="text_bottom"></div></div></div></div>').insertBefore($(this)); } $(`<span class="tip">排序:</span><input id="modify_order" name="order" type="text" value=${order} class="inputtext" style="width:30px;height:15px">`).insertAfter($(this)); }); $('#browserItemList .text,#columnSubjectBrowserA .browserList .text,#columnSubjectBrowserA .browserCrtList .text').attr('contenteditable', 'true'); let contents = [], item_ids = [], orders = [], items = []; $('#browserItemList > li,#columnSubjectBrowserA .browserList > li,#columnSubjectBrowserA .browserCrtList > div').each(function(i) { contents[i] = $(this).find('.text').text().trim(); item_ids[i] = $(this).find('.tools :first-child').attr('id').match(/modify_(\d+)/)[1]; orders[i] = parseInt($(this).find('input').attr('value')); }); $('#saveOrder').click(function() { if(!confirm('确定要保存么?')) return; $(this).attr('disabled', 'disabled'); $(this).html('保存中...'); $('#browserItemList > li,#columnSubjectBrowserA .browserList > li,#columnSubjectBrowserA .browserCrtList > div').each(function(i) { let content = $(this).find('.text').text().trim(); let item_id = $(this).find('.tools :first-child').attr('id').match(/modify_(\d+)/)[1]; let order = parseInt($(this).find('input').attr('value')); if((order != orders[i])|(content != contents[i])){ items.push({"item_id": item_id, "content": content, "order":order}); } }); saveRelateItems(items); }); $('#savenowOrder').click(function() { if(!confirm('确定按当前列表顺序保存么?')) return; $(this).attr('disabled', 'disabled'); $(this).html('保存中...'); $('#browserItemList > li,#columnSubjectBrowserA .browserList > li,#columnSubjectBrowserA .browserCrtList > div').each(function(i) { let content = $(this).find('.text').text().trim(); let item_id = $(this).find('.tools :first-child').attr('id').match(/modify_(\d+)/)[1]; let order = i; if((order != orders[i])|(content != contents[i])){ items.push({"item_id": item_id, "content": content, "order":order}); } }); saveRelateItems(items); }); }); $('#addRelateBatch').on('click', ()=> { let dialog = `<div id="TB_overlay" class="TB_overlayBG TB_inline"></div> <div id="TB_window" style="margin-left: -240px; width: 480px; margin-top: -100px; display: block;"> <div id="TB_title"><div id="TB_ajaxWindowTitle">批量添加关联条目</div><div id="TB_closeWindowButton" title="Close">X 关闭</div></div> <div class="bibeBox" style="padding:10px"> <label>请输入url如 https://bgm.tv/subject/265,一行一个</label> <textarea rows="10" class="quick" name="urls"></textarea> </div> <input class="inputBtn" value="添加关联" id="submit_list" type="submit"> </div></div>`; $('body').append(dialog); $('#submit_list').on('click', ()=> { $('#submit_list').val('添加关联中...'); let url = $('#indexCatBox a')[0].href + '/add_related'; let items = $('.bibeBox textarea').val().split('\n'); addRelateBatch(url, items); //$('.bibeBox input[name="submit"]').val('添加完毕...!'); }); $('#TB_closeWindowButton').on('click', closeDialog); }); /*$('#editRelateBatch').on('click', ()=> { let dialog = `<div id="TB_overlay" class="TB_overlayBG TB_inline"></div> <div id="TB_window" style="margin-left: -240px; width: 480px; margin-top: -100px; display: block;"> <div id="TB_title"><div id="TB_ajaxWindowTitle">批量修改关联条目</div><div id="TB_closeWindowButton" title="Close">X 关闭</div></div> <div class="bibeBox" style="padding:10px"> <label>请输入url如 https://bgm.tv/subject/265,一行一个</label> <textarea rows="10" class="quick" name="urls"></textarea> </div> <input class="inputBtn" value="添加关联" id="submit_list" type="submit"> </div></div>`; $('body').append(dialog); $('#submit_list').on('click', ()=> { $('#submit_list').val('添加关联中...'); let url = $('#indexCatBox a')[0].href + '/add_related'; let items = $('.bibeBox textarea').val().split('\n'); addRelateBatch(url, items); //$('.bibeBox input[name="submit"]').val('添加完毕...!'); }); $('#TB_closeWindowButton').on('click', closeDialog); });*/