Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/4c4efdc23173aefdf58d13ed51a6b5a2.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript== // @name 네이버 카페 게시물 실제 아이디 클립보드 복사 // @namespace 네이버 카페 게시물 실제 아이디 클립보드 복사 // @grant GM_setClipboard // @match *://*cafe.naver.com/* // @exclude *://cafe.naver.com/ca-fe/* // @version 0.5 // @description 네이버 카페 게시물의 작성자 아이디를 버튼을 통해 클립보드로 복사하고, 복사된 아이디를 표시합니다. 닉네임 옆에 "(아이디)" 텍스트를 추가합니다. 블로그 가기 버튼과 블로그 구독 버튼을 추가하고 아이콘을 표시합니다. // @icon data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKUSURBVHgB7Zc9b9NQFIbfc+22aQTCCBWJzT+hLEgFIaW/oB0AQZamW5mg/yBdqRD0FxAWiMRAOpCFoUYCIrE0O0PCgFiQGjHko7Hv4dj5/mqckkRC8EiW7euj+77Hvvfca+Bfh3AOHn6/t2mYessgHSNoS5EGEcM/t9Ca956uZJPj+jIxATs/EjZz7QWDY9rXEvvUTIHAwbllgphLYfoMbSBRSNinrnesyLC6M1VyaPI7qouZTjvBdcL0G8pAorBja1U7AitL5CRXFbSzyBjKw6I6DT5BBy7uX32fD9N3KAN16EfEht24I5GXTCXb6EIZpnIH4klREiEJZcBjtama1wouootlLC9UhgdrPnhyJfsS0zJw5+tOTAzY/hiLLpVxKVKSgcYjxfdXso8xAWMNMJlWxKjg8vIJImZteAzDYSaZdu8cTMhYAyvGz/zFC7+2G0qDz+v1Ref5tUwRfys9ldD4GE8wwcYM0MR5+MdaujjaQC7OmD0pL1LexfVMUCkV5k9CVaNHrZv5GCDOyFRp1wZ57avqUzw5PwMuHXo3X8v44t2OKWzMz0ATXVlKtfUJq3M3gEjV6robMggZodbwiTFxguNNy4R629HSHxqPuqHAgIVpoyllVKNW9xxXppf00PcGpKYfYhYQ9yQlK/le/cabYL/QY0B2OhnMCA4+Lzuyh1x3b71Kts30B6pcvCCNNqYEuSJ4O+2Meq4GG/Q2pkfqLPGGXh/uWtqR/cYB/hDZORc96L1xcSP/C4zPD1JSLbZwTnHZuq73r3zDGFmI/NIp7sZmMCiOfFhxn/F/Rl/urhqe+UxCY2eF+aNcEQ7ctc4In46BFrn7tiK1IXM41p7XTCX5I/rmr3ZupJpvrfH/mYTfRefs0vcTSpcAAAAASUVORK5CYII= // @author mickey90427 // @downloadURL https://update.greasyfork.icu/scripts/468224/%EB%84%A4%EC%9D%B4%EB%B2%84%20%EC%B9%B4%ED%8E%98%20%EA%B2%8C%EC%8B%9C%EB%AC%BC%20%EC%8B%A4%EC%A0%9C%20%EC%95%84%EC%9D%B4%EB%94%94%20%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%20%EB%B3%B5%EC%82%AC.user.js // @updateURL https://update.greasyfork.icu/scripts/468224/%EB%84%A4%EC%9D%B4%EB%B2%84%20%EC%B9%B4%ED%8E%98%20%EA%B2%8C%EC%8B%9C%EB%AC%BC%20%EC%8B%A4%EC%A0%9C%20%EC%95%84%EC%9D%B4%EB%94%94%20%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%20%EB%B3%B5%EC%82%AC.meta.js // ==/UserScript== (function () { // 버튼 클릭 시 아이디 복사 함수 function copyWriterId() { const writerId = this.getAttribute('data-writer-id'); GM_setClipboard(writerId); showCopiedText(writerId); } // '블로그 가기' 버튼 클릭 시 블로그로 이동하는 함수 function goToBlog() { const writerId = this.getAttribute('data-writer-id'); const blogUrl = `https://blog.naver.com/${writerId}`; window.open(blogUrl, '_blank'); } // '블로그 구독' 버튼 클릭 시 블로그 구독 주소를 열어주는 함수 function subscribeToBlog() { const writerId = this.getAttribute('data-writer-id'); const rssUrl = `https://rss.blog.naver.com/${writerId}.xml`; window.open(rssUrl, '_blank'); } // 이메일 복사 함수 function copyWriterEmail() { const writerId = this.getAttribute('data-writer-id'); const email = `${writerId}@naver.com`; GM_setClipboard(email); showCopiedText(email); } // 복사된 아이디 표시 함수 function showCopiedText(writerId) { const textElement = document.createElement('div'); textElement.className = 'copied-text'; textElement.textContent = `복사됨 : ${writerId}`; document.querySelector('.article_info').appendChild(textElement); setTimeout(() => { textElement.remove(); }, 1000); } // MutationObserver 콜백 함수 function observeMutation(mutations) { mutations.forEach((mutation) => { // 노드 추가일 경우 if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { const addedNode = mutation.addedNodes[0]; // 추가된 노드가 작성자 정보 버튼을 포함하고 있는지 확인 if (addedNode.querySelector('.article_header')) { const writerInfoButton = addedNode.querySelector('[id^="writerInfo"]'); const writerId = writerInfoButton.id.replace("writerInfo", ""); // 버튼 추가 const nickLevelElement = addedNode.querySelector('.nick_level'); const button = document.createElement('button'); button.className = 'copy-button'; button.innerHTML = ` 아이디 복사 `; button.setAttribute('data-writer-id', writerId); button.addEventListener('click', copyWriterId); const emailButton = document.createElement('button'); emailButton.className = 'email-button'; emailButton.innerHTML = ` 이메일 복사 `; emailButton.setAttribute('data-writer-id', writerId); emailButton.addEventListener('click', copyWriterEmail); const blogButton = document.createElement('button'); blogButton.className = 'blog-button'; blogButton.innerHTML = ` 블로그 가기 `; blogButton.setAttribute('data-writer-id', writerId); blogButton.addEventListener('click', goToBlog); const subscribeButton = document.createElement('button'); subscribeButton.className = 'subscribe-button'; subscribeButton.innerHTML = ` 블로그 구독 `; subscribeButton.setAttribute('data-writer-id', writerId); subscribeButton.addEventListener('click', subscribeToBlog); // 버튼을 담을 컨테이너 추가 const buttonContainer = document.createElement('div'); buttonContainer.className = 'button-container'; buttonContainer.appendChild(button); buttonContainer.appendChild(emailButton); buttonContainer.appendChild(blogButton); buttonContainer.appendChild(subscribeButton); nickLevelElement.insertAdjacentElement('afterend', buttonContainer); // 닉네임 수정 const nicknameButton = addedNode.querySelector('.nickname'); const nicknameText = nicknameButton.textContent.trim(); nicknameButton.textContent = `${nicknameText} (${writerId})`; // 스타일 수정 buttonContainer.style.marginLeft = '0px'; nicknameButton.style.marginRight = '0px'; nicknameButton.style.paddingRight = '0px'; } } }); } // 스타일 추가 const style = document.createElement('style'); style.textContent = ` .copy-button, .email-button, .blog-button, .subscribe-button { display: inline-flex; align-items: center; font-size: 12px; font-weight: bold; padding: 2px 6px; border-radius: 4px; color: #fff; border: none; cursor: pointer; transition: background-color 0.3s; margin: 0 2px; } .copy-button { background-color: #4CAF50; } .copy-button:hover { background-color: #45A049; } .email-button { background-color: #2196F3; } .email-button:hover { background-color: #1E88E5; } .blog-button { background-color: #FF9800; } .blog-button:hover { background-color: #F57C00; } .subscribe-button { background-color: #FF5722; } .subscribe-button:hover { background-color: #F4511E; } .copy-icon, .email-icon, .blog-icon, .rss-icon { width: 16px; height: 16px; fill: currentColor; margin-right: 4px; } .copied-text { margin-top: 8px; font-size: 12px; color: #666; } `; document.head.appendChild(style); // MutationObserver 생성 const observer = new MutationObserver(observeMutation); observer.observe(document.body, { childList: true, subtree: true, }); })();