YouTube Like/Dislike Shortcut

Enables keyboard shortcuts to like/dislike a video on YouTube.

// ==UserScript==
// @name               YouTube Like/Dislike Shortcut
// @name:pt-BR         Atalhos Gostei/Não Gostei no YouTube
// @namespace          will64gamer
// @author             will64gamer
// @description        Enables keyboard shortcuts to like/dislike a video on YouTube.
// @description:pt-BR  Cria atalhos para os botões gostei/não gostei em um vídeo no YouTube.
// @match              *://*.youtube.com/*
// @license            MIT
// @version            4.5.1
// ==/UserScript==

// You can change the codes to whichever keys you want to use for liking, disliking, and opening or writing comments on Shorts.
const codeLike = "NumpadAdd";
const codeDislike = "NumpadSubtract";
const codeComments = "NumpadMultiply";
const codeWrite = "NumpadDivide";

/* Filling in these quotation marks with the code of a key creates an additional shortcut dedicated to removing your like/dislike,
   that makes it so that pressing the regular shortcuts for liking/disliking multiple times has no effect on the state of that button.
   If you want to use the regular shortcuts for removing likes/dislikes as well, leave this blank.                                     */
let codeRemove = " ";

// If you want the shortcut to be triggered only when holding ctrl, alt, or shift, change this value from 0 to 1, 2, or 3, respectively.
const combination = 0;

// Change this to 0 if you don't want the sound alert. 1 only triggers the alert on regular videos, 2 triggers it on Shorts as well.
const alertPlays = 2;

// Change these values if you want to change the volume percentage of the alerts from their default (value must be between in the 0-100 range).
const likeVolumePercentage = 50;
const dislikeVolumePercentage = 30;

// You can change the sounds for the alerts by using your own audio file URLs or base64 encoded data.
const likeSound = new Audio(`
  data:audio/mp3; base64,
  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
`);

const dislikeSound = new Audio(`
  data:audio/mp3; base64,
  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
`);

//    /\/\/\   Settings   /\/\/\
//  ------------------------------
//    \/\/\/     Code     \/\/\/

let tag, pressed, timeout;
let isShort = false, rendererId = 0, shortsArray = [];
let like, dislike, buttons, sLike, sDislike, comments, closeComments, textbox, commentBox, description;

if (codeRemove == null) {codeRemove = "";}
else {codeRemove = codeRemove.trim();}

likeSound.volume = likeVolumePercentage/100;
dislikeSound.volume = dislikeVolumePercentage/100;

const observer = new MutationObserver(findButtons);

addEventListener('yt-page-data-updated', reset);
addEventListener('popstate', reset);

function reset() {
  isVideo = /^\/watch/.test(location.pathname);
  isShort = /^\/shorts/.test(location.pathname);
  if (isVideo||isShort) {
    removeEventListener("keydown", press);
    like = null; dislike = null; sLike = null; sDislike = null; pressed = null;
    comments = null; closeComments = null; textbox = null;
    observer.observe(document.documentElement, {childList: true, subtree: true});
    findButtons();
  }
}

function findButtons() {
  if ((like && dislike) || (sLike && sDislike && comments)) {
    addEventListener("keydown", press);
    observer.disconnect();
    let currentURL = location.href, first = true;
    if (isShort) {
      let shortInterval = setInterval(() => {
        if (first) {
          checkId(location.href);
          first = false;
        }
        if (location.href !== currentURL) {
          clearInterval(shortInterval);
          currentURL = location.href;
          if(!checkId(location.href)){rendererId++;}
          reset();
        }
      }, 400);
    }
  }

  if (isShort) {
    adButtons = document?.getElementsByTagName("ytd-reel-video-renderer")[rendererId]
      ?.getElementsByClassName("overlay style-scope ytd-reel-video-renderer")[1]
      ?.getElementsByTagName("ytd-ad-slot-renderer")[0]?.firstElementChild?.firstElementChild?.firstElementChild
      ?.firstElementChild?.getElementsByClassName("YtwReelsPlayerOverlayLayoutViewModelHostActionBar")[0]
      ?.firstElementChild?.getElementsByTagName("button-view-model");
    if(!adButtons){
      buttons = document?.getElementsByTagName("ytd-reel-video-renderer")[rendererId]
        ?.getElementsByClassName("overlay style-scope ytd-reel-video-renderer")[1]?.firstElementChild
        ?.getElementsByClassName("action-container")[0]?.firstElementChild?.querySelectorAll("button");
      if (buttons) {
        sLike = buttons[0];
        sDislike = buttons[1];
        comments = buttons[2];
        closeComments = null;
      }
    } else {
      sLike = adButtons[0]?.firstElementChild?.firstElementChild?.firstElementChild?.firstElementChild;
      sDislike = adButtons[1]?.firstElementChild?.firstElementChild?.firstElementChild?.firstElementChild;
      comments = adButtons[2]?.firstElementChild?.firstElementChild?.firstElementChild;
      closeComments = "ad";
    }
  } else {
    like = document?.getElementsByTagName("like-button-view-model")[0]?.firstElementChild?.firstElementChild?.firstElementChild;
    dislike = document?.getElementsByTagName("dislike-button-view-model")[0]?.firstElementChild?.firstElementChild?.firstElementChild;
  }
}

function press(e) {
  if (e.target.getAttribute("contenteditable") === "true") {return;}

  tag = e.target.tagName.toLowerCase();
  if (tag === "input" || tag === "textarea") {return;}

  switch (combination) {
    case 1:
      if (!e.ctrlKey) {return;}
      break;
    case 2:
      if (!e.altKey) {return;}
      break;
    case 3:
      if (!e.shiftKey) {return;}
      break;
  }

  switch (e.code) {
    case codeComments:
      if (comments) {
        if (closeComments && closeComments != "ad") {
          closeComments.click();
          closeComments = null;
        } else {
          openComments();
        }
      }
      break;
    case codeWrite:
      if (textbox) {
        openComments();
        setTimeout(() => {
          textbox.click();
        }, 100);
      } else if (comments) {
        openComments();
        let textboxInterval = setInterval(() => {
          if (!textbox) {
            textbox = document.getElementById("simplebox-placeholder");
          } else {
            textbox.focus();
            clearInterval(textboxInterval);
          }
        }, 300);
      } else {
        if (commentBox) {
          commentBox.click();
        } else {
          commentBox = document?.getElementsByClassName("style-scope ytd-comment-simplebox-renderer")[1]?.firstElementChild;
          if (!commentBox) {
            if (!description){
              description = document.getElementById("bottom-row");
              description.scrollIntoView();
            }
            let commentBoxInterval = setInterval(() => {
              if (!commentBox) {
                commentBox = document?.getElementsByClassName("style-scope ytd-comment-simplebox-renderer")[1]?.firstElementChild;
              } else {
                commentBox.focus();
                clearInterval(commentBoxInterval);
              }
            }, 300);
          } else {commentBox.click();}
        }
      }
      break;
    case codeLike:
      if (like && pressed != like) {
        if (codeRemove != "") {pressed = like;}
        if (alertPlays !== 0) {alert(like);}
        like.click();
      }
      else if (sLike && pressed != sLike) {
        if (codeRemove != "") {pressed = sLike;}
        if (alertPlays === 2) {alert(sLike);}
        sLike.click();
      }
      break;
    case codeDislike:
      if (dislike && pressed != dislike) {
        if (codeRemove != "") {pressed = dislike;}
        if (alertPlays !== 0) {alert(dislike);}
        dislike.click();
      }
      else if (sDislike && pressed != sDislike) {
        if (codeRemove != "") {pressed = sDislike;}
        if (alertPlays === 2) {alert(sDislike);}
        sDislike.click();
      }
      break;
    case codeRemove:
      if (pressed) {
        pressed.click();
        pressed = null;
      }
      break;
  }
}

function checkId(href) {
  for(let i = 0; i < shortsArray.length; i++) {
    if (href === shortsArray[i]) {
      rendererId = i;
      return true;
    }
  }
  shortsArray.push(href);
  return false;
}

function openComments() {
  comments.click();
  let closeCommentsInterval = setInterval(() => {
    if (!closeComments) {
      closeComments = document?.getElementById("visibility-button")?.getElementsByTagName('button')[0];
    } else {
      clearInterval(closeCommentsInterval);
    }
  }, 300);
}

function alert(element) {
  if (element.getAttribute("aria-pressed") === "false") {
    if (element === dislike || element === sDislike) {dislikeSound.play();}
    else {likeSound.play();}
  }
}