Guest User

Untitled

a guest
Sep 1st, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Stop Overzealous Embedding
  3. // @namespace https://openuserjs.org/scripts/ConnorBehan/Stop_Overzealous_Embedding
  4. // @description Tries to turn embedded Youtube videos into links
  5. // @exclude *.youtube.com/*
  6. // @version 2
  7. // ==/UserScript==
  8.  
  9. // Original namespace was http://userscripts.org/scripts/show/113484
  10. var risky_tags = ["object", "embed", "iframe"];
  11.  
  12. function init(risky_elements) {
  13. var i, j, k, index;
  14. var video_id, video_url, video_link;
  15. var risky_attributes, risky_node;
  16.  
  17. var bad_elements = [];
  18. var bad_ids = [];
  19.  
  20. if (risky_elements === null) {
  21. risky_elements = document.querySelectorAll(risky_tags.join(", "));
  22. }
  23.  
  24. for (j = 0; j < risky_elements.length; j++) {
  25. if (risky_tags.indexOf(risky_elements[j].nodeName.toLowerCase()) == -1) {
  26. continue;
  27. }
  28.  
  29. index = 0;
  30. risky_attributes = risky_elements[j].attributes;
  31. for (k = 0; k < risky_attributes.length; k++) {
  32. risky_node = risky_attributes[k].nodeValue;
  33. if ((risky_node.indexOf("youtube.com") >= 0) || (risky_node.indexOf("ytimg.com") >= 0) || (risky_node.indexOf("youtube-nocookie.com") >= 0)) {
  34. risky_elements[j].style.display = "none";
  35. if (risky_node.indexOf("/v/") >= 0) {
  36. index = risky_node.indexOf("/v/") + 3;
  37. } else if (risky_node.indexOf("?v=") >= 0) {
  38. index = risky_node.indexOf("?v=") + 3;
  39. } else if (risky_node.indexOf("/embed/") >= 0) {
  40. index = risky_node.indexOf("/embed/") + 7;
  41. }
  42. if (index > 0) {
  43. video_id = risky_node.substring(index, index + 11);
  44. bad_elements.push(risky_elements[j]);
  45. bad_ids.push(video_id);
  46. }
  47. break;
  48. }
  49. }
  50. }
  51.  
  52. for (i = 0; i < bad_ids.length; i++) {
  53. video_id = bad_ids[i];
  54. video_url = "http://www.youtube.com/watch?v=" + video_id;
  55. video_link = document.createElement("a");
  56. video_link.innerHTML = video_url;
  57. video_link.setAttribute("href", video_url);
  58. bad_elements[i].parentNode.replaceChild(video_link, bad_elements[i]);
  59. }
  60. }
  61.  
  62. function timer_callback(risky_elements) {
  63. init(risky_elements);
  64. }
  65.  
  66. function init_callback(mutations) {
  67. var i, j;
  68.  
  69. for (i = 0; i < mutations.length; i++) {
  70. risky_elements = [];
  71. mutation_nodes = mutations[i].addedNodes;
  72. if (!mutation_nodes) {
  73. continue;
  74. }
  75.  
  76. for (j = 0; j < mutation_nodes.length; j++) {
  77. if (mutation_nodes[j].nodeName && riskyTags.indexOf(mutation_nodes[j].nodeName.toLowerCase()) !== -1) {
  78. risky_elements.push(mutation_nodes[j]);
  79. }
  80. }
  81.  
  82. setTimeout(timer_callback, 200, risky_elements);
  83. }
  84. }
  85.  
  86. MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
  87. observer = new MutationObserver(init_callback);
  88. observer.observe(document.body, {childList: true, subtree: true, attributes: false, characterData: false});
  89. init(null);
Advertisement
Add Comment
Please, Sign In to add comment