diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d4b853b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +nodejs/node_modules/ +npm-debug.log diff --git a/README.md b/README.md index 8f32ae0..e1aeb58 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,12 @@ ```bash istex-api-harvester --query hypertext --size 100 --fulltext 1 ``` +```bash +istex-api-harvester --query hypertext --size 100 --fulltext all\ +istex-api-harvester --query hypertext --size 100 --fulltext zip\ +istex-api-harvester --query hypertext --size 100 --fulltext pdf +``` + Les métadonnées au format MODS seront récupérées ainsi que le plein texte qui est la pluspart du temps au format pdf. Les données téléchargées sont stockées dans le répertoire "./springer/" Pour les deux premiers documents téléchargés, on aura par exemple les fichiers suivants qui seront créés : diff --git a/nodejs/istex-api-harvester.njs b/nodejs/istex-api-harvester.njs index 8730600..b761c54 100755 --- a/nodejs/istex-api-harvester.njs +++ b/nodejs/istex-api-harvester.njs @@ -52,6 +52,9 @@ console.log('Téléchargements terminés'); }); +var supportedTypes = ['all','txt','raw','pdf','tei','mods','tif','tiff','png','jpg','jpeg','zip','xml','html','gif']; + + // // Fonction de téléchargement d'une page // @@ -89,12 +92,16 @@ } }); if (program.fulltext) { + var wantedType = (supportedTypes.indexOf(program.fulltext.toLowerCase()) >= 0) ? program.fulltext.toLowerCase() : "pdf"; + if (program.fulltext) // extract the fulltext from the returned JSON - var fulltext = { url: '', filename: '' }; + var fulltext = []; item1.fulltext.forEach(function (item2) { - if (item2.type) { - fulltext.url = item2.uri; - fulltext.filename = item1.id + '.' + item2.type; + if (wantedType == 'all' || item2.type == wantedType) { + fulltext.push({ + url: '' + item2.uri, + filename: '' + item1.id + '.' + item2.type + }); } }); } @@ -104,7 +111,7 @@ // download the MODS function (callback) { var stream = fs.createWriteStream(dstPath + '/' + mods.filename); - var req = request.get(mods.url.replace('https', 'http')); + var req = request.get(mods.url); req.pipe(stream); stream.on('finish', function () { if (program.verbose) { @@ -117,16 +124,32 @@ // download the fulltext function (callback) { if (!program.fulltext) return callback(null); - var stream = fs.createWriteStream(dstPath + '/' + fulltext.filename); - var req = request.get(fulltext.url.replace('https', 'http')); - req.pipe(stream); - stream.on('finish', function () { - if (program.verbose) { - console.log(fulltext.filename); - } + console.log(fulltext); + + if (Array.isArray(fulltext)) { + async.map(fulltext, function(fulltextItem, cbMap) { + + + var stream = fs.createWriteStream(dstPath + '/' + fulltextItem.filename); + var req = request.get(fulltextItem.url); + req.pipe(stream); + stream.on('finish', function () { + if (program.verbose) { + console.log(fulltextItem.filename); + } + cbMap(null); + }); + stream.on('error', cbMap); + + + }, function(err, results){ callback(null); + }); - stream.on('error', callback); + } else { + callback(null); + } + }, ], function (err) { // MODS and fulltext downloaded