Wayback Machine Favicon Fixer

Attempts to add a favicon to a site crawled by the Wayback Machine in the event one does not come up normally

2017-08-17 या दिनांकाला. सर्वात नवीन आवृत्ती पाहा.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==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.2.1
// @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         none
// @noframes

// ==/UserScript==

var timestamp = /web\/(\d{1,14})/.exec(window.location.href)[1];

var originalDomain = /.+web\/\d+(?:[a-z][a-z]_)?\/((?:https?:\/\/)?[^\/]+)/.exec(window.location.href)[1];

if(!originalDomain.endsWith("/")) originalDomain = originalDomain + "/";

if(!document.querySelector("link[rel~='icon']") && document.contentType == "text/html") retrieveFavicon();

function retrieveFavicon()
{		
	function applyFavicon(data)
	{
		if(data.archived_snapshots && data.archived_snapshots.closest && data.archived_snapshots.closest.available)
		{
			var newFavicon = document.createElement('link');
			newFavicon.type = "image/x-icon";
			newFavicon.rel = "shortcut icon";
			newFavicon.href = data.archived_snapshots.closest.url.replace("/ht","im_/ht");
			document.head.appendChild(newFavicon);
		}
	}
	
	var applyFaviconScript = document.createElement("script");
	applyFaviconScript.type = "text/javascript";
	applyFaviconScript.innerHTML = applyFavicon;
	document.head.appendChild(applyFaviconScript);
	
	var faviconScript = document.createElement("script");
	faviconScript.type = "application/javascript";
	faviconScript.src = "//archive.org/wayback/available?url=" + encodeURIComponent(originalDomain + "favicon.ico") + "&timestamp=" + timestamp + "&callback=applyFavicon";
	faviconScript.onerror = function(e)
	{
		document.head.removeChild(faviconScript);
		document.head.removeChild(applyFaviconScript);
		retrieveFavicon();
	}
	document.head.appendChild(faviconScript);
}