YouTube pauser

Pauses youtube videos when they start

  1. // ==UserScript==
  2. // @name YouTube pauser
  3. // @namespace http://dannywhittaker.com
  4. // @version 0.1
  5. // @description Pauses youtube videos when they start
  6. // @match https://www.youtube.com/watch*
  7. // @copyright 2014, You
  8. // ==/UserScript==
  9.  
  10. (function() {
  11. // Build a worker from an anonymous function body
  12. var blobURL = URL.createObjectURL(new Blob(['(',
  13.  
  14. function() {
  15. var interval;
  16.  
  17. self.addEventListener('message', function(e) {
  18. switch (e.data) {
  19. case 'start':
  20. interval = setInterval(function() {
  21. self.postMessage('tick');
  22. }, 100);
  23. break;
  24. case 'stop':
  25. clearInterval(interval);
  26. break;
  27. };
  28. }, false);
  29. }.toString(),
  30.  
  31. ')()'
  32. ], {
  33. type: 'application/javascript'
  34. }));
  35. var worker = new Worker(blobURL);
  36.  
  37. // Won't be needing this anymore
  38. URL.revokeObjectURL(blobURL);
  39.  
  40. var playerReference;
  41.  
  42. var start = new Date().getTime();
  43. var interval = 50;
  44.  
  45. function getPlayerReference() {
  46. if (!playerReference) {
  47. playerReference = document.getElementById('movie_player');
  48. }
  49.  
  50. return playerReference;
  51. }
  52.  
  53. function windowIsHidden() {
  54. return document.hidden;
  55. }
  56.  
  57. function clearInterval() {
  58. worker.postMessage('stop');
  59. }
  60.  
  61. function fnInterval() {
  62. if (new Date().getTime() - start > 1000 * 10) {
  63. clearInterval();
  64. } else if (!windowIsHidden()) {
  65. clearInterval();
  66. } else {
  67. try {
  68. var ref = getPlayerReference();
  69. if (ref && ref.pauseVideo) {
  70. ref.pauseVideo();
  71. }
  72. } catch (ex) {}
  73. }
  74. }
  75.  
  76. worker.addEventListener('message', fnInterval);
  77. worker.postMessage('start');
  78. })();