139 lines
4.4 KiB
JavaScript
139 lines
4.4 KiB
JavaScript
{
|
|
"translatorID":"f26cfb71-efd7-47ae-a28c-d4d8852096bd",
|
|
"translatorType":4,
|
|
"label":"Cell Press",
|
|
"creator":"Michael Berkowitz",
|
|
"target":"http://www.(cancercell|cell|cellhostandmicrobe|cellmetabolism|cellstemcell|chembiol|current-biology|developmentalcell|immunity|molecule|neuron|structure).(org|com)",
|
|
"minVersion":"1.0.0b4.r5",
|
|
"maxVersion":"",
|
|
"priority":99,
|
|
"inRepository":true,
|
|
"lastUpdated":"2008-07-07 14:50:00"
|
|
}
|
|
|
|
function detectWeb(doc, url) {
|
|
|
|
if (url.indexOf("search/results") != -1) {
|
|
return "multiple";
|
|
} else if (url.indexOf("content/article") != -1) {
|
|
return "journalArticle";
|
|
}
|
|
}
|
|
|
|
function scrape(doc, url) {
|
|
|
|
var namespace = doc.documentElement.namespaceURI;
|
|
var nsResolver = namespace ? function(prefix) {
|
|
if (prefix == 'x') return namespace; else return null;
|
|
} : null;
|
|
|
|
var dataTags = new Object();
|
|
var fieldTitle;
|
|
var commaSplit = new Array();
|
|
|
|
var newItem = new Zotero.Item("journalArticle");
|
|
|
|
//title
|
|
newItem.title = doc.evaluate('//h1[@class="article_title"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
|
|
|
//publication, volume, pages, date.
|
|
var voliss = doc.evaluate('//div[contains(@class, "article_citation")]/p[1]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
|
|
|
var volissSplit = voliss.split(".");
|
|
|
|
for (var i = 0; i < volissSplit.length; i++) {
|
|
if (volissSplit[i].match(", ")) {
|
|
commaSplit = volissSplit[i].split(", ");
|
|
}
|
|
}
|
|
if (commaSplit[0] != '') {
|
|
newItem.publicationTitle = commaSplit[0];
|
|
}
|
|
if (commaSplit[1] != '') {
|
|
newItem.volume = commaSplit[1];
|
|
}
|
|
if (commaSplit[2] != '') {
|
|
newItem.pages= commaSplit[2];
|
|
}
|
|
if (commaSplit[3] != '') {
|
|
newItem.date= commaSplit[3];
|
|
}
|
|
|
|
//abstract
|
|
|
|
var abstractXPath2 = '//div[@class="min_fulltext"][@id="main_content"]/p';
|
|
if (doc.evaluate(abstractXPath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
newItem.abstractNote = doc.evaluate(abstractXPath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
|
}
|
|
|
|
var abstractXPath = '//div[@class="panelcontent article_summary"]/p[contains(text(), " ")]';
|
|
if (doc.evaluate(abstractXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
newItem.abstractNote = doc.evaluate(abstractXPath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
|
|
}
|
|
|
|
//authors
|
|
var authors = doc.evaluate('//p[@class="authors"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent.split(",");
|
|
for (var i in authors) {
|
|
var next_author = authors[i];
|
|
if (next_author.match(/[a-z]/)) {
|
|
next_author = Zotero.Utilities.trimInternal(next_author.replace(/\d/g, ""));
|
|
if (next_author.substr(0, 3) == "and") {
|
|
next_author = next_author.substr(4);
|
|
}
|
|
newItem.creators.push(Zotero.Utilities.cleanAuthor(next_author, "author"));
|
|
}
|
|
}
|
|
|
|
//url
|
|
var newurl = doc.location.href;
|
|
if (newurl.indexOf("abstract") != -1) {
|
|
newurl = newurl.replace("abstract", "fulltext");
|
|
}
|
|
|
|
//attachments
|
|
var uid = newurl.match(/uid=([^&]+)/)[1];
|
|
var pdfx = '//a[contains(text(), "PDF")][contains(@href, "' + uid + '")]';
|
|
var pdfurl = doc.evaluate(pdfx, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().href;
|
|
newItem.attachments = [
|
|
{url:newurl, title:"Cell Press Snapshot", mimeType:"text/html"},
|
|
{url:pdfurl, title:"Cell Press Full Text PDF", mimeType:"application/pdf"}
|
|
];
|
|
|
|
newItem.complete();
|
|
}
|
|
|
|
function doWeb(doc, url) {
|
|
var namespace = doc.documentElement.namespaceURI;
|
|
var nsResolver = namespace ? function(prefix) {
|
|
} : null;
|
|
|
|
var articles = new Array();
|
|
|
|
if (detectWeb(doc, url) == "multiple") {
|
|
var items = new Object();
|
|
|
|
var titles = doc.evaluate('//dd/strong', doc, nsResolver, XPathResult.ANY_TYPE, null);
|
|
var link = doc.evaluate('//nobr/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
|
|
|
|
var next_title;
|
|
var next_lilnk;
|
|
|
|
while (next_title = titles.iterateNext()) {
|
|
next_link = link.iterateNext();
|
|
if (next_link.textContent.match("Summary")) {
|
|
items[next_link.href] = next_title.textContent;
|
|
} else {
|
|
next_link = link.iterateNext();
|
|
items[next_link.href] = next_title.textContent;
|
|
}
|
|
}
|
|
items = Zotero.selectItems(items);
|
|
for (var i in items) {
|
|
articles.push(i);
|
|
}
|
|
} else {
|
|
articles = [url];
|
|
}
|
|
Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});
|
|
Zotero.wait();
|
|
} |