Youtube like/dislike video and skip ad keyboard shortcuts

Adds keyboard shortcuts [ and ] for liking and disliking videos, and s for skipping pre-video and banner ads.

  1. // ==UserScript==
  2. // @name Youtube like/dislike video and skip ad keyboard shortcuts
  3. // @namespace nerevar009
  4. // @include https://www.youtube.com/*
  5. // @description Adds keyboard shortcuts [ and ] for liking and disliking videos, and s for skipping pre-video and banner ads.
  6. // @version 1.1
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10.  
  11. var onvideopage, skipad, skipbannerad, videoinfo, buttons, like, dislike, tag;
  12.  
  13. function findButtons() {
  14. if(!/^\/watch/.test(location.pathname)) {
  15. onvideopage = false;
  16. return;
  17. }
  18. onvideopage = true;
  19.  
  20. skipad = document.getElementsByClassName("videoAdUiSkipButton");
  21. if(skipad.length == 1)
  22. skipad = skipad[0];
  23. else skipad = null;
  24.  
  25. skipbannerad = document.getElementsByClassName("close-padding");
  26. if(skipbannerad.length == 1)
  27. skipbannerad = skipbannerad[0];
  28. else skipbannerad = null;
  29. videoinfo = document.getElementsByTagName("ytd-video-primary-info-renderer");
  30. if(videoinfo.length == 1) {
  31. buttons = videoinfo[0].getElementsByTagName("button");
  32. like = buttons[0];
  33. dislike = buttons[1];
  34. }
  35. else {
  36. like = null;
  37. dislike = null;
  38. }
  39. }
  40.  
  41. findButtons();
  42. var observer = new MutationObserver(findButtons);
  43. observer.observe(document.documentElement, {childList: true, subtree: true});
  44.  
  45. // add keybindings
  46. addEventListener("keypress", function(e) {
  47. if(!onvideopage)
  48. return;
  49.  
  50. if(e.target.getAttribute("contenteditable") == "true")
  51. return;
  52.  
  53. tag = e.target.tagName.toLowerCase();
  54. if(tag == "input" || tag == "textarea")
  55. return;
  56.  
  57. if(e.code == "BracketLeft" && like)
  58. like.click();
  59. else if(e.code == "BracketRight" && dislike)
  60. dislike.click();
  61. else if(e.code == "KeyS") {
  62. if(skipad)
  63. skipad.click();
  64. else if(skipbannerad)
  65. skipbannerad.click();
  66. }
  67. });
  68.