Adds direct links to WorldCat searches for the editions shown in the combine/separate pages
// ==UserScript==
// @name LibraryThing links to WorldCat on combination/separation pages
// @namespace https://greasyfork.org/en/users/11592-max-starkenburg
// @description Adds direct links to WorldCat searches for the editions shown in the combine/separate pages
// @include http*://*librarything.tld/combine.php?*
// @include http*://*librarything.com/combine.php?*
// @version 2
// ==/UserScript==
var paras = document.getElementsByTagName("table")[0].getElementsByTagName("p");
var wcOnclick = "onclick='event.stopPropagation()'"; // To prevent the new link from "selecting" that work for combination purposes
for ( var i=0; i<paras.length; i++ ) {
var para = paras[i];
var link = "";
var wcSpan = document.createElement("span");
var editionText = para.innerHTML; // "[Media -] Title / [Author] / [(ISBN #)] / [Format] (separate)"
// Remove any media format, such as "Video Recording"
editionText = editionText.replace(/^<span class="formatnotice">[^<]+<\/span> \u2014 /, "");
// If there's an ISBN, use that
var isbnRE = / \/[ ]+\(ISBN ([\dX]+)\)/;
if (isbnRE.test(editionText)) {
isbn = editionText.match(isbnRE)[1];
link = ' (<a ' + wcOnclick + ' href="http://worldcat.org/isbn/' + isbn + '">WorldCat</a>)'
// If there's no match for an ISBN, use title and possible author instead
} else {
// Remove the last part, including the separation link and any text format
editionText = editionText.replace(/ \(<.*$/, "") // (separate) link
.replace(/ \/ <a .*$/, "") // Empty media format <a>
var author = title = "";
// Let's hope that if the title contains any forward slashes, there's an author following the last (non-titular) slash
var titleAuthor = editionText.split(" / ");
if (titleAuthor.length > 1) {
author = titleAuthor[titleAuthor.length - 1];
}
authorSafe = author.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); // This replace from CoolAJ86 at http://stackoverflow.com/questions/3446170
var authorRE = new RegExp(" / " + authorSafe + "$");
title = editionText.replace(authorRE, "");
query = "ti:" + title;
if (author != "") {
query = query + " au:" + author;
}
query = encodeURIComponent(query);
link = ' (<a ' + wcOnclick + ' href="http://worldcat.org/search?q=' + query + '">WorldCat</a>)';
}
// Add the newly constructed link to the end of the line
wcSpan.innerHTML = link;
para.appendChild(wcSpan);
}