Permalink
Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
Cannot retrieve contributors at this time
{ | |
"translatorID": "c3edb423-f267-47a1-a8c2-158c247f87c2", | |
"label": "Common-Place", | |
"creator": "Frederick Gibbs, Philipp Zumstein", | |
"target": "^https?://(www\\.)?(common-place\\.org/|common-place-archives\\.org/)", | |
"minVersion": "3.0", | |
"maxVersion": "", | |
"priority": 100, | |
"inRepository": true, | |
"translatorType": 4, | |
"browserSupport": "gcsibv", | |
"lastUpdated": "2016-09-10 09:34:34" | |
} | |
function detectWeb(doc, url) { | |
if (getSearchResults(doc, true)) {//multiples works only on search pages | |
return "multiple"; | |
} else if (doc.body.className.indexOf("single-article")>-1 || url.indexOf("common-place-archives.org")>-1) { | |
return "journalArticle"; | |
} | |
} | |
function getSearchResults(doc, checkOnly) { | |
var items = {}; | |
var found = false; | |
var rows = ZU.xpath(doc, '//h3[contains(@class, "article-title")]/a|//h2/a'); | |
for (var i=0; i<rows.length; i++) { | |
var href = rows[i].href; | |
var title = ZU.trimInternal(rows[i].textContent); | |
if (!href || !title) continue; | |
if (checkOnly) return true; | |
found = true; | |
items[href] = title; | |
} | |
return found ? items : false; | |
} | |
function doWeb(doc, url) { | |
if (detectWeb(doc, url) == "multiple") { | |
Zotero.selectItems(getSearchResults(doc, false), function (items) { | |
if (!items) { | |
return true; | |
} | |
var articles = []; | |
for (var i in items) { | |
articles.push(i); | |
} | |
ZU.processDocuments(articles, scrape); | |
}); | |
} else { | |
scrape(doc, url); | |
} | |
} | |
function scrape(doc, url) { | |
var newItem = new Zotero.Item("journalArticle"); | |
newItem.publicationTitle = "Common-Place"; | |
newItem.url = url; | |
if (doc.body.className.indexOf("single-article")>-1) { | |
newItem.title = ZU.xpathText(doc, '//article/h1'); | |
var author = ZU.xpathText(doc, '//article/h1/following-sibling::p'); | |
if (author) { | |
newItem.creators.push(ZU.cleanAuthor(author, "author")); | |
} | |
newItem.abstractNote = ZU.xpathText(doc, '//article/div[contains(@class, "entry-excerpt")]'); | |
newItem.date = ZU.strToISO(ZU.trimInternal(ZU.xpathText(doc, '//article/ol[contains(@class, "breadcrumb")]/li/text()'))); | |
var volno = ZU.xpathText(doc, '//article/ol[contains(@class, "breadcrumb")]/li[1]/a'); | |
var m = volno.match(/Vol\. (\d+) No\. (\d+)/); | |
if (m) { | |
newItem.volume = m[1]; | |
newItem.issue = m[2]; | |
} | |
} else { | |
//get issue year and month | |
//these will determine what xpaths we use for title and author | |
//e.g. <a href="/vol-12/no-01/">vol. 12 · no. 1 · October 2011</a> | |
var dateRe = /<a href="\/vol-(\d+)\/no-(\d+)\/">([^<]*)<\/a>/; | |
var m = dateRe.exec(ZU.trimInternal(doc.getElementsByTagName("body")[0].innerHTML)); | |
if (m) { | |
newItem.volume = m[1]; | |
newItem.issue = m[2]; | |
var n = m[3].match(/· ([\w\s]+)$/); | |
if (n) { | |
newItem.date = ZU.strToISO(n[1]); | |
} | |
} | |
var author = ZU.xpathText(doc, '//div[@id="content"]/p/span[1]'); | |
var title = ZU.xpathText(doc, '//div[@id="content"]/p/span[2]'); | |
if (author) { | |
//determine if we have a book review | |
// if so, get the publication information | |
if (author.indexOf("Review by") != -1 ) { | |
title = String.concat("Review of ", title); | |
author = author.substring(10); | |
} | |
newItem.creators.push(ZU.cleanAuthor(author, "author")); | |
} else { //we have older issue | |
//check if we are on a review | |
var review = ZU.xpathText(doc, '/html/body/table/tbody/tr/td[2]/p[2]'); | |
if (review.indexOf("Review") != -1) { | |
title = ZU.xpathText(doc, '/html/body/table/tbody/tr/td[2]/p/i'); | |
title = "Review of " + title; | |
author = review.substring(10); | |
} else { //for articles | |
title = ZU.xpathText(doc, '/html/body/table/tbody/tr/td[2]/p/b'); | |
author = ZU.xpathText(doc, '/html/body/table/tbody/tr/td[2]/p[1]').split(/\n/)[1];; | |
} | |
newItem.creators.push(ZU.cleanAuthor(author, "author")); | |
} | |
newItem.title = title; | |
} | |
newItem.attachments.push({document:doc, title:doc.title}); | |
newItem.complete(); | |
} | |
/** BEGIN TEST CASES **/ | |
var testCases = [ | |
{ | |
"type": "web", | |
"url": "http://www.common-place-archives.org/vol-12/no-01/tales/", | |
"items": [ | |
{ | |
"itemType": "journalArticle", | |
"title": "Looking for Limbs in all the Right Places", | |
"creators": [ | |
{ | |
"firstName": "Megan Kate", | |
"lastName": "Nelson", | |
"creatorType": "author" | |
} | |
], | |
"date": "2011-10", | |
"issue": "01", | |
"libraryCatalog": "Common-Place", | |
"publicationTitle": "Common-Place", | |
"url": "http://www.common-place-archives.org/vol-12/no-01/tales/", | |
"volume": "12", | |
"attachments": [ | |
{ | |
"title": "Common-place: Tales from the Vault" | |
} | |
], | |
"tags": [], | |
"notes": [], | |
"seeAlso": [] | |
} | |
] | |
}, | |
{ | |
"type": "web", | |
"url": "http://www.common-place-archives.org/vol-03/no-03/mccaffrey/", | |
"items": [ | |
{ | |
"itemType": "journalArticle", | |
"title": "American Originals", | |
"creators": [ | |
{ | |
"firstName": "Katherine Stebbins", | |
"lastName": "McCaffrey", | |
"creatorType": "author" | |
} | |
], | |
"date": "2003-04", | |
"issue": "03", | |
"libraryCatalog": "Common-Place", | |
"publicationTitle": "Common-Place", | |
"url": "http://www.common-place-archives.org/vol-03/no-03/mccaffrey/", | |
"volume": "03", | |
"attachments": [ | |
{ | |
"title": "Common-place: American Originals" | |
} | |
], | |
"tags": [], | |
"notes": [], | |
"seeAlso": [] | |
} | |
] | |
}, | |
{ | |
"type": "web", | |
"url": "http://common-place.org/book/alive-with-the-sound-of-music/", | |
"items": [ | |
{ | |
"itemType": "journalArticle", | |
"title": "Alive with the Sound of Music", | |
"creators": [ | |
{ | |
"firstName": "Douglas", | |
"lastName": "Shadle", | |
"creatorType": "author" | |
} | |
], | |
"date": "2008-04", | |
"abstractNote": "Next to Stephen Foster, William Henry Fry was arguably the most important American composer working before the Civil War.", | |
"issue": "3", | |
"libraryCatalog": "Common-Place", | |
"publicationTitle": "Common-Place", | |
"url": "http://common-place.org/book/alive-with-the-sound-of-music/", | |
"volume": "08", | |
"attachments": [ | |
{ | |
"title": "Alive with the Sound of Music - Common-placeCommon-place: The Journal of early American Life" | |
} | |
], | |
"tags": [], | |
"notes": [], | |
"seeAlso": [] | |
} | |
] | |
} | |
] | |
/** END TEST CASES **/ |