mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
video: add special case iframe, fix flash insert missing prefix
This commit is contained in:
parent
f21f4fb1ba
commit
f59cd6c6b4
@ -101,6 +101,11 @@ __wbvidrw = (function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (src.indexOf("blob:") == 0) {
|
||||||
|
src = wbinfo.url;
|
||||||
|
no_retry = true;
|
||||||
|
}
|
||||||
|
|
||||||
src = _wb_wombat.extract_orig(src);
|
src = _wb_wombat.extract_orig(src);
|
||||||
|
|
||||||
// special cases
|
// special cases
|
||||||
@ -109,22 +114,55 @@ __wbvidrw = (function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
src = src.replace(VIMEO_RX, "http://player.vimeo.com/video/$1");
|
src = src.replace(VIMEO_RX, "http://player.vimeo.com/video/$1");
|
||||||
console.log(src);
|
// end special cases
|
||||||
|
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr._no_rewrite = true;
|
xhr._no_rewrite = true;
|
||||||
xhr.open('GET', wbinfo.prefix + 'vi_/' + src, true);
|
xhr.open('GET', wbinfo.prefix + 'vi_/' + src, true);
|
||||||
xhr.onload = function() {
|
xhr.onload = function() {
|
||||||
if (xhr.status == 200) {
|
if (xhr.status == 200) {
|
||||||
do_replace_video(elem, JSON.parse(xhr.responseText));
|
var videoinfo = JSON.parse(xhr.responseText);
|
||||||
|
|
||||||
|
// special case
|
||||||
|
if (videoinfo._type == "playlist" && videoinfo.extractor == "soundcloud:playlist") {
|
||||||
|
var player_url = "https://w.soundcloud.com/player/?visual=true&show_artwork=true&url=" + encodeURIComponent(videoinfo.webpage_url);
|
||||||
|
do_replace_iframe(elem, player_url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// end special case
|
||||||
|
|
||||||
|
do_replace_video(elem, videoinfo);
|
||||||
} else if (!no_retry) {
|
} else if (!no_retry) {
|
||||||
check_replacement(elem, wbinfo.url, true);
|
check_replacement(elem, wbinfo.url, true);
|
||||||
console.log("REPL RETRY: " + wbinfo.url);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function do_replace_iframe(elem, url) {
|
||||||
|
var iframe = document.createElement("iframe");
|
||||||
|
iframe.width = elem.clientWidth;
|
||||||
|
iframe.height = elem.clientHeight;
|
||||||
|
iframe.src = url;
|
||||||
|
do_replace_elem(elem, iframe);
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_replace_elem(elem, replacement) {
|
||||||
|
var tag_name = elem.tagName.toLowerCase();
|
||||||
|
|
||||||
|
if (tag_name == "iframe" || tag_name == "object") {
|
||||||
|
elem.parentNode.replaceChild(replacement, elem);
|
||||||
|
} else if (tag_name == "embed") {
|
||||||
|
if (elem.parentNode && elem.parentElement.tagName.toLowerCase() == "object") {
|
||||||
|
elem = elem.parentNode;
|
||||||
|
}
|
||||||
|
elem.parentNode.replaceChild(replacement, elem);
|
||||||
|
} else if (tag_name == "video") {
|
||||||
|
elem.parentNode.replaceChild(replacement, elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function do_replace_video(elem, info) {
|
function do_replace_video(elem, info) {
|
||||||
var thumb_url = null;
|
var thumb_url = null;
|
||||||
|
|
||||||
@ -132,11 +170,11 @@ __wbvidrw = (function() {
|
|||||||
thumb_url = wbinfo.prefix + info.thumbnail;
|
thumb_url = wbinfo.prefix + info.thumbnail;
|
||||||
}
|
}
|
||||||
|
|
||||||
var tag = elem.tagName.toLowerCase();
|
var tag_name = elem.tagName.toLowerCase();
|
||||||
|
|
||||||
var width, height;
|
var width, height;
|
||||||
|
|
||||||
if (tag == "video") {
|
if (tag_name == "video") {
|
||||||
elem = elem.parentNode;
|
elem = elem.parentNode;
|
||||||
elem = elem.parentNode;
|
elem = elem.parentNode;
|
||||||
|
|
||||||
@ -174,16 +212,7 @@ __wbvidrw = (function() {
|
|||||||
replacement.setAttribute("id", vidId);
|
replacement.setAttribute("id", vidId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tag == "iframe" || tag == "object") {
|
do_replace_elem(elem, replacement);
|
||||||
elem.parentNode.replaceChild(replacement, elem);
|
|
||||||
} else if (tag == "embed") {
|
|
||||||
if (elem.parentNode && elem.parentElement.tagName.toLowerCase() == "object") {
|
|
||||||
elem = elem.parentNode;
|
|
||||||
}
|
|
||||||
elem.parentNode.replaceChild(replacement, elem);
|
|
||||||
} else if (tag == "video") {
|
|
||||||
elem.parentNode.replaceChild(replacement, elem);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vidId) {
|
if (vidId) {
|
||||||
init_flash_player(vidId, width, height, info, thumb_url);
|
init_flash_player(vidId, width, height, info, thumb_url);
|
||||||
@ -240,7 +269,7 @@ __wbvidrw = (function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("html5 " + type +" error");
|
//console.log("html5 " + type +" error");
|
||||||
var replacement = document.createElement("div");
|
var replacement = document.createElement("div");
|
||||||
|
|
||||||
var vidId = "_wb_vid" + Date.now();
|
var vidId = "_wb_vid" + Date.now();
|
||||||
@ -278,10 +307,6 @@ __wbvidrw = (function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
htmlelem.addEventListener("error", fallback);
|
htmlelem.addEventListener("error", fallback);
|
||||||
// htmlelem.addEventListener("loadstart", function() {
|
|
||||||
// console.log("html5 " + type + " success");
|
|
||||||
// });
|
|
||||||
|
|
||||||
return htmlelem;
|
return htmlelem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,6 +325,8 @@ __wbvidrw = (function() {
|
|||||||
url = info.url;
|
url = info.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
url = wbinfo.prefix + url;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
clip: {
|
clip: {
|
||||||
url: url,
|
url: url,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user