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
translators/Library Catalog (Voyager 7).js
Find file
Copy path
Fetching contributors…
Cannot retrieve contributors at this time
{ | |
"translatorID": "a81243b5-a9fd-4921-8441-3142a518fdb7", | |
"label": "Library Catalog (Voyager 7)", | |
"creator": "Sean Takats", | |
"target": "/vwebv/(holdingsInfo|search)", | |
"minVersion": "1.0", | |
"maxVersion": "", | |
"priority": 250, | |
"inRepository": true, | |
"translatorType": 4, | |
"browserSupport": "gcsibv", | |
"lastUpdated": "2014-08-26 04:12:22" | |
} | |
function detectWeb(doc, url) { | |
var bibIdRe = new RegExp("bibId=[0-9]+"); | |
if (bibIdRe.test(url)) { | |
return "book"; | |
} | |
//for single search results such as | |
//http://catalog.loc.gov/vwebv/search?searchArg=bynum+holy+feast+holy+fast&searchCode=GKEY^*&searchType=0&recCount=100&sk=en_US | |
else if (ZU.xpathText(doc, '//div[@class="bibliographicData"]')) return "book"; | |
var titles = doc.evaluate('//div[@class="resultListTextCell"]//a', doc, null, XPathResult.ANY_TYPE, null); | |
if (titles.iterateNext()) { | |
return "multiple"; | |
} | |
} | |
function doWeb(doc, url) { | |
var bibIdRe = new RegExp("bibId=([0-9]+)"); | |
var m = bibIdRe.exec(url); | |
//for single search results | |
if (detectWeb(doc, url)== "book" && !m){ | |
var host = url.match("^(https?://[^/]+)/")[0]; | |
//we get the URL from the print view of the item, which looks like it exists for all Voyager 7 catalogs | |
url = host + "vwebv/" + ZU.xpathText(doc, '//div[@class="actionBox"]//a[contains(@href, "printDialog.do")]/@href') | |
var m = bibIdRe.exec(url); | |
} | |
Z.debug(url) | |
var hostRegexp = new RegExp("^(https?://[^/]+)/"); | |
var hMatch = hostRegexp.exec(url); | |
var host = hMatch[1]; | |
var urlPrefix = url.match("https?://[^/]*(/[^/]*/)?/?vwebv/")[1] ? host + url.match("https?://[^/]*(/[^/]*/)?/?vwebv/")[1] + "/vwebv/exportRecord.do?bibId=" : host + "/vwebv/exportRecord.do?bibId="; | |
var newUris = new Array(); | |
if (m) { //single item | |
var newURL = urlPrefix + m[1] + "&format=utf-8" | |
scrape(doc, newURL) | |
} else { //search results | |
var items = new Object(); | |
var titles = doc.evaluate('//div[@class="resultListTextCell"]//a', doc, null, XPathResult.ANY_TYPE, null); | |
var title; | |
while (title = titles.iterateNext()) { | |
var bibId = title.href.match(/bibId=([0-9]+)/)[1]; | |
// Chrome ignores the order in which properties are added if they are numbers | |
// See http://code.google.com/p/v8/issues/detail?id=164 | |
items["_"+bibId] = title.textContent; | |
} | |
Zotero.selectItems(items, function (items) { | |
if (!items) { | |
return true; | |
} | |
for (var i in items) { | |
newUris.push(urlPrefix + i.substr(1) + "&format=utf-8"); | |
} | |
Zotero.Utilities.HTTP.doGet(newUris, function (text) { | |
// load translator for MARC | |
var marc = Zotero.loadTranslator("import"); | |
marc.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973"); | |
marc.setString(text); | |
var domain = url.match(/https?:\/\/([^/]+)/); | |
marc.setHandler("itemDone", function (obj, item) { | |
item.repository = domain[1] + " Library Catalog"; | |
item.complete(); | |
}); | |
marc.translate(); | |
}, function () { | |
Zotero.done() | |
}) | |
Zotero.wait(); | |
}); | |
} | |
} | |
function scrape(doc, url) { | |
Zotero.Utilities.HTTP.doGet(url, function (text) { | |
// load translator for MARC | |
var marc = Zotero.loadTranslator("import"); | |
marc.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973"); | |
marc.setString(text); | |
var domain = url.match(/https?:\/\/([^/]+)/); | |
marc.setHandler("itemDone", function (obj, item) { | |
item.repository = domain[1] + " Library Catalog"; | |
item.complete(); | |
}); | |
marc.translate(); | |
}, function () { | |
Zotero.done() | |
}) | |
Zotero.wait(); | |
} | |
/** BEGIN TEST CASES **/ | |
var testCases = [ | |
{ | |
"type": "web", | |
"url": "http://groucho.lib.rochester.edu/vwebv/search?searchArg=argentina&searchCode=GKEY%5E*&limitTo=none&recCount=50&searchType=1&page.search.search.button=Search", | |
"items": "multiple" | |
}, | |
{ | |
"type": "web", | |
"url": "http://groucho.lib.rochester.edu/vwebv/holdingsInfo?searchId=3544&recCount=50&recPointer=1&bibId=78520", | |
"items": [ | |
{ | |
"itemType": "book", | |
"creators": [ | |
{ | |
"firstName": "Mildred Anna", | |
"lastName": "Phoebus", | |
"creatorType": "author" | |
}, | |
{ | |
"lastName": "United States", | |
"fieldMode": true | |
} | |
], | |
"notes": [ | |
{ | |
"note": "Supplement to Commerce reports. Published by the Bureau of foreign and domestic commerce. October 29, 1923" | |
} | |
], | |
"tags": [ | |
"Argentina", | |
"Economic conditions" | |
], | |
"seeAlso": [], | |
"attachments": [], | |
"title": "Economic development in Argentina since 1921", | |
"place": "Washington", | |
"publisher": "Govt. print. off", | |
"date": "1923", | |
"numPages": "14", | |
"series": "U. S. Bureau of foreign and domestic commerce (Dept. of commerce) Trade information bulletin", | |
"seriesNumber": "no. 156", | |
"callNumber": "HF105 .F71tr no.156", | |
"libraryCatalog": "groucho.lib.rochester.edu Library Catalog" | |
} | |
] | |
}, | |
{ | |
"type": "web", | |
"url": "http://groucho.lib.rochester.edu/vwebv/search?searchArg=Economic+development+in+Argentina+since+1921&submit=+&searchCode=TALL&limitTo=none&recCount=50&searchType=1", | |
"items": [ | |
{ | |
"itemType": "book", | |
"creators": [ | |
{ | |
"firstName": "Mildred Anna", | |
"lastName": "Phoebus", | |
"creatorType": "author" | |
}, | |
{ | |
"lastName": "United States", | |
"fieldMode": true | |
} | |
], | |
"notes": [ | |
{ | |
"note": "Supplement to Commerce reports. Published by the Bureau of foreign and domestic commerce. October 29, 1923" | |
} | |
], | |
"tags": [ | |
"Argentina", | |
"Economic conditions" | |
], | |
"seeAlso": [], | |
"attachments": [], | |
"title": "Economic development in Argentina since 1921", | |
"place": "Washington", | |
"publisher": "Govt. print. off", | |
"date": "1923", | |
"numPages": "14", | |
"series": "U. S. Bureau of foreign and domestic commerce (Dept. of commerce) Trade information bulletin", | |
"seriesNumber": "no. 156", | |
"callNumber": "HF105 .F71tr no.156", | |
"libraryCatalog": "groucho.lib.rochester.edu Library Catalog" | |
} | |
] | |
} | |
] | |
/** END TEST CASES **/ |