Permalink
1 comment
on commit
sign in to comment.
Browse files
Fixes and Updates - L (#1178)
* Fix authors in La Croix.js * Update framework fand fix LA Times.js * Update Lagen.nu.js * Update tests in Le Figaro.js * Complete Rewrite of Le Devoir.js * Update tests in Library Catalog (Amicus).js * Update framework in LiveJournal.js * Update framework in London Review of Books.js * Update Lulu.js * Rewrite and automatic rename Le monde diplomatique.js
- Loading branch information...
Showing
with
561 additions
and 487 deletions.
- +86 −47 LA Times.js
- +2 −2 La Croix.js
- +61 −70 Lagen.nu.js
- +144 −119 Le Devoir.js
- +1 −1 Le Figaro.js
- +0 −169 Le Monde Diplomatique_de.js
- +200 −0 Le monde diplomatique.js
- +13 −13 Library Catalog (Amicus).js
- +32 −41 LiveJournal.js
- +13 −16 London Review of Books.js
- +9 −9 Lulu.js
@@ -1,142 +1,167 @@ | |||
{ | |||
"translatorID":"d1605270-d7dc-459f-9875-74ad8dde1f7d", | |||
"translatorType":4, | |||
"label":"Le Devoir", | |||
"creator":"Adam Crymble", | |||
"target":"http://www.ledevoir.com", | |||
"minVersion":"1.0.0b4.r5", | |||
"maxVersion":"", | |||
"priority":100, | |||
"inRepository":true, | |||
"lastUpdated":"2008-08-21 15:45:00" | |||
"translatorID": "d1605270-d7dc-459f-9875-74ad8dde1f7d", | |||
"label": "Le Devoir", | |||
"creator": "Philipp Zumstein", | |||
"target": "https?://www\\.ledevoir\\.com", | |||
"minVersion": "3.0", | |||
"maxVersion": "", | |||
"priority": 100, | |||
"inRepository": true, | |||
"translatorType": 4, | |||
"browserSupport": "gcsibv", | |||
"lastUpdated": "2016-11-04 07:35:05" | |||
} | |||
|
|||
/* | |||
***** BEGIN LICENSE BLOCK ***** | |||
Copyright © 2016 Philipp Zumstein | |||
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 (doc.location.href.match("Recherche")) { | |||
if (url.indexOf("/recherche")>-1) { | |||
return "multiple"; | |||
} else if (doc.evaluate('//div[@id="autresArticles"]/p', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { | |||
} else if (ZU.xpathText(doc, '//article[@id="article"]')) { | |||
return "newspaperArticle"; | |||
} | |||
} | |||
|
|||
//Le Devoir Translator. Code by Adam Crymble | |||
|
|||
function scrape(doc, url) { | |||
function getSearchResults(doc, checkOnly) { | |||
var items = {}; | |||
var found = false; | |||
var rows = ZU.xpath(doc, '//article/h2/a'); | |||
for (var i=0; i<rows.length; i++) { | |||
var href = rows[i].href; | |||
var title = ZU.trimInternal(rows[i].textContent); | |||
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), function (items) { | |||
if (!items) { | |||
return true; | |||
} | |||
var articles = []; | |||
for (var i in items) { | |||
articles.push(i); | |||
} | |||
ZU.processDocuments(articles, scrape); | |||
}); | |||
} else { | |||
scrape(doc, url); | |||
} | |||
} | |||
|
|||
var namespace = doc.documentElement.namespaceURI; | |||
var nsResolver = namespace ? function(prefix) { | |||
if (prefix == 'x') return namespace; else return null; | |||
} : null; | |||
|
|||
var tagsContent = new Array(); | |||
function scrape(doc, url) { | |||
|
|||
var newItem = new Zotero.Item("newspaperArticle"); | |||
newItem.title = ZU.xpathText(doc, '//h1'); | |||
|
|||
var contents = doc.evaluate('//div[@id="autresArticles"]/p', doc, nsResolver, XPathResult.ANY_TYPE, null); | |||
|
|||
var j = 0; | |||
var n = 0; | |||
var contentsArray = new Array(); | |||
var contents1; | |||
var specs = ZU.xpath(doc, '//span[@class="specs_content"]'); | |||
var date = ZU.xpathText(specs, './text()[1]'); | |||
newItem.date = ZU.strToISO(date); | |||
|
|||
var authors = ZU.xpath(specs, './a[contains(@href, "/auteur")]'); | |||
for (var i=0; i<authors.length; i++) { | |||
newItem.creators.push(ZU.cleanAuthor(authors[i].textContent, "author")); | |||
} | |||
|
|||
newItem.section = ZU.xpathText(specs, './a[@class="section"]'); | |||
|
|||
newItem.abstractNote = ZU.xpathText(doc, '//meta[@property="og:description"]/@content'); | |||
|
|||
while (contents1 = contents.iterateNext()) { | |||
contentsArray.push(contents1.textContent); | |||
j++; | |||
} | |||
|
|||
var author; | |||
var author1; | |||
var author2; | |||
|
|||
if (j > 1) { | |||
for (var i in contentsArray) { | |||
if (contentsArray[i].match("Édition du ")) { | |||
var date1 = contentsArray[i].split("Édition du "); | |||
|
|||
newItem.date = date1[1]; | |||
|
|||
if (date1[0].match(/\w/)) { | |||
|
|||
author = date1[0]; | |||
if (author.match(/\n/)) { | |||
author1 = author.split(/\n/); | |||
|
|||
for (var k = 0; k < author1.length; k++) { | |||
if (author1[k].match(/\w/) && author1[k].match(", ")) { | |||
author2 = author1[k].split(", "); | |||
if (author2[0].match(/\w/)) { | |||
newItem.creators.push(Zotero.Utilities.cleanAuthor(author2[0], "author")); | |||
} else { | |||
newItem.creators.push(Zotero.Utilities.cleanAuthor(author2[1], "author")); | |||
} | |||
} else if (author1[k].match(/\w/) && !author1[k].match(", ")) { | |||
newItem.creators.push(Zotero.Utilities.cleanAuthor(author1[k], "author")); | |||
} | |||
} | |||
} else if (author.match(" et ")) { | |||
author1 = author.split(" et "); | |||
for (var k in author1) { | |||
newItem.creators.push(Zotero.Utilities.cleanAuthor(author1[k], "author")); | |||
} | |||
} else if (author.match(", ")) { | |||
author1 = author.split(", "); | |||
for (var k in author1) { | |||
newItem.creators.push(Zotero.Utilities.cleanAuthor(author1[k], "author")); | |||
} | |||
} else { | |||
newItem.creators.push(Zotero.Utilities.cleanAuthor(date1[0], "author")); | |||
} | |||
} | |||
} else if (contentsArray[i].match("Mots clés")) { | |||
contentsArray[i] = contentsArray[i].substr(11); | |||
if (contentsArray[i].match(", ")) { | |||
tagsContent = contentsArray[i].split(", "); | |||
} else { | |||
newItem.tags = ontentsArray[i]; | |||
n = 1; | |||
} | |||
} | |||
} | |||
} | |||
|
|||
if (n == 0 && tagsContent.length>1) { | |||
for (var i = 0; i < tagsContent.length; i++) { | |||
newItem.tags[i] = tagsContent[i]; | |||
} | |||
} | |||
newItem.language = ZU.xpathText(doc, '//meta[@name="language"]/@content'); | |||
|
|||
newItem.title = doc.title; | |||
newItem.url = doc.location.href; | |||
newItem.url = url; | |||
newItem.publicationTitle = "Le Devoir"; | |||
newItem.ISSN = "0319-0722"; | |||
|
|||
newItem.complete(); | |||
} | |||
|
|||
function doWeb(doc, url) { | |||
var namespace = doc.documentElement.namespaceURI; | |||
var nsResolver = namespace ? function(prefix) { | |||
if (prefix == 'x') return namespace; else return null; | |||
} : null; | |||
|
|||
var articles = new Array(); | |||
|
|||
if (detectWeb(doc, url) == "multiple") { | |||
var items = new Object(); | |||
|
|||
var titles = doc.evaluate('//td[2]/a', doc, nsResolver, XPathResult.ANY_TYPE, null); | |||
|
|||
var next_title; | |||
while (next_title = titles.iterateNext()) { | |||
items[next_title.href] = next_title.textContent; | |||
} | |||
items = Zotero.selectItems(items); | |||
for (var i in items) { | |||
articles.push(i); | |||
} | |||
} else { | |||
articles = [url]; | |||
/** BEGIN TEST CASES **/ | |||
var testCases = [ | |||
{ | |||
"type": "web", | |||
"url": "http://www.ledevoir.com/politique/quebec/483793/journalistes-surveilles-le-comite-d-experts-sur-travail-des-policiers-aura-les-pouvoirs-d-une-commission-d-enquete", | |||
"items": [ | |||
{ | |||
"itemType": "newspaperArticle", | |||
"title": "Des dérives policières alarmantes", | |||
"creators": [ | |||
{ | |||
"firstName": "Marco", | |||
"lastName": "Bélair-Cirino", | |||
"creatorType": "author" | |||
} | |||
], | |||
"date": "2016-11-04", | |||
"ISSN": "0319-0722", | |||
"abstractNote": "Après avoir appris la mise sur pied d’une commission d’enquête sur la liberté de la presse, la salle des nouvelles de Radio-Canada a été frappée de consternation. La Sûreté du Québec a réussi à mettre la main sur des liasses de relevés téléphoniques, s’échelonnant de 2008 à 2013, des journalistes d’enquête Alain Gravel, Marie-Maude Denis et Isabelle Richer.", | |||
"language": "fr", | |||
"libraryCatalog": "Le Devoir", | |||
"publicationTitle": "Le Devoir", | |||
"section": "Québec", | |||
"url": "http://www.ledevoir.com/politique/quebec/483793/journalistes-surveilles-le-comite-d-experts-sur-travail-des-policiers-aura-les-pouvoirs-d-une-commission-d-enquete", | |||
"attachments": [], | |||
"tags": [], | |||
"notes": [], | |||
"seeAlso": [] | |||
} | |||
] | |||
}, | |||
{ | |||
"type": "web", | |||
"url": "http://www.ledevoir.com/societe/medias/110295/medias-l-ipi-appelle-a-la-liberte-de-presse", | |||
"items": [ | |||
{ | |||
"itemType": "newspaperArticle", | |||
"title": "Médias - L'IPI appelle à la liberté de presse", | |||
"creators": [], | |||
"date": "2006", | |||
"ISSN": "0319-0722", | |||
"abstractNote": "Édimbourg — Le directeur de l'Institut international de la presse (IPI), Johann Fritz, a appelé hier à Édimbourg les gouvernements du monde entier à défendre et renforcer la liberté de la presse menacée de toutes parts.", | |||
"language": "fr", | |||
"libraryCatalog": "Le Devoir", | |||
"publicationTitle": "Le Devoir", | |||
"url": "http://www.ledevoir.com/societe/medias/110295/medias-l-ipi-appelle-a-la-liberte-de-presse", | |||
"attachments": [], | |||
"tags": [], | |||
"notes": [], | |||
"seeAlso": [] | |||
} | |||
] | |||
}, | |||
{ | |||
"type": "web", | |||
"url": "http://www.ledevoir.com/recherche?expression=libert%C3%A9", | |||
"items": "multiple" | |||
} | |||
Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();}); | |||
Zotero.wait(); | |||
} | |||
] | |||
/** END TEST CASES **/ |
Oops, something went wrong.
This comment has been minimized.
adam3smith commented onNov 7, 2016
3a62b64
and, of course, thanks @zuphilip for all of these