143 lines
5.3 KiB
JavaScript
143 lines
5.3 KiB
JavaScript
|
{
|
||
|
"translatorID": "b86bb082-6310-4772-a93c-913eaa3dfa1b",
|
||
|
"label": "Early English Books Online",
|
||
|
"creator": "Michael Berkowitz",
|
||
|
"target": "^https?://[^/]*eebo\\.chadwyck\\.com[^/]*(/works)?/search",
|
||
|
"minVersion": "2.1",
|
||
|
"maxVersion": "",
|
||
|
"priority": 100,
|
||
|
"inRepository": true,
|
||
|
"translatorType": 4,
|
||
|
"browserSupport": "gcsb",
|
||
|
"lastUpdated": "2014-04-03 16:50:31"
|
||
|
}
|
||
|
|
||
|
function detectWeb(doc, url) {
|
||
|
if (doc.title == "Search Results - EEBO" || doc.title=="Author's Works - EEBO") {
|
||
|
return "multiple";
|
||
|
} else if (doc.title != "Basic Search - EEBO") {
|
||
|
return "book";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function doWeb(doc, url) {
|
||
|
var eeboIDs = new Array();
|
||
|
var hostRegexp = new RegExp("^(https?://[^/]+)/");
|
||
|
var hMatch = hostRegexp.exec(url);
|
||
|
var host = hMatch[1];
|
||
|
var IDRegex = /&ID=([^&]+)/
|
||
|
|
||
|
if (detectWeb(doc, url)=="multiple") {
|
||
|
var items = new Object();
|
||
|
var IDxpath = '//td/input[@name="EeboId" or @name="ADDALL"]/@value';
|
||
|
//Z.debug(ZU.xpathText(doc, IDxpath))
|
||
|
var Titlexpath = '//table[tbody/tr/td/input[@name="EeboId"]]/following-sibling::table[tbody]//i[1]';
|
||
|
if (!ZU.xpathText(doc, Titlexpath)){
|
||
|
//the logic for author lists is different
|
||
|
var Titlexpath = '//table/tbody/tr/td/i'
|
||
|
}
|
||
|
var new_ids = doc.evaluate(IDxpath, doc, null, XPathResult.ANY_TYPE, null);
|
||
|
var new_titles = doc.evaluate(Titlexpath, doc, null, XPathResult.ANY_TYPE, null);
|
||
|
var next_id = new_ids.iterateNext();
|
||
|
var next_title = new_titles.iterateNext();
|
||
|
while (next_id) {
|
||
|
Z.debug(next_id.textContent +": " + next_title.textContent)
|
||
|
//the EEBOIDs from author lists have a suffix that we don't want
|
||
|
items[next_id.textContent.replace(/\+.+/, "").trim()] = next_title.textContent.trim();
|
||
|
next_id = new_ids.iterateNext();
|
||
|
next_title = new_titles.iterateNext();
|
||
|
}
|
||
|
|
||
|
Zotero.selectItems(items, function (items) {
|
||
|
if (!items) {
|
||
|
return true;
|
||
|
}
|
||
|
for (var i in items) {
|
||
|
eeboIDs.push(i);
|
||
|
}
|
||
|
scrape(eeboIDs, host);
|
||
|
});
|
||
|
} else {
|
||
|
var eeboid = url.match(IDRegex)[1];
|
||
|
if (eeboid[0] == "D") {
|
||
|
eeboid = eeboid.slice(7, 14);
|
||
|
}
|
||
|
eeboIDs.push(eeboid);
|
||
|
scrape(eeboIDs, host)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function scrape(eeboIDs, host){
|
||
|
Zotero.debug(eeboIDs);
|
||
|
for (var i = 0 ; i < eeboIDs.length ; i++) {
|
||
|
var postString = 'cit_format=RIS&Print=Print&cit_eeboid=' + eeboIDs[i] + '&EeboId=' + eeboIDs[i];
|
||
|
var new_eeboid = eeboIDs[i]
|
||
|
Zotero.Utilities.HTTP.doPost(host+'/search/print', postString, function(text) {
|
||
|
//Z.debug(text)
|
||
|
// load translator for RIS
|
||
|
var translator = Zotero.loadTranslator("import");
|
||
|
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
|
||
|
translator.setString(text.substring(17));
|
||
|
translator.setHandler("itemDone", function(obj, item) {
|
||
|
//remove date for authors
|
||
|
for (var i in item.creators){
|
||
|
if (item.creators[i].firstName) item.creators[i].firstName = item.creators[i].firstName.replace(/[,\-\d\.\s]+$/g, "")
|
||
|
}
|
||
|
item.attachments.push(
|
||
|
{url : host+'/search/full_rec?SOURCE=pgimages.cfg&ACTION=ByID&ID=' + new_eeboid + '&FILE=../session/1190302085_15129&SEARCHSCREEN=CITATIONS&SEARCHCONFIG=config.cfg&DISPLAY=ALPHA',
|
||
|
title : "EEBO Record",
|
||
|
snapshot : false });
|
||
|
item.complete();
|
||
|
});
|
||
|
translator.translate();
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
/** BEGIN TEST CASES **/
|
||
|
var testCases = [
|
||
|
{
|
||
|
"type": "web",
|
||
|
"url": "http://eebo.chadwyck.com/works/search?SEARCH=submit+search&ACTION=SearchOrBrowse&AUTHOR=EXACT+%22Manley%2C%20Thomas%2C%201628-1690.%22&FTONLY=&ECCO=N&INITIAL=M&PAGENO=3&TITLE=Manley%2C%20Thomas%2C%201628-1690.&RETRIEVETYPE=subset&HISTLOGGING=N",
|
||
|
"items": "multiple"
|
||
|
},
|
||
|
{
|
||
|
"type": "web",
|
||
|
"url": "http://eebo.chadwyck.com/search/full_rec?SOURCE=config.cfg&ACTION=ByID&ID=13111309&ECCO=undefined&SUBSET=undefined&ENTRIES=undefined",
|
||
|
"items": [
|
||
|
{
|
||
|
"itemType": "book",
|
||
|
"creators": [
|
||
|
{
|
||
|
"lastName": "Manley",
|
||
|
"firstName": "Thomas",
|
||
|
"creatorType": "author"
|
||
|
}
|
||
|
],
|
||
|
"notes": [
|
||
|
{
|
||
|
"note": "<p>\"The table\" [i.e. index]: p. [1]-[14] at end.; Reproduction of original in Huntington Library.</p>"
|
||
|
}
|
||
|
],
|
||
|
"tags": [
|
||
|
"Law -- England.",
|
||
|
"Law -- Interpretation and construction.",
|
||
|
"Law clerks -- England."
|
||
|
],
|
||
|
"seeAlso": [],
|
||
|
"attachments": [
|
||
|
{
|
||
|
"title": "EEBO Record",
|
||
|
"snapshot": false
|
||
|
}
|
||
|
],
|
||
|
"title": "The clerks guide leading into three parts, viz. I. Of indentures, leases, &c., II. Letters of attorney, warrants of attorney, mortgages, licences, charter-parties, &c., III. Bills, answers, replications, rejoynders in chancery, &c., under which are comprehended the most unusual forms of clerkship : to which is added, a fourth part of fines, recoveries, statutes, recognisances, judgements, &c. distresses and replevins : illustrated with cases, and the statutes relating to the same / by Tho. Manley of the Middle Temple, London, Esq.",
|
||
|
"publisher": "London : Printed by John Streater, Henry Twyford, and E. Flesher, assigns of Richard Atkins and Edward Atkins, Esquires, 1672.",
|
||
|
"date": "1672",
|
||
|
"series": "Early English Books, 1641-1700 / 744:51",
|
||
|
"libraryCatalog": "Early English Books Online",
|
||
|
"shortTitle": "The clerks guide leading into three parts, viz. I. Of indentures, leases, &c., II. Letters of attorney, warrants of attorney, mortgages, licences, charter-parties, &c., III. Bills, answers, replications, rejoynders in chancery, &c., under which are comprehended the most unusual forms of clerkship"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
/** END TEST CASES **/
|