Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
218 lines (208 sloc) 6.06 KB
{
"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 **/
You can’t perform that action at this time.