{ "translatorID": "6773a9af-5375-3224-d148-d32793884dec", "label": "InfoTrac", "creator": "Simon Kornblith", "target": "^https?://[^/]+/itw/infomark/", "minVersion": "1.0.0b3.r1", "maxVersion": "", "priority": 250, "inRepository": true, "translatorType": 4, "browserSupport": "gcsibv", "lastUpdated": "2021-12-28 04:42:55" } function detectWeb(doc, url) { // ensure that there is an InfoTrac logo if (!doc.evaluate('//img[substring(@alt, 1, 8) = "InfoTrac"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) return false; if (doc.title.substring(0, 8) == "Article ") { if (ZU.xpathText(doc, '//td//img[contains(@src, "ncnp_logo.gif")]/@title')) return "newspaperArticle"; var genre = doc.evaluate('//comment()[substring(., 1, 6) = " Genre"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext(); if (genre) { var value = Zotero.Utilities.trimInternal(genre.nodeValue.substr(7)); if (value == "article") { return "journalArticle"; } else if (value == "book") { return "book"; } else if (value == "dissertation") { return "thesis"; } else if (value == "bookitem") { return "bookSection"; } } return "magazineArticle"; } else if (doc.title.substring(0, 10) == "Citations ") { return "multiple"; } } function scrape(doc, url){ var newItem = new Zotero.Item(); var xpath = '/html/body//comment()'; var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); var citation = ZU.xpath(doc, '//p/table/tbody//td/table/tbody[not(./script)]'); newItem.title = ZU.xpathText(citation, './/font/b'); newItem.itemType = "newspaperArticle"; var author = ZU.xpathText(citation, './/td/i'); if (author) newItem.creators.push(ZU.cleanAuthor(author, "author`")); var date = ZU.xpathText(citation, './/td/text()'); if (date) date = date.match(/[A-Z][a-z]+\s\d+,\s\d{4}/); if (date) newItem.date = date[0]; var pdfurl = ZU.xpathText(doc, '//blockquote/a[contains(@href, "!pdf")][1]/@href'); if (pdfurl){ newItem.attachments.push({url: pdfurl, title: "Infotrac Full Text PDF", mimeType: "application/pdf"}) } newItem.attachments.push({document: doc, title: "Infotrac Snapshot", mimeType: "text/html"}); while (elmt = elmts.iterateNext()) { var colon = elmt.nodeValue.indexOf(":"); var field = elmt.nodeValue.substring(1, colon).toLowerCase(); var value = elmt.nodeValue.substring(colon+1, elmt.nodeValue.length-1); if (field == "journal") { newItem.publicationTitle = value; } } if (newItem.publicationTitle.search(/\(.+\)/)){ newItem.place = newItem.publicationTitle.match(/\((.+)\)/)[1]; newItem.publicationTitle = newItem.publicationTitle.replace(/\(.+\).*/, ""); } newItem.complete(); } function extractCitation(url, elmts, title, doc) { var newItem = new Zotero.Item(); newItem.url = url; if (title) { newItem.title = Zotero.Utilities.superCleanString(title); } newItem.title = ZU.xpathText(citation, './/font/b'); newItem.itemType = "newspaperArticle"; var date = ZU.xpathText(citation, './/td/text()'); if (date) date = date.match(/[A-Z][a-z]+\s\d+,\s\d{4}/); if (date) newItem.date = date[0]; while (elmt = elmts.iterateNext()) { var colon = elmt.nodeValue.indexOf(":"); var field = elmt.nodeValue.substring(1, colon).toLowerCase(); var value = elmt.nodeValue.substring(colon+1, elmt.nodeValue.length-1); if (field == "title") { newItem.title = Zotero.Utilities.superCleanString(value); } else if (field == "journal") { newItem.publicationTitle = value; } else if (field == "pi") { parts = value.split(" "); var date = ""; var field = null; for (j in parts) { firstChar = parts[j].substring(0, 1); if (firstChar == "v") { newItem.itemType = "journalArticle"; field = "volume"; } else if (firstChar == "i") { field = "issue"; } else if (firstChar == "p") { field = "pages"; var pagesRegexp = /p(\w+)\((\w+)\)/; // weird looking page range var match = pagesRegexp.exec(parts[j]); if (match) { // yup, it's weird var finalPage = parseInt(match[1])+parseInt(match[2]) parts[j] = "p"+match[1]+"-"+finalPage.toString(); } else if (!newItem.itemType) { // no, it's normal // check to see if it's numeric, bc newspaper pages aren't var justPageNumber = parts[j].substr(1); if (parseInt(justPageNumber).toString() != justPageNumber) { newItem.itemType = "newspaperArticle"; } } } else if (!field) { // date parts at the beginning, before // anything else date += " "+parts[j]; } if (field) { isDate = false; if (parts[j] != "pNA") { // make sure it's not an invalid // page number // chop of letter newItem[field] = parts[j].substring(1); } else if (!newItem.itemType) { // only newspapers are missing // page numbers on infotrac newItem.itemType = "newspaperArticle"; } } } // Set type if (!newItem.itemType) { newItem.itemType = "magazineArticle"; } if (date != "") { newItem.date = date.substring(1); } } else if (field == "author") { var author = Zotero.Utilities.cleanAuthor(value, "author", true); // ensure author is not already there var add = true; for (var i=0; i