Embed to HTML5

Replaces media embed tags with HTML5 equivalents

当前为 2017-06-06 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Embed to HTML5
  3. // @namespace DoomTay
  4. // @description Replaces media embed tags with HTML5 equivalents
  5. // @version 1.1.1
  6. // @exclude *.svg
  7. // @grant none
  8.  
  9. // ==/UserScript==
  10.  
  11. var embeds = document.embeds;
  12.  
  13. var audioFiletypes = [".mp3",".wav",".ogg"];
  14. var videoFiletypes = [".mp4"];
  15.  
  16. var bgsound = document.querySelector("bgsound");
  17. if(bgsound && audioFiletypes.some(type => decodeURIComponent(bgsound.getAttribute("src")).includes(type)))
  18. {
  19. var replacement = document.createElement("audio");
  20. replacement.src = decodeURIComponent(bgsound.getAttribute("src"));
  21. replacement.style.display = "none";
  22. replacement.loop = parseBool(bgsound.getAttribute("loop")) || bgsound.getAttribute("loop") == "-1" || bgsound.getAttribute("loop") == "infinite";
  23. replacement.autoplay = "true";
  24. bgsound.parentNode.replaceChild(replacement, bgsound);
  25. }
  26.  
  27. if(embeds.length > 0)
  28. {
  29. for(var e = embeds.length - 1; e >= 0; e--)
  30. {
  31. if(audioFiletypes.some(type => embeds[e].src.includes(type))) var replacement = document.createElement("audio");
  32. else if(videoFiletypes.some(type => embeds[e].src.includes(type))) var replacement = document.createElement("video");
  33. else continue;
  34. replacement.src = decodeURIComponent(embeds[e].src);
  35. replacement.width = embeds[e].width;
  36. replacement.height = embeds[e].height;
  37. if(embeds[e].hidden) replacement.style.display = "none";
  38. replacement.autoplay = parseBool(embeds[e].getAttribute("autostart") || embeds[e].getAttribute("autoplay")) || audioFiletypes.some(elem => window.location.href.includes(elem));
  39. replacement.controls = parseBool(embeds[e].getAttribute("controller"));
  40. replacement.loop = parseBool(embeds[e].getAttribute("loop"));
  41. var oldEmbed;
  42. if(embeds[e].parentNode.nodeName == "OBJECT")
  43. {
  44. oldEmbed = embeds[e].parentNode.parentNode.replaceChild(replacement, embeds[e].parentNode);
  45. }
  46. else
  47. {
  48. oldEmbed = embeds[e].parentNode.replaceChild(replacement, embeds[e]);
  49. }
  50. if(oldEmbed.name)
  51. {
  52. replacement.setAttribute("name", oldEmbed.name);
  53. document[replacement.getAttribute("name")] = replacement;
  54. }
  55. }
  56. }
  57.  
  58. function getBitrate(media)
  59. {
  60. console.log(media);
  61. return 44;
  62. }
  63.  
  64. function parseBool(string)
  65. {
  66. return string == "true";
  67. }