YT Youtube Miniplayer Killer Remove Delete

remove mini player in youtube

  1. // ==UserScript==
  2. // @name YT Youtube Miniplayer Killer Remove Delete
  3. // @namespace http://tampermonkey.net/
  4. // @version 3
  5. // @description remove mini player in youtube
  6. // @author SergoZar
  7. // @match https://*.youtube.com/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
  9. // @license GPLv3
  10. // @grant GM_registerMenuCommand
  11. // @grant GM_unregisterMenuCommand
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. // commands in menu
  18. ////////////////////////////////////////////////////////////////////
  19. console.log("AAAAAAAAAAAAAAAAAAAAAAAA");
  20. var commandIdF1 = null, commandIdF2 = null, commandIdF3 = null;
  21. var isF1 = true, isF2 = true, isF3 = true;
  22.  
  23. function localStorageSave(){
  24. var iss = `${isF1-0}${isF2-0}${isF3-0}`;
  25. console.log("save", iss);
  26. localStorage.setItem("ytttttt", iss);
  27. }
  28.  
  29. function localStorageLoad(){
  30. var iss = localStorage.getItem("ytttttt");
  31. if (iss){
  32. // я знаю що це пиздець але це працює
  33. // i know it sucks but it works
  34. console.log("load", iss);
  35. isF1 = iss[0] === "1";
  36. isF2 = iss[1] === "1";
  37. isF3 = iss[2] === "1";
  38. console.log("load",isF1,isF2,isF3);
  39. }
  40. else localStorageSave();
  41. }
  42.  
  43. localStorageLoad();
  44. if(isF1) f1();
  45. if(isF2) f2();
  46. if(isF3) f3();
  47.  
  48. function toggleF(f) {
  49. if (f == 1) isF1 = !isF1;
  50. else if (f == 2) isF2 = !isF2;
  51. else if (f == 3) isF3 = !isF3;
  52.  
  53. localStorageSave();
  54. location.reload();
  55. }
  56.  
  57. function commandF(isF, commandId, func, text){
  58. if (commandId !== null) GM_unregisterMenuCommand(commandId);
  59. commandId = GM_registerMenuCommand(`${isF ? '✔️':'❌'} ${text}`, func);
  60. }
  61.  
  62. commandF(isF1, commandIdF1, function () { toggleF(1) }, "waiting miniplayer" );
  63. commandF(isF2, commandIdF2, function () { toggleF(2) }, "constant checking for presence of miniplayer");
  64. commandF(isF3, commandIdF3, function () { toggleF(3) }, 'press "i" again');
  65.  
  66. ////////////////////////////////////////////////////////////////////
  67.  
  68.  
  69.  
  70. // close when it appears .ytp-miniplayer-close-button
  71. // I don't know if it really works, but it seems to
  72. function f1(){
  73. console.log("Miniplayer Killer - f1 - waiting miniplayer ON");
  74. const targetNode = document.body;
  75. const config = { childList: true, subtree: true };
  76. const callback = function(mutationsList, observer) {
  77. for (let mutation of mutationsList) {
  78. if (mutation.type === 'childList') {
  79. const newElement = document.querySelector('.ytp-miniplayer-close-button');
  80. if (newElement) {
  81. if (newElement && document.querySelector(".ytp-miniplayer-ui").style.display !== "none"){
  82. newElement.click();
  83. }
  84. observer.disconnect();
  85. }
  86. }
  87. }
  88. };
  89. const observer = new MutationObserver(callback);
  90. observer.observe(targetNode, config);
  91. }
  92.  
  93.  
  94. // click close minuplayer. repeat 500ms
  95. // it will work guaranteed
  96. function f2(){
  97. console.log("Miniplayer Killer - f2 - constant checking for presence of miniplayer ON");
  98. setInterval(function(){
  99. var c = document.querySelector(".ytp-miniplayer-close-button");
  100. if (c && document.querySelector(".ytp-miniplayer-ui").style.display !== "none"){
  101. c.click();
  102. }
  103. },500);
  104. }
  105.  
  106.  
  107. // press i after i press
  108. // sometimes it may not work
  109. function f3(){
  110. console.log("Miniplayer Killer - f3 - press key i simulation ON");
  111. document.addEventListener('keydown', function(event) {
  112. if (event.keyCode === 73 && !event.ctrlKey && !event.altKey && !event.shiftKey && !['INPUT', 'TEXTAREA'].includes(document.activeElement.tagName) && document.activeElement.id !== "contenteditable-root" ) {
  113. console.log("IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", document.activeElement);
  114. // press key i simulation
  115. document.dispatchEvent(new KeyboardEvent('keydown', {
  116. key: 'i',
  117. code: 'KeyI',
  118. keyCode: 73,
  119. charCode: 73,
  120. which: 73,
  121. bubbles: true,
  122. cancelable: true
  123. }));
  124. }
  125. });
  126. }
  127.  
  128. setInterval(function(){
  129. var button = document.querySelector(".ytp-miniplayer-button.ytp-button");
  130. if (button && button.style.display !== "none") button.style.display = "none";
  131. },250);
  132. })();