202 lines
5.6 KiB
JavaScript
202 lines
5.6 KiB
JavaScript
|
{
|
||
|
"translatorID": "22dd8e35-02da-4968-b306-6efe0779a48d",
|
||
|
"label": "newspapers.com",
|
||
|
"creator": "Peter Binkley",
|
||
|
"target": "^https?://www\\.newspapers\\.com/clip/",
|
||
|
"minVersion": "3.0",
|
||
|
"maxVersion": "",
|
||
|
"priority": 100,
|
||
|
"inRepository": true,
|
||
|
"translatorType": 4,
|
||
|
"browserSupport": "gcsibv",
|
||
|
"lastUpdated": "2019-05-09 03:46:53"
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
***** BEGIN LICENSE BLOCK *****
|
||
|
|
||
|
Copyright © 2017-2019 Peter Binkley
|
||
|
|
||
|
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) {
|
||
|
return "newspaperArticle";
|
||
|
}
|
||
|
|
||
|
function doWeb(doc, _url) {
|
||
|
var newItem = new Zotero.Item("newspaperArticle");
|
||
|
var scripts = doc.getElementsByTagName("script");
|
||
|
var json = '';
|
||
|
var jsonre = /var staPageDetail = JSON.parse\((.+?)\);/;
|
||
|
for (var i = 0; i < scripts.length; i++) {
|
||
|
var arr = scripts[i].textContent.match(jsonre);
|
||
|
if (arr) {
|
||
|
json = arr[1];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// one JSON.parse to unstringify the json string, and one to parse it into an object
|
||
|
// the replace fixes escaped apostrophes in the source, which JSON.parse considers invalid
|
||
|
var details = JSON.parse(JSON.parse(json.replace(/\\'/g, "'")));
|
||
|
|
||
|
var metaArr = {};
|
||
|
var metaTags = doc.getElementsByTagName("meta");
|
||
|
for (let metaTag of metaTags) {
|
||
|
if (metaTag.getAttribute("property")) {
|
||
|
metaArr[metaTag.getAttribute("property")] = metaTag.getAttribute("content");
|
||
|
}
|
||
|
}
|
||
|
newItem.title = details.citation.title;
|
||
|
// remove the unnecessary xid param
|
||
|
newItem.url = details.citation.url.replace(/\?xid=[0-9]*$/, "");
|
||
|
|
||
|
/*
|
||
|
The user can append the author to the title with a forward slash
|
||
|
e.g. "My Day / Eleanor Roosevelt"
|
||
|
*/
|
||
|
if (newItem.title.includes('/')) {
|
||
|
var tokens = newItem.title.split("/");
|
||
|
var authorString = tokens[1];
|
||
|
newItem.title = tokens[0].trim();
|
||
|
// multiple authors are separated with semicolons
|
||
|
var authors = authorString.split("; ");
|
||
|
for (let author of authors) {
|
||
|
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
newItem.abstractNote = details.media.note;
|
||
|
|
||
|
/*
|
||
|
<meta property="og:image" content="https://img0.newspapers.com/img/img?id=97710064&width=557&height=4616&crop=1150_215_589_4971&rotation=0&brightness=0&contrast=0&invert=0&ts=1467779959&h=e478152fd53dd7afc4e72a18c1dad4ea">
|
||
|
*/
|
||
|
newItem.attachments = [{
|
||
|
url: metaArr["og:image"],
|
||
|
title: "Image",
|
||
|
mimeType: "image/jpeg"
|
||
|
}];
|
||
|
|
||
|
newItem.publicationTitle = details.source.publisherName;
|
||
|
// details["source"]["title"] gives a string like
|
||
|
// "Newspapers.com - The Akron Beacon Journal - 1939-10-30 - Page Page 15"
|
||
|
var editiontokens = details.source.title.replace(/ - /g, "|").split("|");
|
||
|
if (editiontokens.length == 3) { // there's an edition label
|
||
|
newItem.edition = editiontokens[1];
|
||
|
}
|
||
|
newItem.pages = editiontokens.slice(-1)[0].replace(/Page/g, '');
|
||
|
newItem.date = details.source.publishedDate;
|
||
|
newItem.place = details.source.publishedLocation;
|
||
|
|
||
|
// handle empty title
|
||
|
if (newItem.title === "") {
|
||
|
newItem.title = "Clipped From " + newItem.publicationTitle;
|
||
|
}
|
||
|
newItem.complete();
|
||
|
}
|
||
|
|
||
|
/** BEGIN TEST CASES **/
|
||
|
var testCases = [
|
||
|
{
|
||
|
"type": "web",
|
||
|
"url": "https://www.newspapers.com/clip/7960447/my_day_eleanor_roosevelt/",
|
||
|
"items": [
|
||
|
{
|
||
|
"itemType": "newspaperArticle",
|
||
|
"title": "My Day",
|
||
|
"creators": [
|
||
|
{
|
||
|
"firstName": "Eleanor",
|
||
|
"lastName": "Roosevelt",
|
||
|
"creatorType": "author"
|
||
|
}
|
||
|
],
|
||
|
"date": "1939-10-30",
|
||
|
"libraryCatalog": "newspapers.com",
|
||
|
"pages": "15",
|
||
|
"place": "Akron, Ohio",
|
||
|
"publicationTitle": "The Akron Beacon Journal",
|
||
|
"url": "https://www.newspapers.com/clip/7960447/my_day_eleanor_roosevelt/",
|
||
|
"attachments": [
|
||
|
{
|
||
|
"title": "Image",
|
||
|
"mimeType": "image/jpeg"
|
||
|
}
|
||
|
],
|
||
|
"tags": [],
|
||
|
"notes": [],
|
||
|
"seeAlso": []
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"type": "web",
|
||
|
"url": "https://www.newspapers.com/clip/18535448/the_sunday_leader/",
|
||
|
"items": [
|
||
|
{
|
||
|
"itemType": "newspaperArticle",
|
||
|
"title": "Clipped From The Sunday Leader",
|
||
|
"creators": [],
|
||
|
"date": "1887-07-17",
|
||
|
"libraryCatalog": "newspapers.com",
|
||
|
"pages": "5",
|
||
|
"place": "Wilkes-Barre, Pennsylvania",
|
||
|
"publicationTitle": "The Sunday Leader",
|
||
|
"url": "https://www.newspapers.com/clip/18535448/the_sunday_leader/",
|
||
|
"attachments": [
|
||
|
{
|
||
|
"title": "Image",
|
||
|
"mimeType": "image/jpeg"
|
||
|
}
|
||
|
],
|
||
|
"tags": [],
|
||
|
"notes": [],
|
||
|
"seeAlso": []
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"type": "web",
|
||
|
"url": "https://www.newspapers.com/clip/31333699/driven_from_governors_office_ohio/",
|
||
|
"items": [
|
||
|
{
|
||
|
"itemType": "newspaperArticle",
|
||
|
"title": "Driven from Governor's Office, Ohio Relief Seekers Occupy a Church Today; Remain Defiant",
|
||
|
"creators": [],
|
||
|
"date": "1937-04-10",
|
||
|
"libraryCatalog": "newspapers.com",
|
||
|
"pages": "1",
|
||
|
"place": "Rushville, Indiana",
|
||
|
"publicationTitle": "Rushville Republican",
|
||
|
"url": "https://www.newspapers.com/clip/31333699/driven_from_governors_office_ohio/",
|
||
|
"attachments": [
|
||
|
{
|
||
|
"title": "Image",
|
||
|
"mimeType": "image/jpeg"
|
||
|
}
|
||
|
],
|
||
|
"tags": [],
|
||
|
"notes": [],
|
||
|
"seeAlso": []
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
/** END TEST CASES **/
|