Embed to HTML5

Replaces media embed tags with HTML5 equivalents

目前為 2016-06-17 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Embed to HTML5
  3. // @namespace DoomTay
  4. // @description Replaces media embed tags with HTML5 equivalents
  5. // @version 1.1.0
  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. if(embeds.length > 0)
  17. {
  18. for(var e = embeds.length - 1; e >= 0; e--)
  19. {
  20. if(audioFiletypes.some(elem => embeds[e].src.includes(elem))) var replacement = document.createElement("audio");
  21. else if(videoFiletypes.some(elem => embeds[e].src.includes(elem))) var replacement = document.createElement("video");
  22. else continue;
  23. replacement.src = decodeURIComponent(embeds[e].src);
  24. replacement.width = embeds[e].width;
  25. replacement.height = embeds[e].height;
  26. if(embeds[e].hidden) replacement.style.display = "none";
  27. replacement.autoplay = parseBool(embeds[e].getAttribute("autostart") || embeds[e].getAttribute("autoplay")) || audioFiletypes.some(elem => window.location.href.includes(elem));
  28. replacement.controls = parseBool(embeds[e].getAttribute("controller"));
  29. replacement.loop = parseBool(embeds[e].getAttribute("loop"));
  30. var oldEmbed;
  31. if(embeds[e].parentNode.nodeName == "OBJECT")
  32. {
  33. oldEmbed = embeds[e].parentNode.parentNode.replaceChild(replacement, embeds[e].parentNode);
  34. }
  35. else
  36. {
  37. oldEmbed = embeds[e].parentNode.replaceChild(replacement, embeds[e]);
  38. }
  39. if(oldEmbed.name)
  40. {
  41. replacement.setAttribute("name", oldEmbed.name);
  42. document[replacement.getAttribute("name")] = replacement;
  43. }
  44. }
  45. }
  46.  
  47. function getBitrate(media)
  48. {
  49. console.log(media);
  50. return 44;
  51. }
  52.  
  53. function parseBool(string)
  54. {
  55. return string == "true";
  56. }