316 lines
8.2 KiB
JavaScript
316 lines
8.2 KiB
JavaScript
{
|
|
"translatorID": "b10bf941-12e9-4188-be04-f6357fa594a0",
|
|
"translatorType": 4,
|
|
"label": "Old Bailey Online",
|
|
"creator": "Sharon Howard and Adam Crymble",
|
|
"target": "^https?://www\\.oldbaileyonline\\.org/",
|
|
"minVersion": "3.0",
|
|
"maxVersion": null,
|
|
"priority": 100,
|
|
"inRepository": true,
|
|
"browserSupport": "gcsibv",
|
|
"lastUpdated": "2025-05-08 16:45:00"
|
|
}
|
|
|
|
/*
|
|
***** BEGIN LICENSE BLOCK *****
|
|
|
|
Copyright © 2024 Sharon Howard
|
|
|
|
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 *****
|
|
*/
|
|
|
|
/* new URLs
|
|
// trial report: /record/t18000115-12 [case]
|
|
// OA: /record/OA16760705 [book]
|
|
// session: /record/16740429 [book]
|
|
// other div types /record/[afso - anything else?] [book section might work for these]
|
|
// api: https://www.dhi.ac.uk/api/data/oldbailey_record_single?idkey=t17210419-18
|
|
*/
|
|
|
|
function detectWeb(doc, url) {
|
|
if (url.includes('/record/t')) {
|
|
return "case";
|
|
}
|
|
else if (url.includes('/record/1')) {
|
|
return "book";
|
|
}
|
|
else if (url.includes('/record/OA')) {
|
|
return "book";
|
|
|
|
// multiples are not doable at present
|
|
// } else if (url.includes('/search/') && getSearchResults(doc, true)) {
|
|
// return 'multiple';
|
|
// }
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* may be possible to reinstate this in the longer term but not at present.
|
|
function getSearchResults(doc, checkOnly) {
|
|
// have to use api endpoint. https://www.dhi.ac.uk/api/data/oldbailey_record?(query string)
|
|
// several types of search seem not to be accessible via the api (statistics, OAs, associated records)
|
|
// keyword and name searches need to be able to handle any Proceedings div type, not just trials
|
|
// (may be doable, but much more complicated code)
|
|
}*/
|
|
|
|
async function doWeb(doc, url) {
|
|
var item = new Zotero.Item();
|
|
|
|
let rgx = /(\bt1[^-]+-[0-9]+[a-z]?|OA1[0-9]+[a-z]?|\b1[0-9]{7}[AE]?$)/;
|
|
let id = url.match(rgx)[0];
|
|
|
|
let jsonURL = `https://www.dhi.ac.uk/api/data/oldbailey_record_single?idkey=${id}`;
|
|
let json = (await requestJSON(jsonURL)).hits.hits[0]._source;
|
|
|
|
let metadata = json.metadata;
|
|
let mParsed = new DOMParser().parseFromString(metadata, 'text/html');
|
|
let mTable = mParsed.querySelector("table");
|
|
|
|
// "Date" works for session, t and OA
|
|
let niceDate = ZU.xpathText(mTable, '//tr[contains(th, "Date")]/td[1]');
|
|
|
|
// text type
|
|
let textType = ZU.xpathText(mTable, '//tr[contains(th, "Text type")]/td[1]');
|
|
|
|
if (url.includes('/record/t1')) {
|
|
item.itemType = "case";
|
|
|
|
var sessDate = id.substring(1, 5) + "/" + id.substring(5, 7) + "/" + id.substring(7, 9);
|
|
|
|
// names for trial defendants.
|
|
var names = ZU.xpathText(mTable, '//tr[contains(th, "Defendant")]/td[1]');
|
|
var namesCleaned = ZU.capitalizeTitle(names.toLowerCase(), true);
|
|
|
|
var offencesList = ZU.xpathText(mTable, '//tr[contains(th, "Offences")]/td[1]');
|
|
var offences = ZU.xpath(mTable, '//tr[contains(th, "Offences")]/td[1]/a');
|
|
for (let o of offences) {
|
|
item.tags.push(o.textContent);
|
|
}
|
|
|
|
var verdicts = ZU.xpath(mTable, '//tr[contains(th, "Verdicts")]/td[1]/a');
|
|
for (let v of verdicts) {
|
|
item.tags.push(v.textContent);
|
|
}
|
|
|
|
var sentences = ZU.xpath(mTable, '//tr[contains(th, "Punishments")]/td[1]/a');
|
|
for (let s of sentences) {
|
|
item.tags.push(s.textContent);
|
|
}
|
|
|
|
var itemTitle = "Trial of " + namesCleaned + ": " + offencesList + ", " + niceDate;
|
|
item.title = itemTitle;
|
|
item.date = ZU.strToISO(sessDate);
|
|
item.docketNumber = json.idkey;
|
|
item.court = "Central Criminal Court, London";
|
|
}
|
|
|
|
else if (url.includes('record/OA1')) {
|
|
item.itemType = "book";
|
|
|
|
var oaDate = id.substring(2, 6) + "/" + id.substring(6, 8) + "/" + id.substring(8, 10);
|
|
var oaTitle = textType + ", " + niceDate;
|
|
|
|
item.date = ZU.strToISO(oaDate);
|
|
item.title = oaTitle;
|
|
}
|
|
|
|
else if (url.includes('record/1')) {
|
|
item.itemType = "book";
|
|
|
|
var sessionDate = id.substring(0, 4) + "/" + id.substring(4, 6) + "/" + id.substring(6, 8);
|
|
var sessionTitle = textType + ", " + niceDate;
|
|
|
|
item.date = ZU.strToISO(sessionDate);
|
|
item.title = sessionTitle;
|
|
}
|
|
|
|
item.extra = "Reference Number: " + json.idkey;
|
|
|
|
item.url = url;
|
|
|
|
item.complete();
|
|
}
|
|
|
|
/** BEGIN TEST CASES **/
|
|
var testCases = [
|
|
{
|
|
"type": "web",
|
|
"url": "https://www.oldbaileyonline.org/record/OA17110421",
|
|
"items": [
|
|
{
|
|
"itemType": "book",
|
|
"title": "Ordinary's Account, 21st April 1711",
|
|
"creators": [],
|
|
"date": "1711-04-21",
|
|
"extra": "Reference Number: OA17110421",
|
|
"libraryCatalog": "Old Bailey Online",
|
|
"url": "https://www.oldbaileyonline.org/record/OA17110421",
|
|
"attachments": [],
|
|
"tags": [],
|
|
"notes": [],
|
|
"seeAlso": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "web",
|
|
"url": "https://www.oldbaileyonline.org/record/16740429",
|
|
"items": [
|
|
{
|
|
"itemType": "book",
|
|
"title": "Sessions paper, 29th April 1674",
|
|
"creators": [],
|
|
"date": "1674-04-29",
|
|
"extra": "Reference Number: 16740429",
|
|
"libraryCatalog": "Old Bailey Online",
|
|
"url": "https://www.oldbaileyonline.org/record/16740429",
|
|
"attachments": [],
|
|
"tags": [],
|
|
"notes": [],
|
|
"seeAlso": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "web",
|
|
"url": "https://www.oldbaileyonline.org/record/t18000115-12",
|
|
"items": [
|
|
{
|
|
"itemType": "case",
|
|
"caseName": "Trial of Peter Asterbawd, Andrew Forsman: Theft > Burglary, 15th January 1800",
|
|
"creators": [],
|
|
"dateDecided": "1800-01-15",
|
|
"court": "Central Criminal Court, London",
|
|
"docketNumber": "t18000115-12",
|
|
"extra": "Reference Number: t18000115-12",
|
|
"shortTitle": "Trial of Peter Asterbawd, Andrew Forsman",
|
|
"url": "https://www.oldbaileyonline.org/record/t18000115-12",
|
|
"attachments": [],
|
|
"tags": [
|
|
{
|
|
"tag": "Burglary"
|
|
},
|
|
{
|
|
"tag": "Fine"
|
|
},
|
|
{
|
|
"tag": "Guilty"
|
|
},
|
|
{
|
|
"tag": "House of correction"
|
|
},
|
|
{
|
|
"tag": "Imprisonment"
|
|
},
|
|
{
|
|
"tag": "Lesser offence"
|
|
},
|
|
{
|
|
"tag": "Miscellaneous Punishment"
|
|
},
|
|
{
|
|
"tag": "Not guilty"
|
|
},
|
|
{
|
|
"tag": "Theft"
|
|
}
|
|
],
|
|
"notes": [],
|
|
"seeAlso": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "web",
|
|
"url": "https://www.oldbaileyonline.org/record/t17340911-7",
|
|
"items": [
|
|
{
|
|
"itemType": "case",
|
|
"caseName": "Trial of Judith Cupid: Theft > Theft from place, 11th September 1734",
|
|
"creators": [],
|
|
"dateDecided": "1734-09-11",
|
|
"court": "Central Criminal Court, London",
|
|
"docketNumber": "t17340911-7",
|
|
"extra": "Reference Number: t17340911-7",
|
|
"shortTitle": "Trial of Judith Cupid",
|
|
"url": "https://www.oldbaileyonline.org/record/t17340911-7",
|
|
"attachments": [],
|
|
"tags": [
|
|
{
|
|
"tag": "Guilty"
|
|
},
|
|
{
|
|
"tag": "Theft"
|
|
},
|
|
{
|
|
"tag": "Theft from place"
|
|
},
|
|
{
|
|
"tag": "Theft under 40s"
|
|
},
|
|
{
|
|
"tag": "Transportation"
|
|
}
|
|
],
|
|
"notes": [],
|
|
"seeAlso": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "web",
|
|
"url": "https://www.oldbaileyonline.org/record/16810117A",
|
|
"items": [
|
|
{
|
|
"itemType": "book",
|
|
"title": "Sessions paper, 17th January 1681",
|
|
"creators": [],
|
|
"date": "1681-01-17",
|
|
"extra": "Reference Number: 16810117A",
|
|
"libraryCatalog": "Old Bailey Online",
|
|
"url": "https://www.oldbaileyonline.org/record/16810117A",
|
|
"attachments": [],
|
|
"tags": [],
|
|
"notes": [],
|
|
"seeAlso": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "web",
|
|
"url": "https://www.oldbaileyonline.org/record/OA16850506A",
|
|
"items": [
|
|
{
|
|
"itemType": "book",
|
|
"title": "Ordinary's Account, 6th May 1685",
|
|
"creators": [],
|
|
"date": "1685-05-06",
|
|
"extra": "Reference Number: OA16850506",
|
|
"libraryCatalog": "Old Bailey Online",
|
|
"url": "https://www.oldbaileyonline.org/record/OA16850506A",
|
|
"attachments": [],
|
|
"tags": [],
|
|
"notes": [],
|
|
"seeAlso": []
|
|
}
|
|
]
|
|
}
|
|
]
|
|
/** END TEST CASES **/
|