혹시 클리앙 글 지우는 매크로도 사용조건이 있나요?
알림
|
페이지 정보
작성일
2024.04.01 12:57
본문
FineAsh.exe 20230327 파일을 실행헀습니다.
여러번 실행하면 한번정도 삭제를 시작하더군요.
며칠 계속 컴퓨터를 켜놓기 그래서
3일째 되는날 컴퓨터 끄고 다시 실행할려고 지금 여러번 시도중인데요.
삭제 시작이 안되는군요.
혹시 사용조건이 있을려나요?
댓글 7
/ 1 페이지
castle님의 댓글의 댓글
@shOOny님에게 답글
감사합니다.
일단기다려 봐야겠군요.
아직 2만개 정도 남은거 같군요 ㅎㅎㅎ
일단기다려 봐야겠군요.
아직 2만개 정도 남은거 같군요 ㅎㅎㅎ
잡일전문가님의 댓글
브라우저에서 그냥 하시는 방법도 좋습니다.
로그인 하신 뒤에 브라우저 콘솔에 아래 코드 붙여넣고 엔터 치시믄 브라우저 닫거나 다른 페이지로 이동하지 않는 이상 주욱 지워집니다. 빨라요.
async function getData(type, page) {
if (type === 'likeArticles' || type === 'likeComments') page = 0;
const html = await $.ajax(
`https://www.clien.net/service/mypage/myArticle?&type=${type}&po=${page}`
);
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const pagination = doc.querySelector('.board-pagination');
const nextButton = pagination.querySelector('a.board-nav-next.ten');
const lastButton = Array.from(pagination.querySelectorAll('a.board-nav-page')).pop();
const lastPageNumber = lastButton.href.replace(/.*\D(\d+).*/, '$1');
const endpoints = Array.from(
doc.querySelectorAll(".list_myArticle a.list_subject")
)
.map((element) => {
if (element.getAttribute("href") === "#") {
return getEndpoint('deletedComments', element.getAttribute("onclick").match(/(?:')(.*?)(?:')(?:,)(.*?)(?:,)(.*?)(?:\))/))
} else {
return getEndpoint(type, element.href.match(/\/service\/board\/([^\/]+)\/(\d+)(?:\?[^#]+)?(?:#(\d+))?/))
}
}).filter(Boolean);
let next = !(!nextButton && page + 1 > lastPageNumber);
if (endpoints.length === 0 && (type === 'likeArticles' || type === 'likeComments')) {
next = false
}
return {
next: next,
title: getTitle(type),
endpoints: endpoints
};
}
function getEndpoint(type,[_,boardCd,boardSn,commentSn]) {
if (!boardCd || !boardSn) return;
if (type === 'articles') return `/board/${boardCd}/delete?boardSn=${boardSn}`
else if (type === 'comments') return `/board/${boardCd}/${boardSn}/comment/delete/${commentSn}`;
else if (type === 'deletedComments') return `/board/${boardCd}/${boardSn}/my/comment/delete/${commentSn}`;
else if (type === 'likeArticles') return `/board/like/${boardCd}/${boardSn}/delete`;
else if (type === 'likeComments') return `/comment/like/${boardCd}/${boardSn}/${commentSn}`;
}
function getTitle(type) {
if (type === 'articles') return '게시글'
else if (type === 'comments') return '코멘트'
else if (type === 'likeArticles') return '게시글 공감'
else if (type === 'likeComments') return `코멘트 공감`;
}
function sendRequest(title, endpoint) {
const url = `${API_HOST}${endpoint}`;
$.ajax({
url: url,
type: "POST",
success: function (result) {
console.log(title, "삭제 성공", url);
},
error: async function (request) {
var res = JSON.parse(request.responseText);
console.error(title, "삭제 실패", url);
console.error(res);
},
});
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function start(type, page = 1) {
console.log(`${type} ${page} 페이지 삭제 시작`);
const data = await getData(type, page -1);
for (let endpoint of data.endpoints) {
await delay(5500)
sendRequest(data.title,endpoint)
}
await delay(3000)
if (data.next) {
await start(type, ++page);
} else {
console.log(`${data.title} 삭제가 모두 완료 되었습니다.`);
}
}
await start('articles', 1);
await start('comments');
await start('likeArticles');
await start('likeComments');
로그인 하신 뒤에 브라우저 콘솔에 아래 코드 붙여넣고 엔터 치시믄 브라우저 닫거나 다른 페이지로 이동하지 않는 이상 주욱 지워집니다. 빨라요.
async function getData(type, page) {
if (type === 'likeArticles' || type === 'likeComments') page = 0;
const html = await $.ajax(
`https://www.clien.net/service/mypage/myArticle?&type=${type}&po=${page}`
);
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const pagination = doc.querySelector('.board-pagination');
const nextButton = pagination.querySelector('a.board-nav-next.ten');
const lastButton = Array.from(pagination.querySelectorAll('a.board-nav-page')).pop();
const lastPageNumber = lastButton.href.replace(/.*\D(\d+).*/, '$1');
const endpoints = Array.from(
doc.querySelectorAll(".list_myArticle a.list_subject")
)
.map((element) => {
if (element.getAttribute("href") === "#") {
return getEndpoint('deletedComments', element.getAttribute("onclick").match(/(?:')(.*?)(?:')(?:,)(.*?)(?:,)(.*?)(?:\))/))
} else {
return getEndpoint(type, element.href.match(/\/service\/board\/([^\/]+)\/(\d+)(?:\?[^#]+)?(?:#(\d+))?/))
}
}).filter(Boolean);
let next = !(!nextButton && page + 1 > lastPageNumber);
if (endpoints.length === 0 && (type === 'likeArticles' || type === 'likeComments')) {
next = false
}
return {
next: next,
title: getTitle(type),
endpoints: endpoints
};
}
function getEndpoint(type,[_,boardCd,boardSn,commentSn]) {
if (!boardCd || !boardSn) return;
if (type === 'articles') return `/board/${boardCd}/delete?boardSn=${boardSn}`
else if (type === 'comments') return `/board/${boardCd}/${boardSn}/comment/delete/${commentSn}`;
else if (type === 'deletedComments') return `/board/${boardCd}/${boardSn}/my/comment/delete/${commentSn}`;
else if (type === 'likeArticles') return `/board/like/${boardCd}/${boardSn}/delete`;
else if (type === 'likeComments') return `/comment/like/${boardCd}/${boardSn}/${commentSn}`;
}
function getTitle(type) {
if (type === 'articles') return '게시글'
else if (type === 'comments') return '코멘트'
else if (type === 'likeArticles') return '게시글 공감'
else if (type === 'likeComments') return `코멘트 공감`;
}
function sendRequest(title, endpoint) {
const url = `${API_HOST}${endpoint}`;
$.ajax({
url: url,
type: "POST",
success: function (result) {
console.log(title, "삭제 성공", url);
},
error: async function (request) {
var res = JSON.parse(request.responseText);
console.error(title, "삭제 실패", url);
console.error(res);
},
});
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function start(type, page = 1) {
console.log(`${type} ${page} 페이지 삭제 시작`);
const data = await getData(type, page -1);
for (let endpoint of data.endpoints) {
await delay(5500)
sendRequest(data.title,endpoint)
}
await delay(3000)
if (data.next) {
await start(type, ++page);
} else {
console.log(`${data.title} 삭제가 모두 완료 되었습니다.`);
}
}
await start('articles', 1);
await start('comments');
await start('likeArticles');
await start('likeComments');
shOOny님의 댓글
도중에 끊고 다시 실행하면 처음부터 읽어오는지 삭제가 재개되기까지 시간이 조금 걸립니다. 냅두면 지워지긴 하요.
근데 제는 댓글이 5만개가 넘었었는데, 3.5만개쯤 남은 상태부터는 아예 안 지워지더라고요.
문의드렸더니 댓글 페이지수가 세자리를 넘어가면 지워지지 않는 경우가 있다고...
일단은 내일까지 픽스 버전 올려주신다고 하셨었습니다. 저와 비슷한 경우라면 일단 새버전 올라오는거 기다려보세요.