From d2e17bf5058bcdfa1e8f8aea93140f14260ba464 Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Sat, 4 Jul 2015 00:41:00 -0700 Subject: [PATCH] vidrw: formatting, special case for ustream flash --- pywb/static/vidrw.js | 50 +++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/pywb/static/vidrw.js b/pywb/static/vidrw.js index 5dbac2d9..44ee7a83 100644 --- a/pywb/static/vidrw.js +++ b/pywb/static/vidrw.js @@ -90,23 +90,31 @@ __wbvidrw = (function() { function handle_embed_tag(elem) { var src = elem.getAttribute("src"); - if (src) { - if (elem._vidrw) { - return false; - } - - // already rewritten - if (elem.outerHTML.indexOf(FLASH_PLAYER) >= 0) { - return false; - } - - elem._vidrw = true; - - check_replacement(elem, src); - return true; + if (!src) { + return false; + } + + if (elem._vidrw) { + return false; } - return false; + // already rewritten + if (elem.outerHTML.indexOf(FLASH_PLAYER) >= 0) { + return false; + } + + elem._vidrw = true; + + if (src.indexOf("ustream.tv/flash") >= 0) { + var flashvars = elem.getAttribute("flashvars"); + var res = flashvars.match(/[vc]id=([\d]+)/); + if (res) { + src = "http://www.ustream.tv/recorded/" + res[1]; + } + } + + check_replacement(elem, src); + return true; } function handle_object_tag(elem) @@ -258,7 +266,7 @@ __wbvidrw = (function() { var state = -1; if (player && player.getPlayerState) { - state = player.getPlayerState(); + state = player.getPlayerState(); } // if no player or player is still buffering (is this ok), then replace @@ -385,7 +393,7 @@ __wbvidrw = (function() { elem.parentNode.replaceChild(replacement, elem); } else { - elem.parentNode.replaceChild(replacement, elem); + elem.parentNode.replaceChild(replacement, elem); } } @@ -611,7 +619,7 @@ __wbvidrw = (function() { } var m = new MutationObserver(function(records, observer) - { + { for (var i = 0; i < records.length; i++) { var r = records[i]; if (r.type == "childList") { @@ -630,9 +638,9 @@ __wbvidrw = (function() { }); m.observe(window.document.documentElement, { - childList: true, - subtree: true, - }); + childList: true, + subtree: true, + }); }