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/ISTC.js
Find file
Copy path
Fetching contributors…
Cannot retrieve contributors at this time
{ | |
"translatorID": "29051e64-8eba-4b26-bbf1-0c224bc59497", | |
"label": "ISTC", | |
"creator": "Maike Kittelmann", | |
"target": "^https?://data\\.cerl\\.org/istc/(_search|i[a-z]\\d{8})", | |
"minVersion": "3.0", | |
"maxVersion": "", | |
"priority": 100, | |
"inRepository": true, | |
"translatorType": 4, | |
"browserSupport": "gcsibv", | |
"lastUpdated": "2016-12-28 14:39:45" | |
} | |
/* | |
***** BEGIN LICENSE BLOCK ***** | |
RKE Web translator Copyright © 2016 Maike Kittelmann | |
This file is part of Zotero. | |
Zotero is free software: you can redistribute it and/or modify | |
it under the terms of the GNU Affero General Public License as published by | |
the Free Software Foundation, either version 3 of the License, or | |
(at your option) any later version. | |
Zotero is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU Affero General Public License for more details. | |
You should have received a copy of the GNU Affero General Public License | |
along with Zotero. If not, see <http://www.gnu.org/licenses/>. | |
***** END LICENSE BLOCK ***** | |
*/ | |
function detectWeb(doc, url) { | |
if (url.indexOf('_search?') != -1 && getSearchResults(doc, true, url)) { | |
return "multiple"; | |
} else if (url.search(/i[a-z]\d{8}/) != -1) { | |
var title = ZU.trimInternal(ZU.xpath(doc, '//div[contains(@class, "ample-record")]/h3')[0].textContent); | |
if (title) { | |
return 'book'; | |
} | |
} | |
} | |
function getSearchResults(doc, checkOnly, url) { | |
var items = {}; | |
var found = false; | |
var rows = ZU.xpath(doc, '//p[contains(@class, "ample-shortlist-item-entry")]/a[contains(@href, "/istc/i")]'); | |
for (i = 0; i < rows.length; i++) { | |
var title = ZU.trimInternal(rows[i].textContent); | |
var href = rows[i].href + '?format=json'; | |
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, url), function(items) { | |
if (!items) { | |
return true; | |
} | |
var books = []; | |
for (var i in items) { | |
books.push(i); | |
} | |
ZU.doGet(Object.keys(items), scrape); | |
}); | |
} else if (detectWeb(doc, url) == "book") { | |
ZU.doGet(url + '?format=json', scrape); | |
} | |
} | |
function scrape(response, obj, url) { | |
var jsonObject = JSON.parse(response); | |
var data = jsonObject.data; | |
var item = new Zotero.Item('book'); | |
var name = data.author; | |
item.creators.push(Zotero.Utilities.cleanAuthor(name, "author", true)) | |
item.title = data.title; | |
item.url = url.replace('?format=json', ''); | |
var imprint = data.imprint[0]; | |
item.place = (imprint.imprint_place || ''); | |
item.publisher = (imprint.imprint_name || ''); | |
item.date = (imprint.imprint_date || ''); | |
if (data.notes) { | |
item.notes.push(data.notes[0]); | |
} | |
if (imprint.geo_info && imprint.geo_info[0].geonames_id) { | |
item.notes.push('Geonames identifier of printing place: ' + imprint.geo_info[0].geonames_id); | |
} | |
if (data.references) { | |
var concatRef = ''; | |
for (var i in data.references) { | |
var ref = data.references[i]; | |
var refName = (ref.reference_name || ''); | |
var refLoc = (ref.reference_location_in_source || ''); | |
concatRef += (refName + ' ' + refLoc + '; '); | |
} | |
concatRef = concatRef.replace(/; $/, ''); | |
item.notes.push('References: ' + concatRef); | |
} | |
item.callNumber = 'ISTC ' + jsonObject._id; | |
item.language = (data.language_of_item || ''); | |
item.libraryCatalog = 'Incunabula Short Title Catalogue (ISTC)'; | |
item.tags = ['incunabula', 'istc']; | |
item.accessed = new Date().toString(); | |
// // Uncomment the following if you always want to save the page as attachment: | |
// item.attachments = [{ | |
// url: url.replace('?format=json', ''), | |
// title: "ISTC", | |
// mimeType: "text/html", | |
// snapshot: true | |
// }]; | |
item.complete(); | |
} | |
/** BEGIN TEST CASES **/ | |
var testCases = [ | |
{ | |
"type": "web", | |
"url": "http://data.cerl.org/istc/if00117000", | |
"items": [ | |
{ | |
"itemType": "book", | |
"title": "Propositiones ex omnibus Aristotelis libris excerptae. Add: Benedictus Soncinas", | |
"creators": [ | |
{ | |
"firstName": "Theophilus de", | |
"lastName": "Ferrariis", | |
"creatorType": "author" | |
} | |
], | |
"date": "3 Aug. 1493", | |
"callNumber": "ISTC if00117000", | |
"language": "lat", | |
"libraryCatalog": "Incunabula Short Title Catalogue (ISTC)", | |
"place": "Venice", | |
"publisher": "Johannes and Gregorius de Gregoriis, de Forlivio, for Alexander Calcedonius", | |
"shortTitle": "Propositiones ex omnibus Aristotelis libris excerptae. Add", | |
"url": "http://data.cerl.org/istc/if00117000", | |
"attachments": [], | |
"tags": [ | |
"incunabula", | |
"istc" | |
], | |
"notes": [ | |
"Contains extracts from Latin translations of Aristotle by Leonardus Brunus Aretinus, etc. The translation of De mirabilibus auscultationibus by Antonius Beccaria is given entire (ff.113-128v)", | |
"Geonames identifier of printing place: 3164603", | |
"References: Goff F117; HC(+Add) 6997* ; Klebs 395.1; Pell 4777; Buffévent 199; Fernillot 239; Parguez 426; Zehnacker 878; Polain(B) 1475; IGI 3840; IBP 2172; IBPort 705; IBE 2419; SI 1519; CCIR F-6; IJL2 170; Badalić(Croatia) 444; Madsen 1571; Mendes 524; Martín Abad F-17; Sallander 1716; Coll(S) 1233; Sack(Freiburg) 1426; Hubay(Augsburg) 802; Voull(Trier) 1915; Schlechter-Ries 1707; Voull(B) 3875; Günt(L) 3226; Walsh 1986, 1987; Bod-inc F-022; Sheppard 3898; Rhodes(Oxford Colleges) 768; Pr 4531; BMC V 344; BSB-Ink F-82; GW 9826" | |
], | |
"seeAlso": [] | |
} | |
] | |
}, | |
{ | |
"type": "web", | |
"url": "http://data.cerl.org/istc/_search?query=aristotle&from=0&size=10&mode=default&sort=default", | |
"items": "multiple" | |
} | |
] | |
/** END TEST CASES **/ |