commit 4b4968a24ecf0695009b973b5e532976ece007d8
parent c1c9673dc6e5e7dca0687c12ede293ea64876e7c
Author: Avram Lyon <ajlyon@gmail.com>
Date: Thu, 5 May 2011 19:57:31 +0000
Trans: Fix for more IEEE problems
Diffstat:
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/translators/IEEE Xplore.js b/translators/IEEE Xplore.js
@@ -8,7 +8,7 @@
"maxVersion":"",
"priority":100,
"inRepository":true,
- "lastUpdated":"2011-01-11 04:31:00"
+ "lastUpdated":"2011-05-05 22:04:16"
}
function detectWeb(doc, url) {
@@ -30,7 +30,10 @@ function doWeb(doc, url) {
if (prefix == 'x') return namespace; else return null;
} : null;
- var articleRe = /[?&]ar(N|n)umber=([0-9]+)/;
+ var hostRe = new RegExp("^(https?://[^/]+)/");
+ var hostMatch = hostRe.exec(url);
+
+ var articleRe = /[?&]ar(?:N|n)umber=([0-9]+)/;
var m = articleRe.exec(url);
if(detectWeb(doc, url) == "multiple") {
@@ -59,12 +62,25 @@ function doWeb(doc, url) {
var urls = new Array();
for(var url in items) {
+ // Some pages don't show the metadata we need (http://forums.zotero.org/discussion/16283)
+ // No data: http://ieeexplore.ieee.org/search/srchabstract.jsp?tp=&arnumber=1397982
+ // Data: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1397982
+ var arnumber = url.match(/arnumber=(\d+)/)[1];
+ url = url.replace(/\/search\/.*$/, "/xpls/abs_all.jsp?arnumber="+arnumber);
urls.push(url);
}
Zotero.Utilities.processDocuments(urls, scrape, function () { Zotero.done(); });
Zotero.wait();
} else {
- scrape(doc, url);
+ if (url.indexOf("/search/") !== -1) {
+ // Address the same missing metadata problem as above
+ var arnumber = url.match(/arnumber=(\d+)/)[1];
+ url = url.replace(/\/search\/.*$/, "/xpls/abs_all.jsp?arnumber="+arnumber);
+ Zotero.Utilities.processDocuments([url], scrape, function () { Zotero.done(); });
+ Zotero.wait();
+ } else {
+ scrape(doc, url);
+ }
}
}
@@ -117,7 +133,8 @@ function scrape(doc,url) {
var row;
var rows;
- newItem.url = doc.location.href;
+ newItem.attachments = [];
+ newItem.tags = [];
var metaTags = doc.getElementsByTagName("meta");
var pages = [false, false];
@@ -164,7 +181,7 @@ function scrape(doc,url) {
&& value != "null" && value != "") newItem.language = value; break;
case "citation_doi": if (!newItem.DOI) newItem.DOI = value; break;
case "citation_abstract": newItem.abstractNote = value; break;
- case "citation_abstract_html_url": newItem.url = value; break;
+ case "citation_abstract_html_url": newItem.attachments.push({url:value, title:"IEEE Xplore Abstract Record", snapshot:false}); break;
case "citation_pdf_url": if(!pdf) pdf = value; break;
case "citation_keywords": newItem.tags.push(value); break;
case "citation_fulltext_html_url": if(!pdf) pdf = value; break;
@@ -182,7 +199,13 @@ function scrape(doc,url) {
Zotero.debug("Ignoring meta tag: " + tag + " => " + value);
}
}
- if (html) newItem.attachments = [{url:html, title:"IEEE Xplore Full Text HTML"}];
+
+ // Split if we have only one tag
+ if (newItem.tags.length == 1) {
+ newItem.tags = newItem.tags[0].split(";");
+ }
+
+ if (html) newItem.attachments.push({url:html, title:"IEEE Xplore Full Text HTML"});
if (pages[0] && pages[1]) newItem.pages = pages.join('-')
else newItem.pages = pages[0] ? pages[1] : (pages[1] ? pages[1] : "");