doc.location is null error with current translator template
I updated to Zotero 6 recently and the translator template changed accordingly.
With the new code templates I always get the error "doc.location is null" when multiple items are expected to be detected. Single items are working as always.
I created a Test-Multiple translator, where I used the templates for "web translator" and "Embedded Metadata" and adapted the CSS selectors according to the translator "Der Freitag".
17:37:33 TranslatorTester: Running 1 test for Test-Multiple
17:37:33 TranslatorTester: Running Test-Multiple Test 1
17:37:34 TranslatorTester: Translating https://www.freitag.de/@@search?SearchableText=test
17:37:34 Translation using Test-Multiple failed:
TypeError: doc.location is null
Zotero.Translate.Web.prototype.setDocument@chrome://zotero/content/xpcom/translate/src/translation/translate.js:2002:2
loadTranslator/safeTranslator.setDocument@chrome://zotero/content/xpcom/translate/src/translation/translate.js:322:13
scrape@chrome://zotero/content/xpcom/translation/translate_firefox.js line 425 > eval:92:2
doWeb/</<@chrome://zotero/content/xpcom/translation/translate_firefox.js line 425 > eval:79:51
url => https://www.freitag.de/@@search?SearchableText=test
downloadAssociatedFiles => true
automaticSnapshots => true
17:37:34 TranslatorTester: Test-Multiple Test 1: failed (Translation failed: TypeError: doc.location is null)
With the new code templates I always get the error "doc.location is null" when multiple items are expected to be detected. Single items are working as always.
I created a Test-Multiple translator, where I used the templates for "web translator" and "Embedded Metadata" and adapted the CSS selectors according to the translator "Der Freitag".
17:37:33 TranslatorTester: Running 1 test for Test-Multiple
17:37:33 TranslatorTester: Running Test-Multiple Test 1
17:37:34 TranslatorTester: Translating https://www.freitag.de/@@search?SearchableText=test
17:37:34 Translation using Test-Multiple failed:
TypeError: doc.location is null
Zotero.Translate.Web.prototype.setDocument@chrome://zotero/content/xpcom/translate/src/translation/translate.js:2002:2
loadTranslator/safeTranslator.setDocument@chrome://zotero/content/xpcom/translate/src/translation/translate.js:322:13
scrape@chrome://zotero/content/xpcom/translation/translate_firefox.js line 425 > eval:92:2
doWeb/</<@chrome://zotero/content/xpcom/translation/translate_firefox.js line 425 > eval:79:51
url => https://www.freitag.de/@@search?SearchableText=test
downloadAssociatedFiles => true
automaticSnapshots => true
17:37:34 TranslatorTester: Test-Multiple Test 1: failed (Translation failed: TypeError: doc.location is null)
Upgrade Storage
let articleDataTagSelector = 'script.qa-structured-data[type="application/ld+json"]';
async function detectWeb(doc, url) {
if (doc.querySelector(articleDataTagSelector)) {
let type = JSON.parse(text(doc, articleDataTagSelector))['@type'];
if (type == 'NewsArticle'
|| (Array.isArray(type) && type.includes('NewsArticle'))
) {
return "newspaperArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// TODO: adjust the CSS selector
var rows = doc.querySelectorAll('.o-search-results__container .c-article-card a.js-article-card-url');
for (let row of rows) {
// TODO: check and maybe adjust
let href = row.href;
// TODO: check and maybe adjust
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
[
{
"type": "web",
"url": "https://www.freitag.de/@@search?SearchableText=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.freitag.de/autoren/der-freitag/201evolksverdummung-ist-nicht-links201c",
"items": [
{
"itemType": "newspaperArticle",
"title": "Im Gespräch - „Volksverdummung ist nicht links“",
"creators": [],
"abstractNote": "Sigmar Gabriel attackiert im Freitag-Interview den griechischen Linken Alexis Tsipras. Die Piratenpartei hält der SPD-Chef für ein Zeitgeist-Phänomen",
"language": "de",
"libraryCatalog": "www.freitag.de",
"section": "News",
"url": "https://www.freitag.de/autoren/der-freitag/201evolksverdummung-ist-nicht-links201c",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Die Wochenzeitung"
},
{
"tag": "Freitag"
},
{
"tag": "der Freitag"
},
{
"tag": "inland"
},
{
"tag": "piraten"
},
{
"tag": "sigmar gabriel"
},
{
"tag": "spd"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
requestDocumentnot correctly adding alocationproperty to the returned document.)The error occurred while testing in Scaffold, too (the error log in my first post here). Scaffold is the Translator editor or am I mistaken?