Skip to content

Instantly share code, notes, and snippets.

@rmzelle
Created May 17, 2009 07:52
Show Gist options
  • Save rmzelle/112954 to your computer and use it in GitHub Desktop.
Save rmzelle/112954 to your computer and use it in GitHub Desktop.
REPLACE INTO translators VALUES ('83d71ab9-ca73-473d-9f36-9b9ce7a765f0', '1.0.0b4.r5', '', '2009-05-17 11:43:47', '0', '101', '4', 'BioOne Redux', 'Michael Berkowitz and Rintze Zelle', 'http://[^/]*www.bioone.org[^/]*/',
'function detectWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == ''x'') return namespace; else return null;
} : null;
if (url.indexOf("/action/doSearch") != -1 || url.indexOf("/action/showBook") != -1 || url.indexOf("/toc/") != -1) {
return "multiple";
} else if (url.indexOf("/doi/") != -1) {
var links = doc.evaluate("//a[@href]", doc, nsResolver, XPathResult.ANY_TYPE, null);
var bookRe=new RegExp("action/showBook");
while (headers = links.iterateNext()) {
if (bookRe.test(headers.toString())) {
return "chapter";
}
}
return "journalArticle";
}
}
/*
doesn''t gracefully fail for pages without accompanying RIS, or when no items are selected in selection box
e.g.:
http://www.bioone.org/doi/full/10.1896/978-1-934151-07-5.73
Journal TOC:
http://www.bioone.org/toc/arac/37/1
http://www.bioone.org/toc/eden/current
Book chapters:
http://www.bioone.org/action/showBook?doi=10.1896%2F978-1-934151-07-5
Journal article:
http://www.bioone.org/doi/abs/10.1653/024.092.0101
http://www.bioone.org/doi/full/10.1653/024.092.0101
http://www.bioone.org/doi/pdf/10.1653/024.092.0101
Book chapter:
Abstract: http://www.bioone.org/doi/abs/10.1896/978-1-934151-07-5.3
Full-text: http://www.bioone.org/doi/full/10.1896/978-1-934151-07-5.3
PDF: http://www.bioone.org/doi/pdf/10.1896/978-1-934151-07-5.4
http://www.bioone.org/doi/abs/10.1199/tab.0120
*/',
'function doWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == ''x'') return namespace; else return null;
} : null;
var DOIs = new Array();
var RIS = new Array();
var items = new Array();
if (detectWeb(doc, url) == "multiple") {
var entryDOIs = doc.evaluate(''//input[@name="doi"]'', doc, nsResolver, XPathResult.ANY_TYPE, null);
var entryTitles = doc.evaluate(''//h4[@class="searchTitle"]'', doc, nsResolver, XPathResult.ANY_TYPE, null);
var counter = doc.evaluate(''count (//input[@name="doi"])'', doc, nsResolver, XPathResult.ANY_TYPE, null);
var items = new Array();
for (var i = 0; i < counter.numberValue; i++) {
items[entryDOIs.iterateNext().value] = entryTitles.iterateNext().textContent;
}
items = Zotero.selectItems(items);
for (var doi in items) {
DOIs.push(doi);
}
} else {
var doi = url.match(/10\.[^\b]+/)[0];
DOIs.push(doi);
}
for (var i in DOIs) {
RIS.push("http://www.bioone.org/action/downloadCitation?format=Refman&doi=" + DOIs[i]);
}
Zotero.Utilities.HTTP.doGet(RIS, function(text) {
var doi = DOIs.shift();
var pdfURL = "http://www.bioone.org/doi/pdf/" + doi;
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function(obj, item) {
item.notes = null;
//item.attachments = [{url:"http://www.bioone.org/doi/pdf/10.1653/024.092.0101", title:"BioOne Full Text PDF", mimeType:"application/pdf"}];
item.DOI = doi;
item.complete();
});
translator.translate();
}, function() {Zotero.done();});
Zotero.wait();
}');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment