zotero/translators/AcademicJournals.net.js
2009-01-08 08:28:59 +00:00

91 lines
No EOL
3.2 KiB
JavaScript

{
"translatorID":"252c6a50-0900-41c5-a66b-ec456137c43c",
"translatorType":4,
"label":"AcademicJournals.net",
"creator":"Michael Berkowitz",
"target":"http://www.academicjournals.net/",
"minVersion":"1.0.0b4.r5",
"maxVersion":"",
"priority":100,
"inRepository":true,
"lastUpdated":"2009-01-08 08:19:07"
}
function detectWeb(doc, url) {
if (url.match('articleno=')) {
return "journalArticle";
} else if (url.match('issueno=') || url.match('current.php')) {
return "multiple";
}
}
function doWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return prefix; else return null;
} : namespace;
var arts = new Array();
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var titles = doc.evaluate('//tr[2]/td//table/tbody/tr[1]/td[2]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
var title;
var links = doc.evaluate('//tr[4]/td[2]/div/a[@class="links"]', doc, nsResolver, XPathResult.ANY_TYPE, null);
var link;
while ((title = titles.iterateNext()) && (link = links.iterateNext())) {
items[link.href] = Zotero.Utilities.trimInternal(title.textContent);
}
items = Zotero.selectItems(items);
for (var i in items) {
arts.push(i);
}
} else {
arts = [url];
}
Zotero.Utilities.processDocuments(arts, function(doc) {
var item = new Zotero.Item("journalArticle");
item.url = doc.location.href;
//title
item.title = Zotero.Utilities.trimInternal(doc.evaluate('//td[2]/table/tbody/tr/td/div/font', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent);
//voliss, etc.
var voliss = doc.evaluate('//table/tbody/tr/td[2]/font/font', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
voliss = voliss.match(/^([^\d]+)(\d+)\s+\((\d+)\):\s+([\d\-]+),\s+(\d+)/);
Zotero.debug(voliss);
item.publicationTitle = voliss[1];
item.volume = voliss[2];
item.issue = voliss[3];
item.pages = voliss[4];
item.date = voliss[5];
//authors
var authorsx = doc.evaluate('//td[2]/font/a[@class="links"]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
var author;
var authors = new Array();
while (author = authorsx.iterateNext()) {
authors.push(author.textContent);
}
for each (var aut in authors) {
item.creators.push(Zotero.Utilities.cleanAuthor(aut, "author"));
}
item.abstractNote = Zotero.Utilities.trimInternal(doc.evaluate('//table/tbody/tr/td/div/table/tbody/tr/td[2]/div/font', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent);
//attachments
var pdfurl = doc.evaluate('//a[contains(@href, ".pdf")]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().href;
item.attachments = [
{url:item.url, title:"AcademicJournals.net Snapshot", mimeType:"text/html"},
{url:pdfurl, title:"AcademicJournals.net PDF", mimeType:"application/pdf"}
];
//tags
var tagspath = doc.evaluate('//tbody/tr/td/table/tbody/tr[2]/td/font/a[@class="links"]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
var tag;
var tags = new Array();
while (tag = tagspath.iterateNext()) {
tags.push(tag.textContent);
}
item.tags = tags;
item.complete();
}, function() {Zotero.done();});
}