Need help with Translator.

Hello guys, I've edited a translator for NZherald.co.nz because it is broken and I got it to work like it should now. But the only problem is the regular Expression will not work with multiple authors at all. I've tried everything and still no luck.

Below is the site where I would like to get multiple authors into Zotero database.
http://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=10651102

Below is the code:

function detectWeb(doc, url) {
if (doc.title.indexOf("Search Results") != -1) {
return "multiple";
} else if (doc.location.href.indexOf("/news") != -1) {
return "newspaperArticle";
}
}

function scrape(url) {
Zotero.Utilities.HTTP.doGet(url, function(text) {
var newItem = new Zotero.Item("newspaperArticle");
newItem.url = url;
newItem.publicationTitle = "New Zealand Herald";

//How to get first author? This grab the last author instead???
var aut = /<span class=\"credits\">[^<]*<a href=\".*\">(.*)\<\/a>/;

if (text.match(aut)) {
var author = text.match(aut)[1];
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
}

//Get second author
var aut2 = /<span class=\"credits\">[^<]*<a href=\".*\">(.*)\<\/a>/;

if (text.match(aut2)) {
var author2 = text.match(aut2)[1];
newItem.creators.push(Zotero.Utilities.cleanAuthor(author2, "contributor"));
}


//abstract
var a = /meta name=\"description\" content=\"([^&]*)/;
newItem.abstractNote = text.match(a)[1];

//title and date
var t = /<title>(.*)<\/title>/;
var result = text.match(t)[1].split(" - ");
newItem.title = result[0];
newItem.section= result[1];

//keywords
var k = /<meta name=\"keywords\" content=\"(.*)\"/;
var kwords = Zotero.Utilities.cleanString(text.match(k)[1]).split(", ");
for (var i = 0 ; i < kwords.length ; i++) {
newItem.tags.push(kwords[i]);
}
//-------------------------DATE


var s = /<div class=\"tools\">[^<]*<span>(.*)<\/span>/;
newItem.date = text.match(s)[1];

/*
var s = /class=\"current\"><.*><span>(.*)<\/span>/;
newItem.date= text.match(s)[1];
*/
//--------------------
newItem.complete();
Zotero.debug(newItem);

Zotero.done();
}, function() {});
}

function doWeb(doc, url) {
var articles = new Array();
var names = new Array();
if (doc.title.indexOf("Search Results:") != -1) {
var URLS = new Array();
var titles = new Array();
var xpath = '//p[@class="g"]/a';
var links = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var link = links.iterateNext();

while (link) {
URLS.push(link.href);
titles.push(link.textContent);
link = links.iterateNext();
}

Zotero.debug(titles);
Zotero.debug(URLS);

var newItems = new Object();

for (var i = 0 ; i < titles.length ; i++) {
newItems[URLS[i]] = titles[i];
}

newItems = Zotero.selectItems(newItems);

Zotero.debug(newItems);

for (var i in newItems) {
articles.push(i);
names.push(newItems[i]);
}
} else {
articles.push(doc.location.href);
names.push(Zotero.Utilities.cleanString(doc.title.split("-")[0]));
}

Zotero.debug(articles);

Zotero.Utilities.HTTP.doPost(articles, "", function(text) {
for (var i = 0 ; i < articles.length ; i++) {
scrape(articles[i]);
}
});

Zotero.wait();
}


Can anyone help me out?
Thank you.

Maxx
Sign In or Register to comment.