Stop Overzealous Embedding

Tries to turn embedded Youtube videos into links

  1. // ==UserScript==
  2. // @name Stop Overzealous Embedding
  3. // @namespace https://gf.qytechs.cn/en/scripts/370-stop-overzealous-embedding
  4. // @description Tries to turn embedded Youtube videos into links
  5. // @include *
  6. // @exclude *.youtube.com/*
  7. // @version 5
  8. // ==/UserScript==
  9.  
  10. // Original namespace was http://userscripts.org/scripts/show/113484
  11. var risky_tags = ["object", "embed", "iframe"];
  12.  
  13. function init(risky_elements) {
  14. var i, j, k, index;
  15. var video_id, video_url, video_link;
  16. var risky_attributes, risky_node;
  17.  
  18. var bad_elements = [];
  19. var bad_ids = [];
  20.  
  21. if (risky_elements === null) {
  22. risky_elements = document.querySelectorAll(risky_tags.join(", "));
  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. index = 0;
  29. risky_attributes = risky_elements[j].attributes;
  30. for (k = 0; k < risky_attributes.length; k++) {
  31. risky_node = risky_attributes[k].nodeValue;
  32. if ((risky_node.indexOf("youtube.com") >= 0) || (risky_node.indexOf("ytimg.com") >= 0) || (risky_node.indexOf("youtube-nocookie.com") >= 0)) {
  33. risky_elements[j].style.display = "none";
  34. if (risky_node.indexOf("/v/") >= 0) {
  35. index = risky_node.indexOf("/v/") + 3;
  36. } else if (risky_node.indexOf("?v=") >= 0) {
  37. index = risky_node.indexOf("?v=") + 3;
  38. } else if (risky_node.indexOf("/embed/") >= 0) {
  39. index = risky_node.indexOf("/embed/") + 7;
  40. }
  41. if (index > 0) {
  42. video_id = risky_node.substring(index, index + 11);
  43. bad_elements.push(risky_elements[j]);
  44. bad_ids.push(video_id);
  45. }
  46. break;
  47. }
  48. }
  49. }
  50. for (i = 0; i < bad_ids.length; i++) {
  51. video_id = bad_ids[i];
  52. video_url = "http://www.youtube.com/watch?v=" + video_id;
  53. video_link = document.createElement("a");
  54. video_link.innerHTML = video_url;
  55. video_link.setAttribute("href", video_url);
  56. bad_elements[i].parentNode.replaceChild(video_link, bad_elements[i]);
  57. }
  58. }
  59.  
  60. var init_callback = function (mutations) {
  61. if (init_callback.timer) return;
  62. var i, j;
  63.  
  64. for (i = 0; i < mutations.length; i++) {
  65. risky_elements = [];
  66. mutation_nodes = mutations[i].addedNodes;
  67. if (!mutation_nodes) {
  68. continue;
  69. }
  70. for (j = 0; j < mutation_nodes.length; j++) {
  71. if (mutation_nodes[j].nodeName && risky_tags.indexOf(mutation_nodes[j].nodeName.toLowerCase()) !== -1) {
  72. risky_elements.push(mutation_nodes[j]);
  73. }
  74. }
  75. init_callback.timer = setTimeout(init, 200, risky_elements);
  76. }
  77. init_callback.timer = false;
  78. };
  79.  
  80. MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
  81. observer = new MutationObserver(init_callback);
  82. observer.observe(document.body, {childList: true, subtree: true, attributes: false, characterData: false});
  83. init(null);

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址