commit 3777004652906ce23c45b8ab137f553393c25a63
parent fb743dfd3c3bebc47d1b8819c36d90cd3292fcb2
Author: Matt Burton <mcburton@gmail.com>
Date: Mon, 1 Jun 2009 01:00:00 +0000
Adding Rintze's PLoS fixes. PLoS has consolidating everything to one platform.
Diffstat:
1 file changed, 59 insertions(+), 34 deletions(-)
diff --git a/translators/PLoS Journals.js b/translators/PLoS Journals.js
@@ -2,57 +2,82 @@
"translatorID":"9575e804-219e-4cd6-813d-9b690cbfc0fc",
"translatorType":4,
"label":"PLoS Journals",
- "creator":"Michael Berkowitz",
- "target":"http://www\\.plos(one|ntds|compbiol|pathogens|genetics)\\.org/(search|article)/",
+ "creator":"Michael Berkowitz And Rintze Zelle",
+ "target":"http://www\\.plos(one|ntds|compbiol|pathogens|genetics|medicine|biology)\\.org/(search|article)/",
"minVersion":"1.0.0b4.r5",
"maxVersion":"",
"priority":100,
"inRepository":true,
- "lastUpdated":"2009-01-08 08:19:07"
+ "lastUpdated":"2009-05-31 20:57:07"
}
function detectWeb(doc, url) {
- if (url.indexOf("Search.action") != -1 || url.indexOf("browse.action") != -1) {
- return "multiple";
- } else if (url.indexOf("article") != -1) {
+ if (url.indexOf("Search.action") != -1 || url.indexOf("browse.action") != -1 || url.indexOf("browseIssue.action") != -1) {
+ return "multiple";
+ } else if (url.indexOf("article/info") != -1) {
return "journalArticle";
}
}
-function doWeb(doc, url) {
+
+function getSelectedItems(doc, articleRegEx) {
var items = new Object();
var texts = new Array();
+ var articles = doc.evaluate(articleRegEx, doc, null, XPathResult.ANY_TYPE, null);
+ var next_art = articles.iterateNext();
+ while (next_art) {
+ items[next_art.href] = next_art.textContent;
+ next_art = articles.iterateNext();
+ }
+ items = Zotero.selectItems(items);
+ for (var i in items) {
+ texts.push(i);
+ }
+ return(texts);
+}
+
+function doWeb(doc, url) {
if (url.indexOf("Search.action") != -1 || url.indexOf("browse.action") != -1) {
var articlex = '//span[@class="article"]/a';
- var articles = doc.evaluate(articlex, doc, null, XPathResult.ANY_TYPE, null);
- var next_art = articles.iterateNext();
- while (next_art) {
- items[next_art.href] = next_art.textContent;
- next_art = articles.iterateNext();
- }
- items = Zotero.selectItems(items);
- for (var i in items) {
- texts.push(i);
- }
+ var texts = getSelectedItems(doc, articlex);
+ } else if (url.indexOf("browseIssue.action") != -1) {
+ var articlex = '//div[@class="article"]/h3/a';
+ var texts = getSelectedItems(doc, articlex);
} else {
- texts.push(url);
+ var texts = new Array(url);
}
- Zotero.Utilities.processDocuments(texts, function(newDoc, url) {
- var doi = newDoc.location.href.match(/doi(\/|%2F)(.*)$/)[2];
- var newURL = newDoc.location.href.replace("info", "getRisCitation.action?articleURI=info");
- var pdfURL = newDoc.location.href.replace("info", "fetchObjectAttachment.action?uri=info") + '&representation=PDF';
- Zotero.Utilities.HTTP.doGet(newURL, function(text) {
- var translator = Zotero.loadTranslator("import");
- translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
- translator.setString(text);
- translator.setHandler("itemDone", function(obj, item) {
- item.attachments.push({url:pdfURL, title:"PLoS One Full Text PDF", mimeType:"application/pdf"});
- item.DOI = doi;
- item.repository = item.publicationTitle;
- item.complete();
- });
- translator.translate();
- });
+
+ var risLinks = new Array();
+ for (var i in texts) {
+ texts[i]=texts[i].replace(/;jsessionid[^;]+/, "");//Strip sessionID string
+ var risLink = texts[i].replace("info", "getRisCitation.action?articleURI=info");
+ risLinks.push(risLink);
+ }
+
+ Zotero.Utilities.HTTP.doGet(risLinks, function(text) {
+ var risLink = texts.shift();
+ var pdfURL = risLink.replace("info", "fetchObjectAttachment.action?uri=info") + '&representation=PDF';
+ var doi = risLink.match(/doi(\/|%2F)(.*)$/)[2];
+ text = text.replace(text.match(/(ER[^\n]*)([^\0]*)/)[2],"");//Remove stray M3-tag at the end of the RIS record
+ text = text.replace("%2F","/");//Replace %2F characters by forward slashes in url
+ doi = doi.replace("%2F","/");//Replace %2F characters by forward slashes in doi
+
+ // grab the UR link for a snapshot then blow it away
+ var snapshot = text.match(/UR\s+\-\s+(.*)/)[1];
+ text = text.replace(/UR\s+\-(.*)/, "");
+
+ var translator = Zotero.loadTranslator("import");
+ translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
+ translator.setString(text);
+ translator.setHandler("itemDone", function(obj, item) {
+ //item.attachments[0]=({url:pdfURL, title:"PLoS Full Text PDF", mimeType:"application/pdf"});
+ item.attachments.push({url:pdfURL, title:"PLoS Full Text PDF", mimeType:"application/pdf"});
+ item.attachments.push({url:snapshot, title:"PLoS Snapshot", mimeType:"text/html", snapshot:true});
+ item.DOI = doi;
+ item.repository = item.publicationTitle;
+ item.complete();
+ });
+ translator.translate();
}, function() {Zotero.done();});
Zotero.wait();
}
\ No newline at end of file