클리앙을 보면 종종 댓글 추첨하는 분들이 보이는데, 추첨 작업을 수작업으로 하시느라 힘들어하시는 경우들이 가끔 생기더군요.
아래 스크립트를 콘솔창에 복붙만 하시면 비교적 간편하게 댓글 추첨할 수 있습니다.
※ 댓글의 내용과는 무관하게, 그냥 해당 글에 달린 댓글 모두(또는 선착순 n개 제한)를 추첨 대상에 놓고(대댓글, 중복 ID 댓글은 제외) 랜덤으로 1명를 뽑는 스크립트입니다.
▶ 실행하는 방법
1. 댓글을 추첨할 글에 들어간 후 클리앙 단축키 R (모든 댓글 열기)을 눌러 화면에 모든 댓글이 보이도록 한다. (★중요★)
(오른쪽 브라우저 스크롤바가 늘어나는 것을 확인)
2. 브라우저 단축키 F12를 눌러 콘솔창을 열고, 콘솔창을 클릭하여 커서가 뜨도록 한다.
3. 아래 스크립트를 콘솔에 붙여넣기 한 후 Enter!
3-1. 추첨 대상을 n번째 댓글까지로 제한할 경우, 제한 기준인 댓글이 화면에 보이도록 스크롤을 내린 후 Enter를 누르세요.
-- 수정 --
삭제된 댓글은 추첨 대상에서 제외하도록 수정하였고,
선착순 댓글 추첨을 위해 n번째 댓글까지만 추첨을 할 수 있도록, 범위를 물어보는 기능이 추가되었습니다. (전체 추첨을 하려면 그냥 엔터)
-- 수정 2 --
차단된 댓글도 추첨 대상에서 제외하도록 수정하였습니다.
-- 수정 3 --
n번째 댓글까지 제한하는 기능을 제대로 쓰기 위해, 입력창이 뜨기 전에 댓글마다 몇번째 댓글인지 파란색 숫자가 뜨도록 했습니다.
이제 추첨 마감할 댓글을 화면에 둔 상태에서 스크립트를 입력하세요.
-- 수정 4 --
새치기를 막기 위해 대댓글은 추첨 범위에서 제외하도록 수정하였습니다.
-- 수정 5 --
기존엔 출력 메시지 가장 마지막 줄에 당첨자가 나왔는데, 추첨 대상 댓글이 대략 1000개가 넘어가면, 브라우저의 출력 메시지 생략 기능 때문에 more 버튼을 눌러야만 메시지에서 당첨자 ID가 보이는 사소한 문제가 있었습니다.
이제부턴 출력메시지 끝부분이 생략되도 more버튼을 누를 필요가 없도록, 처음과 끝 양쪽에 당첨자 ID를 보여주도록 메시지 포멧을 수정했습니다.
-- 수정 6 --
다수 추첨 기능이 추가된 다음 버전은 https://www.clien.net/service/board/lecture/13864872CLIEN 이 링크에 있습니다.
https://www.clien.net/service/board/lecture/13864872CLIEN
다음 버전은 위 링크에서 받으세요.
/* 클리앙 댓글 랜덤 추첨 스크립트 (대댓글, 중복ID 제외) */
/* 이 스크립트를 실행하기 전에 단축키 R(모든 댓글 열기)을 눌러주세요. */
{const c='.post_comment .comment_row:not(.hidden):not(.re)',l='='.repeat(40);$(c).each((i,e)=>{$(e).find('.post_contact').prepend(`<span class='rCnt' style="padding:2px;background:blue;color:white">${i+1}</span>`)});setTimeout(()=>{let a=new Set(),p=Number(prompt('추첨 범위를 n번째 댓글까지 제한하고 싶으면 숫자를 입력하세요.\n(댓글 왼쪽에 보이는 파란 숫자)\n\n전체 추첨이라면 그냥 엔터'));$('.rCnt').remove();$(c).each((i,e)=>{if(p&&i>=p)return false;a.add(e.dataset.authorId);});a=[...a].filter(Boolean);const r=a[Math.floor(Math.random()*a.length)],$t=$(c+`[data-author-id=${r}]`).first().css('outline','solid 5px orange'),$k=$t.find('.nickname>*'),n=$k.attr('alt')||$k.text(),z=`${l}\n${n}(${r})님 당첨!!`;console.log(`${z}\n${l}\n추첨 대상(${p?p+'번째 댓글까지로 제한, ':''}총 ${a.length}명): ${a.join(',')}\n${z}`);window.scrollTo(0,$t.offset().top-10);},150);0}
게시판에서 힘들게 댓글 추첨하는 분들을 위해 만들었는데,
이거 올린 뒤에도 이 방법의 존재를 몰라서 수동으로 한땀한땀 추첨하시는 분들이 종종 있으시더라구요.
댓글 추첨하실 때, 이 게시물 링크 한번씩 남겨서 퍼트려주세요. ㅎ
개선(?)한 버젼입니다. 푸하하하. 이거 쓰시면 복받으실겁니다.
이 댓글에 있는 개조된 스크립트는 사용하지 마세요.
특정 ID를 당첨시키는 의도가 있는 불순한 목적의 코드입니다.
왜냐면 제 아이디는 pocketoy2 이고 저 코드에 있는 pocketoy는 제가 쓰다가 클리앙 끊으려고 탈퇴했던
옛날 아이디이기 때문입니다. 존재하지 않는 아이디니까 응모 자체가 발생할리 없지요.
그냥 누군가 코드 뜯어볼 사람이 있을 것 같아서 재미로 올려본겁니다.
능력자 "분" 이시네요 ^^