116 lines
3.5 KiB
JavaScript
116 lines
3.5 KiB
JavaScript
{
|
|
"translatorID":"80bc4fd3-747c-4dc2-86e9-da7b251e1407",
|
|
"translatorType":4,
|
|
"label":"Journal of Machine Learning Research",
|
|
"creator":"Fei Qi",
|
|
"target":"^http://jmlr\\.csail\\.mit\\.edu/papers",
|
|
"minVersion":"1.0.0b4.r5",
|
|
"maxVersion":"",
|
|
"priority":100,
|
|
"inRepository":false,
|
|
"lastUpdated":"2009-05-05 07:15:00"
|
|
}
|
|
|
|
function detectWeb(doc, url) {
|
|
var contRe = /(v\d+|topic|special)/;
|
|
var m = contRe.exec( url );
|
|
if (m) {
|
|
if( doc.title.match( "JMLR" ) )
|
|
return "multiple";
|
|
else
|
|
return "journalArticle";
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function scrape( doc, url ) {
|
|
var n = doc.documentElement.namespaceURI;
|
|
var ns = n ? function(prefix) {} : null;
|
|
|
|
var item = new Zotero.Item( "journalArticle" );
|
|
item.url = doc.location.href;
|
|
item.publicationTitle = "Journal of Machine Learning Research";
|
|
|
|
// Zotero.debug( 'retrieving title' );
|
|
var title = doc.evaluate( '//div[@id="content"]/h2', doc, ns,
|
|
XPathResult.ANY_TYPE, null ).iterateNext();
|
|
if( title ){
|
|
var titlecontent = title.textContent.replace( /^\s+/, '' );
|
|
item.title = titlecontent.replace( /\s+$/, '' );
|
|
}
|
|
|
|
var refline = doc.evaluate( '//div[@id="content"]/p', doc, ns,
|
|
XPathResult.ANY_TYPE, null ).iterateNext();
|
|
if( refline ) {
|
|
var info = refline.textContent.split( ';' );
|
|
var authors = info[0].split( ',' );
|
|
for ( var j = 0; j < authors.length; j++ ){
|
|
item.creators.push( Zotero.Utilities.cleanAuthor( authors[j], "author" ) );
|
|
}
|
|
// Zotero.debug( 'retrieving publication info' );
|
|
var volissRe = /\s*(\d+)\(\s*(\w+)\s*\):\s*(\d+\s*--\s*\d+),\s*(\d+)./;
|
|
var voliss = info[1].match( volissRe );
|
|
item.volume = voliss[1];
|
|
item.date = voliss[2] + ', ' + voliss[4];
|
|
item.pages = voliss[3];
|
|
}
|
|
|
|
var text = doc.evaluate( '//div[@id="content"]', doc, ns,
|
|
XPathResult.ANY_TYPE, null ).iterateNext();
|
|
// Zotero.debug( doc.textContent );
|
|
var full = text.textContent.split( 'Abstract' );
|
|
var absatt = full[1].split( '[abs]' );
|
|
var abs =absatt[0].replace( /^\s+/, '' );
|
|
item.abstractNote = abs.replace( /\s+$/, '' );
|
|
//Zotero.debug( item.abstractNote );
|
|
|
|
var atts = doc.evaluate( '//div[@id="content"]//a', doc, ns,
|
|
XPathResult.ANY_TYPE, null );
|
|
var att = atts.iterateNext();
|
|
while( att ){
|
|
// Zotero.debug( att.textContent + ' VS ' + att.href );
|
|
if( 0 <= att.textContent.search( 'pdf' ) ) {
|
|
item.attachments = [ {url:att.href,
|
|
title:item.title,
|
|
mimeType:"application/pdf"} ];
|
|
break;
|
|
}
|
|
att = atts.iterateNext();
|
|
}
|
|
item.complete();
|
|
}
|
|
|
|
function doWeb( doc, url ) {
|
|
var arts = new Array();
|
|
if (detectWeb(doc, url) == "multiple") {
|
|
var n = doc.documentElement.namespaceURI;
|
|
var ns = n ? function(prefix) {} : null;
|
|
// Search page
|
|
var items = new Object();
|
|
var titles = doc.evaluate( '//div[@id="content"]//dt', doc, ns,
|
|
XPathResult.ANY_TYPE, null );
|
|
var urls = doc.evaluate( '//div[@id="content"]//dd/a', doc, ns,
|
|
XPathResult.ANY_TYPE, null );
|
|
if( titles && urls ) {
|
|
var title = titles.iterateNext();
|
|
var url = urls.iterateNext();
|
|
while( title ) {
|
|
while( 0 > url.textContent.search( 'abs' ) )
|
|
url = urls.iterateNext();
|
|
// Zotero.debug( title.textContent + ' AT ' + url.href );
|
|
items[url.href] = title.textContent;
|
|
title = titles.iterateNext();
|
|
url = urls.iterateNext();
|
|
}
|
|
}
|
|
items = Zotero.selectItems(items);
|
|
for (var item in items) {
|
|
arts.push(item);
|
|
}
|
|
} else {
|
|
arts.push(url);
|
|
}
|
|
|
|
Zotero.Utilities.processDocuments( arts, scrape, function() {Zotero.done();});
|
|
Zotero.wait();
|
|
}
|