Attempts to add a favicon to a site crawled by the Wayback Machine in the event one does not come up normally
目前為
// ==UserScript==
// @name Wayback Machine Favicon Fixer
// @namespace DoomTay
// @description Attempts to add a favicon to a site crawled by the Wayback Machine in the event one does not come up normally
// @version 1.0.0
// @include http://web.archive.org/web/*
// @include http://wayback.archive.org/web/*
// @include https://web.archive.org/web/*
// @include https://wayback.archive.org/web/*
// @exclude /\*/
// @grant GM_xmlhttpRequest
// ==/UserScript==
var domain = window.location.href.substring(0,window.location.href.indexOf("/",window.location.href.lastIndexOf("//") + 2));
var timestamp = /web\/(\d{1,14})/.exec(window.location.href)[1];
var originalDomain = domain.substring(domain.lastIndexOf("http"));
if(!document.querySelector("link[rel~='icon']")) retrieveFavicon(window.location.href.substring(window.location.href.lastIndexOf("/http") + 1,window.location.href.lastIndexOf("/") + 1));
function retrieveFavicon(base)
{
GM_xmlhttpRequest({
url: "http://archive.org/wayback/available?url=" + base + "favicon.ico" + "×tamp=" + timestamp,
method: "GET",
headers: {"Accept": "application/json"},
onload: function(response) {
if(response.status == 503) retrieveFavicon(base);
else if(JSON.parse(response.responseText).archived_snapshots.closest)
{
var newFavicon = document.createElement("link");
newFavicon.type = "image/x-icon";
newFavicon.rel = "shortcut icon";
newFavicon.href = JSON.parse(response.responseText).archived_snapshots.closest.url;
document.head.appendChild(newFavicon);
}
else
{
var furtherTrim = base.substring(0,base.lastIndexOf("/",base.lastIndexOf("/") - 1) + 1);
if(furtherTrim.indexOf("//") != (furtherTrim.length - 2)) retrieveFavicon(furtherTrim);
}
}
});
}