Advertisement
Guest User

youtube censorship toolkit - blocks users, channels, topics,

a guest
Oct 1st, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. // ==UserScript==
  2. // @name youtube censorship toolkit
  3. // @namespace censorship
  4. // @version 1
  5. // @grant none
  6. // @edited 10/1/2016
  7. // ==/UserScript==
  8.  
  9. var users = [
  10. "user0",
  11. "user1",
  12. "user2"
  13. ];
  14.  
  15. var nUsers = users.length;
  16.  
  17. var channels = [
  18. "channel0",
  19. "channel1",
  20. "channel2"
  21. ];
  22.  
  23. var nChannels = channels.length;
  24.  
  25. var playLists = [
  26. "playList0",
  27. "playList1",
  28. "playList2"
  29. ]
  30.  
  31. var nPlayLists = playLists.length;
  32.  
  33. var displayUsers = false;
  34.  
  35. var displayChannels = false;
  36.  
  37. var displayPlayLists = false;
  38.  
  39. var displayComments = false;
  40.  
  41. var autoplay = false;
  42.  
  43. var block = function(elements){
  44. for(var i = 0, N = elements.length; i < N; ++i){
  45. var e = elements[i];
  46. if(e.style.display != "none"){
  47. var node = e.parentNode;
  48. while(node){
  49. if(node.tagName.toLowerCase() === "li") break;
  50. node = node.parentNode;
  51. }
  52. if(node){
  53. node.style.display = "none";
  54. e.style.display = "none";
  55. }
  56. }
  57. }
  58. }
  59.  
  60. var blockByContent = function(expressions, nExpressions, elements){
  61. for(var i = 0, N = elements.length; i < N; ++i){
  62. var e = elements[i];
  63. var skip = true;
  64. for(var j = 0; j < nExpressions; ++j){
  65. if(expressions[j].test(e.innerHTML) === true){
  66. skip = false;
  67. break;
  68. }
  69. }
  70. if(skip) continue;
  71. if(e.style.display != "none"){
  72. var node = e.parentNode;
  73. while(node){
  74. if(node.tagName.toLowerCase() === "a") break;
  75. node = node.parentNode;
  76. }
  77. if(node){
  78. node.style.display = "none";
  79. e.style.display = "none";
  80. }
  81. }
  82. }
  83. }
  84.  
  85. var queries = {};
  86.  
  87. queries.blockByUserName = {};
  88. queries.blockByUserName.query = "";
  89. queries.blockVideoWallByUserName = {};
  90. queries.blockVideoWallByUserName.query = "";
  91. queries.blockVideoWallByUserName.expressions = [];
  92. queries.blockVideoWallByUserName.nExpressions = 0;
  93. queries.blockByChannelName = {};
  94. queries.blockByChannelName.query = "";
  95. queries.blockByPlayListName = {};
  96. queries.blockByPlayListName.query = "";
  97.  
  98. (function(){
  99. let blockByUserName = "";
  100. for(var i = 0, N = nUsers; i < N; ++i){
  101. if(i > 0){
  102. blockByUserName += ', ';
  103. }
  104. blockByUserName += "li a[href='/user/" + users[i] + "']";
  105. queries.blockVideoWallByUserName.expressions.push(new RegExp(users[i], "i"))
  106. }
  107. queries.blockByUserName.query = blockByUserName;
  108. queries.blockVideoWallByUserName.query = "a span[class*='ytp-videowall-still-info-author']";
  109. queries.blockVideoWallByUserName.nExpressions = queries.blockVideoWallByUserName.expressions.length;
  110. })();
  111.  
  112. (function(){
  113. let blockByChannelName = "";
  114. for(var i = 0, N = nChannels; i < N; ++i){
  115. if(i > 0){
  116. blockByChannelName += ', ';
  117. }
  118. blockByChannelName += "li a[href='/channel/" + channels[i] + "']";
  119. blockByChannelName += ", li span[data-ytid='" + channels[i] + "']";
  120. }
  121. queries.blockByChannelName.query = blockByChannelName;
  122. })();
  123.  
  124. (function(){
  125. let blockByPlayListName = "";
  126. for(var i = 0, N = nPlayLists; i < N; ++i){
  127. if(i > 0){
  128. blockByPlayListName += ', ';
  129. }
  130. blockByPlayListName += "li a[href='/playlist?list=" + playLists[i] + "']";
  131. }
  132. queries.blockByPlayListName.query = blockByPlayListName;
  133. })();
  134.  
  135. var blockByUserName = function(){
  136. block(document.querySelectorAll(queries.blockByUserName.query));
  137. blockByContent(queries.blockVideoWallByUserName.expressions, queries.blockVideoWallByUserName.nExpressions, document.querySelectorAll(queries.blockVideoWallByUserName.query));
  138. }
  139.  
  140. var blockByChannelName = function(){
  141. block(document.querySelectorAll(queries.blockByChannelName.query));
  142. }
  143.  
  144. var blockByPlayListName = function(){
  145. block(document.querySelectorAll(queries.blockByPlayListName.query));
  146. }
  147.  
  148. var blockComments = function(){
  149. var comments = document.getElementById("watch-discussion");
  150. if(comments){
  151. comments.style.display = 'none';
  152. }
  153. }
  154.  
  155. var disableAutoplay = function(){
  156. var autoplay = document.getElementById("autoplay-checkbox");
  157. if(autoplay && autoplay.checked === true){
  158. autoplay.click();
  159. }
  160. }
  161.  
  162. var execute = function(){
  163. if(!displayUsers) blockByUserName();
  164. if(!displayChannels) blockByChannelName();
  165. if(!displayPlayLists) blockByPlayListName();
  166. if(!displayComments) blockComments();
  167. if(!autoplay) disableAutoplay();
  168. }
  169.  
  170. var observer = null;
  171.  
  172. if(document){
  173. observer = new MutationObserver(function(mutations){ execute(); });
  174. observer.observe(document.body, { childList: true, subtree: true });
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement