From 698f3964b46efd5dd9f46f05f5a4a5d4a949ef23 Mon Sep 17 00:00:00 2001 From: Avram Lyon Date: Mon, 11 Apr 2011 22:39:24 +0000 Subject: [PATCH] Trans: Updated Gutenberg, see http://forums.zotero.org/discussion/15562 --- translators/Project Gutenberg.js | 60 +++++++++++--------------------- 1 file changed, 21 insertions(+), 39 deletions(-) diff --git a/translators/Project Gutenberg.js b/translators/Project Gutenberg.js index c68290143..0a5105126 100644 --- a/translators/Project Gutenberg.js +++ b/translators/Project Gutenberg.js @@ -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(); -} \ No newline at end of file +}