您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
2021. 1. 2. 오후 9:43:11
// ==UserScript== // @name dcDel // @namespace Violentmonkey Scripts // @match https://gall.dcinside.com/mgallery/board/lists* // @grant none // @version 0.2.4 // @author - // @description 2021. 1. 2. 오후 9:43:11 // ==/UserScript== var colg = $("colgroup")[0].children[0], th = $("thead")[0].children[0].children[0]; if(colg.getAttribute('style') == 'width:25px') { colg.remove(); th.remove(); } var issue = $(".ub-content"); for(var i=0; i<issue.length; i++) { if(issue[i].getAttribute('data-no') == null) { issue[i].remove(); } } var submit_button = $('#avoid_pop').find('button')[0]; var ElementPointNo_Click = null; $(document).on("contextmenu",function(e){ var ElementPoint, ClosestPoint, ElementPointNo = null; ElementPoint = fromPoint(e); ClosestPoint = $(ElementPoint).closest("tr")[0]; if(ClosestPoint != undefined) ElementPointNo = ClosestPoint.getAttribute('data-no'); if($(ElementPoint).parent()[0].classList[0] == "nickname") { var x, y; var nickName = ElementPoint.innerText; var nickTd = $(ElementPoint).parent().parent(); var uid = nickTd[0].getAttribute('data-uid'); if(uid != "") { nickName = nickName+'('+uid+')'; } else { nickName = nickName+'('+nickTd[0].getAttribute('data-ip')+')'; } x = e.pageX - document.scrollingElement.scrollLeft; y = e.pageY - document.scrollingElement.scrollTop; ElementPointNo_Click = ElementPointNo; $('#avoid_pop').attr('style', 'left: '+x+'px; top: '+y+'px; position: fixed;'); //$($('#avoid_pop').find('button')[0]).attr('onclick', "avoid_submit_dcDel($('#avoid_pop'), "+ElementPointNo+")"); $($('#avoid_pop').find('button')[0]).attr('onclick', ""); $('#avoid_pop').find('h3')[0].innerText = nickName+' 차단'; return false; } if(ElementPointNo != null) { var delCon = confirm("정말로 삭제하시겠습니까?\n제목: "+ClosestPoint.innerHTML.split("</em>")[1].split("</a>")[0]); if(delCon == true) del_custom(ElementPointNo); return false; } else if(ElementPoint.getAttribute('class') == 'btn_write sp_img' || ElementPoint.getAttribute('class') == 'btn_blue write') { window.open('https://gall.dcinside.com/mgallery/board/write/?id='+getParameterByName('id'), '_blank').focus(); } else if(ElementPoint.getAttribute('class') == 'sp_img btn_useradmin_go') { window.open('https://gall.dcinside.com/mgallery/management?id='+getParameterByName('id'), '_blank').focus(); } //window.location.href }); $(submit_button).click(function(e) { var cancelReturn; if(ElementPointNo_Click != null) { cancelReturn = avoid_submit_dcDel($('#avoid_pop'), ElementPointNo_Click); //console.log(cancelReturn); if(cancelReturn != 'cancel') ElementPointNo_Click = null; //ElementPointNo_Click = null; //$('#avoid_pop').hide(); return; } }); $(document).click(function(e){ if($('#avoid_pop')[0].getAttribute('style').indexOf('none') == -1) { if(ElementPointNo_Click == null) { $('#avoid_pop').hide(); } return; } if($('#ks-config')[0].getAttribute('class') != 'ks-active') { var ElementPoint, ClosestPoint, ElementPointNo = null; ElementPoint = fromPoint(e); ClosestPoint = $(ElementPoint).closest("tr")[0]; if(ClosestPoint != undefined) ElementPointNo = ClosestPoint.getAttribute('data-no'); if(ElementPointNo != null) { var goURL; if($(ElementPoint).prop('tagName') == 'A') { goURL = ElementPoint.getAttribute('href'); } else { goURL = $($(ElementPoint).closest("tr").children()[2]).children()[0].getAttribute('href'); } window.open(goURL, '_blank').focus(); return false; } } }); function fromPoint(e) { var x, y; x = e.pageX - document.scrollingElement.scrollLeft; y = e.pageY - document.scrollingElement.scrollTop; return document.elementFromPoint(x, y); } function del_custom(no) { var allVals = Array(); allVals.push(no); if(true){ $.ajax({ type : "POST", url : "/ajax/"+ get_gall_type_name() +"_manager_board_ajax/delete_list", data : { 'ci_t': get_cookie('ci_c'), 'id': $.getURLParam('id'), 'nos': allVals ,_GALLTYPE_: _GALLERY_TYPE_ }, dataType : 'json', cache : false, async : false, success : function(ajaxData) { if(typeof(ajaxData.msg) != 'undefined' && ajaxData.msg) { //alert(ajaxData.msg); } if(ajaxData.result == "success") { //location.reload(true); } }, error : function(data) { alert('시스템 오류로 작업이 중지되었습니다. 잠시 후 다시 이용해 주세요.'); } }); } } function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } var target = $('.gall_list').children()[3]; var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { autoDel(); }); }); var config = { childList: true }; observer.observe(target, config); setTimeout(function() { newNav(); }, 1000); function newNav() { $("<h2 class='ks-config-item'>정규표현식</h2><div class='ks-config-item ks-config-key'><textarea id='inPattern' style='width: 500px; height: 500px;'></textarea></div>").appendTo($($('#ks-config').children()[0])); } function autoDel() { var wordPattern = $('#inPattern')[0].value.split('\n'); var list = $('.gall_tit'); for(var i=0; i<list.length; i++) { var tit = $(list[i]).children()[0].innerHTML.split('</em>')[1]; var dataNo = $(list[i]).parent()[0].getAttribute('data-no'); if($(list[i]).parent()[0].getAttribute('class').indexOf('ks-deleted') != -1) { continue; } for(var j=0; j<wordPattern.length; j++) { var temp = eval('/'+wordPattern[j]+'/'); if(temp == undefined) break; if(temp.test(tit) == true) { console.log('「'+tit+'」게시글이 정규표현식에 따라 삭제되었습니다.'); del_custom(dataNo); break; } } } } function avoid_submit_dcDel(elm, no, is_cmt) { var parent = null; var allVals = Array(); var chk = $('input[name="chk_article[]"]:checked'); var avoid_hour = $(':radio[name="avoid_hour"]:checked', elm).val(); var avoid_reason = $(':radio[name="avoid_reason"]:checked', elm).val(); var avoid_reason_txt = ''; var del_chk = 0; var is_list = chk.length && (typeof(no) == 'undefined' || !no); var is_view = typeof(no) != 'undefined' && no > 0 && (typeof(is_cmt) == 'undefined' || !is_cmt); var is_comment = chk.length && typeof(no) != 'undefined' && no > 0 && typeof(is_cmt) != 'undefined' && is_cmt; if(is_comment || is_list) { parent = no; chk.each(function() { var n_no = $(this).closest('tr, .cmt_info , .reply_info').attr('data-no'); allVals.push(n_no); }); } else if(is_view) { allVals.push(no); } else { alert("게시물을 선택해주세요."); return 'cancel'; } if(typeof avoid_hour == 'undefined'){ alert('차단 기간을 선택해주세요.'); return 'cancel'; } if(typeof avoid_reason == 'undefined'){ alert('차단 사유를 선택하거나 직접 입력해주세요.'); return 'cancel'; } if(avoid_reason == '0') { avoid_reason_txt = $(".reason_input", elm).val(); if(avoid_reason_txt == ''){ alert('차단 사유를 입력해주세요!'); return 'cancel'; } } if($("input:checkbox[name='avoid_del']").is(":checked")) { del_chk = 1; if(chk.length > 1) { chk.each(function() { var data_type = $(this).closest('tr').attr('data-type'); if(data_type == 'icon_notice' || data_type == 'icon_recomimg') { del_chk = false; } }); } if(del_chk === false) { alert('개념글 또는 공지가 포함된 경우 1개씩만 삭제가 가능합니다.'); return; } } $.ajax({ type : "POST", url : "/ajax/"+ get_gall_type_name() +"_manager_board_ajax/update_avoid_list", data : { ci_t : get_cookie('ci_c'), id: $.getURLParam('id'), nos : allVals, parent: parent, avoid_hour : avoid_hour, avoid_reason : avoid_reason, avoid_reason_txt : avoid_reason_txt, del_chk : del_chk ,_GALLTYPE_: _GALLERY_TYPE_ }, dataType : 'json', cache : false, async : false, success : function(ajaxData) { if(typeof(ajaxData.msg) != 'undefined' && ajaxData.msg) { alert(ajaxData.msg); } if(del_chk == 1) { if($.getURLParam('no')) { if(parent) { $('.btn_cmt_refresh').click(); } else { location.href = location.href.replace('view', 'lists').replace(/&no=[0-9]+/, ''); } } else { //location.reload(true); } } //$(elm).hide(); $(':radio:checked', elm).prop('checked', false); $(':text', elm).val(''); if(chk.length) { $(chk).prop('checked', false); $("#comment_chk_all").prop('checked', false); } if(ajaxData.avoid == 'T') { //console.log('차단'); avoid_hour_set(); } }, error : function(ajaxData) { alert('시스템 오류로 작업이 중지되었습니다. 잠시 후 다시 이용해 주세요.'); } }); }