This commit is contained in:
Avram Lyon 2011-04-11 22:39:24 +00:00
parent c1cfb039fd
commit 698f3964b4

View file

@ -2,13 +2,13 @@
"translatorID":"d770e7d2-106c-4396-8c32-b35cdc46376c",
"translatorType":4,
"label":"Project Gutenberg",
"creator":"Adam Crymble",
"target":"http://www.gutenberg.org",
"minVersion":"1.0.0b4.r5",
"creator":"Adam Crymble, Avram Lyon",
"target":"^http://www\\.gutenberg\\.org",
"minVersion":"2.1",
"maxVersion":"",
"priority":100,
"inRepository":true,
"lastUpdated":"2009-07-07 00:15:00"
"lastUpdated":"2011-04-11 00:15:00"
}
function detectWeb(doc, url) {
@ -35,63 +35,46 @@ function scrape(doc, url) {
} : null;
var dataTags = new Object();
var odd = "yes";
var creatorType = new Array();
var creatorField = new Array();
var creatorContent = new Array();
var newItem = new Zotero.Item("book");
var headingsEven = doc.evaluate('//tr[@class="oddrow"]/th', doc, nsResolver, XPathResult.ANY_TYPE, null);
var headingsEvenCount = doc.evaluate('count(//tr[@class="oddrow"]/th)', doc, nsResolver, XPathResult.ANY_TYPE, null);
var headings = doc.evaluate('//table[@class="bibrec"]//tr/th', doc, nsResolver, XPathResult.ANY_TYPE, null);
var headingsOdd = doc.evaluate('//tr[@class="evenrow"]/th', doc, nsResolver, XPathResult.ANY_TYPE, null);
var headingsOddCount = doc.evaluate('count(//tr[@class="evenrow"]/th)', doc, nsResolver, XPathResult.ANY_TYPE, null);
var content = doc.evaluate('//div[@class="pgdbdata"]/table/tbody//td', doc, nsResolver, XPathResult.ANY_TYPE, null);
for (var i = 0; i < headingsEvenCount.numberValue + headingsOddCount.numberValue; i++) {
if (odd == "yes") {
fieldTitle = headingsOdd.iterateNext().textContent.replace(/\s+/g, '');
odd = "no";
} else {
fieldTitle = headingsEven.iterateNext().textContent.replace(/\s+/g, '');
odd = "yes";
}
var content = doc.evaluate('//table[@class="bibrec"]//tr/td', doc, nsResolver, XPathResult.ANY_TYPE, null);
var i;
while (i = headings.iterateNext()) {
fieldTitle = i.textContent;
dataTags[fieldTitle] = Zotero.Utilities.cleanTags(content.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
Zotero.debug(i.textContent);
if (fieldTitle == "Creator") {
creatorType.push("author");
creatorField.push("Creator");
creatorContent.push(dataTags[fieldTitle]);
} else if (fieldTitle == "Author") {
creatorType.push("author");
creatorField.push("Author");
creatorContent.push(dataTags[fieldTitle]);
} else if (fieldTitle == "Illustrator") {
creatorType.push("illustrator");
creatorField.push("Illustrator");
creatorContent.push(dataTags[fieldTitle]);
}else if (fieldTitle == "Translator") {
} else if (fieldTitle == "Translator") {
creatorType.push("translator");
creatorField.push("Translator");
creatorContent.push(dataTags[fieldTitle]);
creatorContent.push(dataTags[fieldTitle]);
} else if (fieldTitle == "Editor") {
creatorType.push("editor");
creatorField.push("Editor");
creatorContent.push(dataTags[fieldTitle]);
} else if (fieldTitle == "Commentator") {
creatorType.push("commentator");
creatorField.push("Commentator");
creatorContent.push(dataTags[fieldTitle]);
} else if (fieldTitle == "Contributor") {
creatorType.push("contributor");
creatorField.push("Contributor");
creatorContent.push(dataTags[fieldTitle]);
@ -101,7 +84,6 @@ function scrape(doc, url) {
newItem.place = place[0];
Zotero.debug(place);
}
if (fieldTitle == "Subject") {
newItem.tags[i] = dataTags["Subject"];
}
@ -167,9 +149,9 @@ function doWeb(doc, url) {
for (var i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});
Zotero.wait();
} else {
articles = [url];
scrape(doc, url);
}
Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});
Zotero.wait();
}
}