Chrome/Safari-compatible NYTimes.com translator

This commit is contained in:
Simon Kornblith 2011-06-17 18:21:50 +00:00
parent e35c25e31d
commit 1695ab4bdf

View File

@ -3,32 +3,34 @@
"translatorType":4, "translatorType":4,
"label":"NYTimes.com", "label":"NYTimes.com",
"creator":"Simon Kornblith", "creator":"Simon Kornblith",
"target":"^https?://(?:query\\.nytimes\\.com/search/(?:alternate/)?query|(?:select\\.|www\\.)?nytimes\\.com/.)", "target":"^https?://(?:query\\.nytimes\\.com/search/(?:alternate/)?|(?:select\\.|www\\.)?nytimes\\.com/.)",
"minVersion":"1.0.0b3.r1", "minVersion":"1.0.0b3.r1",
"browserSupport":"gcs",
"maxVersion":"", "maxVersion":"",
"priority":100, "priority":100,
"inRepository":true, "inRepository":true,
"lastUpdated":"2011-03-21 20:48:32" "lastUpdated":"2011-06-17 18:21:52"
} }
function detectWeb(doc, url) { function detectWeb(doc, url) {
if(doc.title.substr(0, 30) == "The New York Times: Search for") { // Check for search results
var namespace = doc.documentElement.namespaceURI; var searchResults = doc.evaluate('//div[@id="search_results"]', doc, null,
var nsResolver = namespace ? function(prefix) { XPathResult.ANY_TYPE, null).iterateNext();
if (prefix == 'x') return namespace; else return null; if(searchResults) return "multiple";
} : null;
// Check for article meta tags
var result = doc.evaluate('//div[@id="srchContent"]', doc, nsResolver, var metaTags = doc.getElementsByTagName("meta");
XPathResult.ANY_TYPE, null).iterateNext(); var haveHdl = false;
if(result) { var haveByl = false;
return "multiple"; for(var i in metaTags) {
} if(metaTags[i].name === "hdl") {
} else { haveHdl = true;
var metaTags = doc.getElementsByTagName("meta"); } else if(metaTags[i].name == "byl") {
if(metaTags.namedItem("hdl") && metaTags.namedItem("byl")) { haveByl = true;
return "newspaperArticle";
} }
if(haveHdl && haveByl) return "newspaperArticle";
} }
return false;
} }
function associateMeta(newItem, metaTags, field, zoteroField) { function associateMeta(newItem, metaTags, field, zoteroField) {
@ -142,28 +144,18 @@ function scrape(doc, url) {
} }
function doWeb(doc, url) { function doWeb(doc, url) {
if(doc.title.substr(0, 30) == "The New York Times: Search for") { var searchResults = doc.evaluate('//div[@id="search_results"]', doc, null,
var namespace = doc.documentElement.namespaceURI; XPathResult.ANY_TYPE, null).iterateNext();
var nsResolver = namespace ? function(prefix) { if(searchResults) {
if (prefix == 'x') return namespace; else return null; var items = Zotero.Utilities.getItemArray(doc, searchResults, '^http://(?:select\.|www\.)nytimes.com/.*\.html(\\?|$)');
} : null;
var result = doc.evaluate('//div[@id="srchContent"]', doc, nsResolver,
XPathResult.ANY_TYPE, null).iterateNext();
var items = Zotero.Utilities.getItemArray(doc, result, '^http://(?:select\.|www\.)nytimes.com/.*\.html(\\?|$)');
items = Zotero.selectItems(items); items = Zotero.selectItems(items);
if(!items) return true;
if(!items) {
return true;
}
var urls = new Array(); var urls = [];
for(var i in items) { for(var i in items) urls.push(i);
urls.push(i);
}
Zotero.Utilities.HTTP.doGet(urls, function(text, response, url) { scrape(text, url) }, function() { Zotero.done(); }, null); Zotero.Utilities.HTTP.doGet(urls, function(text, response, url) { scrape(text, url) }, function() { Zotero.done(); }, null);
Zotero.wait(); Zotero.wait();
} else { } else {
scrape(doc); scrape(doc);