There are 3 previous versions of this script.
// ==UserScript==
// @name IMDB Bacon Number / Center Number
// @namespace http://userscripts.org/users/6623/scripts
// @description Adds an indicator on an IMDB name page telling you that person's "Bacon Number" and/or "Center Number" (from the Oracle of Bacon at Virginia)
// @include http://www.imdb.com/name/nm*/
// @include http://imdb.com/name/nm*/
// @version 1.1.5
// ==/UserScript==
/* User-configurable options -- comment or uncomment each line to your own liking */
// add Bacon Number to the name page
var showBaconNumber = true;
// var showBaconNumber = false;
// add Center Number to the name page
var showCenterNumber = true;
//var showCenterNumber = false;
// compare the person's Center Number to Kevin Bacon's Center Number
var showBaconComparison = true;
//var showBaconComparison = false;
/* End of user-configurable options */
/* Begin script*/
var personName = findName();
if (showCenterNumber)
{
addCenterText();
var personCenterNumber = getCenterNumber(personName);
}
if (showBaconNumber)
{
addBaconText();
getBaconNumber(personName);
}
/* end script*/
// Functions ----------- //
function getBaconNumber(personName) {
var bacon_url = 'http://oracleofbacon.org/cgi-bin/movielinks?firstname=Kevin%20Bacon&secondname=' + personName + '&using=1';
GM_xmlhttpRequest({
method: 'GET',
url: bacon_url,
onload: function(responseDetails) {
var search_string = 'table class="mtoa"'; // one of this string for each movie on the target page
var bacon_number = -1;
bacon_number = responseDetails.responseText.split(search_string).length-1;
if (bacon_number != -1) {
// found a bacon number
var addedDiv = document.getElementById('greaseTextBacon');
addedDiv.innerHTML = '<h5>Bacon Number:</h5>\n' + bacon_number + '\n<a class="tn15more inline" href="' + bacon_url + '">more</a>';
addedDiv.style.color='black';
} else {
// did not find bacon number
var addedDiv = document.getElementById('greaseTextBacon');
addedDiv.innerHTML = '<H5>Bacon Number:</H5>\nUnable to find';
addedDiv.style.color='red';
}
}
});
} // end function getBaconNumber
function getCenterNumber(personName) {
var centerURL = 'http://oracleofbacon.org/cgi-bin/center-cgi?who=' + personName;
GM_xmlhttpRequest({
method: 'GET',
url: centerURL,
onload: function(responseDetails) {
var search_string = ' number: '; // find this on the target page
var match = responseDetails.responseText.search(search_string);
var center_number = responseDetails.responseText.substring(match + search_string.length,match + search_string.length + 5);
if (match != -1) {
// found a center number
var addedDiv = document.getElementById('greaseTextCenter');
addedDiv.innerHTML = '<h5>Center Number:</h5>\n' + center_number + '\n<a class="tn15more inline" href="' + centerURL + '">more</a>';
addedDiv.style.color='black';
} else {
// did not find center number
var addedDiv = document.getElementById('greaseTextCenter');
addedDiv.innerHTML = '<H5>Center Number:</H5>\nUnable to find';
addedDiv.style.color='red';
}
if (showBaconComparison)
{
var BaconCenterURL = 'http://oracleofbacon.org/cgi-bin/center-cgi?who=Kevin+Bacon';
GM_xmlhttpRequest({
method: 'GET',
url: BaconCenterURL,
onload: function(responseDetails) {
var search_string = ' number: '; // find this on the target page
var match = responseDetails.responseText.search(search_string);
var BaconCenterNumber = responseDetails.responseText.substring(match + search_string.length,match + search_string.length + 5);
if (match != -1) {
// found Bacon's center number
var BaconsNum = parseFloat(BaconCenterNumber);
var personsNum = parseFloat(center_number);
if (personsNum < BaconsNum)
{
addedDiv.innerHTML += " (Better Than <A HREF='http://www.imdb.com/name/nm0000102/'>Kevin Bacon</A>'s <A HREF='http://oracleofbacon.org/cgi-bin/center-cgi?who=Kevin+Bacon'>" + BaconCenterNumber + "</A>)";
} else
{
addedDiv.innerHTML += " (Worse Than <A HREF='http://www.imdb.com/name/nm0000102/'>Kevin Bacon</A>'s <A HREF='http://oracleofbacon.org/cgi-bin/center-cgi?who=Kevin+Bacon'>" + BaconCenterNumber + "</A>)";
}
}
}
});
}
}
});
} // end function getCenterNumber
function compareBaconCenter(personCenterNumber) {
} // end function compareBaconCenter
function addBaconText() {
var findPattern = "//div[@class='info']";
var results = document.evaluate( findPattern, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
var link = results.snapshotItem(1);
var addedDiv = document.createElement('div');
addedDiv.innerHTML = '<H5>Bacon Number:</H5>\nchecking';
addedDiv.setAttribute('id','greaseTextBacon');
addedDiv.setAttribute('class','info');
addedDiv.style.color='red';
link.parentNode.insertBefore(addedDiv, link.nextSibling);
}
// end function addBaconText
function addCenterText() {
var findPattern = "//div[@class='info']";
var results = document.evaluate( findPattern, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
var link = results.snapshotItem(0);
var addedDiv = document.createElement('div');
addedDiv.innerHTML = '<H5>Center Number:</H5>\nchecking';
addedDiv.setAttribute('id','greaseTextCenter');
addedDiv.setAttribute('class','info');
addedDiv.style.color='red';
link.parentNode.insertBefore(addedDiv, link.nextSibling);
}
// end function addCenterText
function findName() {
var findPattern = "//input[@name='primary']";
var results = document.evaluate( findPattern, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
var formInput = results.snapshotItem(0);
var personName = formInput.getAttribute('value');
return personName;
}
// end function findName
