Youtube Copy Comment

Copy comment from Youtube to clipboard. If there is a "See more" button here, click it.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name            Youtube Copy Comment
// @name:vi         Sao Chép Bình Luận Youtube
// @namespace       https://lelinhtinh.github.io
// @description     Copy comment from Youtube to clipboard. If there is a "See more" button here, click it.
// @description:vi  Sao chép bình luận từ Youtube vào bộ nhớ đệm. Nếu có nút "Xem thêm" ở đây, nhấn vào nó.
// @version         1.0.1
// @icon            https://raw.githubusercontent.com/lelinhtinh/Userscript/master/yt_copy_comment/icon.png
// @author          lelinhtinh
// @oujs:author     baivong
// @license         MIT; https://baivong.mit-license.org/license.txt
// @match           https://www.youtube.com/live_chat
// @supportURL      https://github.com/lelinhtinh/Userscript/issues
// @run-at          document-idle
// @grant           none
// ==/UserScript==

document.addEventListener("click", (e) => {
  const mess = e.target.closest('span[dir="auto"]');
  if (!mess?.classList?.contains("yt-live-chat-text-message-renderer")) return;

  const commendText = mess.innerText;
  // console.log(commendText);
  if (!commendText) return;

  navigator.clipboard.writeText(commendText).then(
    () => {
      document.title = commendText;
      document.body.style.cursor = 'wait'
      setTimeout(() => {
        document.body.style.cursor = 'initial'
      }, 200);
    },
    () => {
      document.body.style.cursor = 'not-allowed'
      setTimeout(() => {
        document.body.style.cursor = 'initial'
      }, 200);
    },
  );
});