mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-06-05 04:07:23 +02:00
* Lots of improvements to info extraction system
* MUCH faster browsing in file base * Better release year estimation * New tool: exiftool2desc
This commit is contained in:
parent
b8595f667d
commit
54a7f4f774
8 changed files with 226 additions and 80 deletions
|
@ -8,9 +8,68 @@
|
|||
|
||||
const exiftool = require('exiftool');
|
||||
const fs = require('fs');
|
||||
const moment = require('moment');
|
||||
|
||||
const TOOL_VERSION = '1.0.0.0';
|
||||
|
||||
// map fileTypes -> handlers
|
||||
const FILETYPE_HANDLERS = {};
|
||||
[ 'AIFF', 'APE', 'FLAC', 'OGG', 'MP3' ].forEach(ext => FILETYPE_HANDLERS[ext] = audioFile);
|
||||
[ 'PDF', 'DOC', 'DOCX', 'DOCM', 'ODB', 'ODC', 'ODF', 'ODG', 'ODI', 'ODP', 'ODS', 'ODT' ].forEach(ext => FILETYPE_HANDLERS[ext] = documentFile);
|
||||
[ 'PNG', 'JPEG', 'GIF', 'WEBP', 'XCF' ].forEach(ext => FILETYPE_HANDLERS[ext] = imageFile);
|
||||
|
||||
function audioFile(metadata) {
|
||||
let desc = `${metadata.artist||'Unknown Artist'} - ${metadata.title||'Unknown'} (`;
|
||||
if(metadata.year) {
|
||||
desc += `${metadata.year}, `;
|
||||
}
|
||||
desc += `${metadata.audioBitrate})`;
|
||||
return desc;
|
||||
}
|
||||
|
||||
function documentFile(metadata) {
|
||||
let desc = `${metadata.author||'Unknown Author'} - ${metadata.title||'Unknown'}`;
|
||||
const created = moment(metadata.createdate);
|
||||
if(created.isValid()) {
|
||||
desc += ` (${created.format('YYYY')})`;
|
||||
}
|
||||
return desc;
|
||||
}
|
||||
|
||||
function imageFile(metadata) {
|
||||
let desc = `${metadata.fileType} image (`;
|
||||
if(metadata.animationIterations) {
|
||||
desc += 'Animated, ';
|
||||
}
|
||||
desc += `${metadata.imageSize}px`;
|
||||
const created = moment(metadata.createdate);
|
||||
if(created.isValid()) {
|
||||
desc += `, ${created.format('YYYY')})`;
|
||||
} else {
|
||||
desc += ')';
|
||||
}
|
||||
return desc;
|
||||
}
|
||||
|
||||
function main() {
|
||||
const path = process.argv[2];
|
||||
const argv = exports.argv = require('minimist')(process.argv.slice(2), {
|
||||
alias : {
|
||||
h : 'help',
|
||||
v : 'version',
|
||||
}
|
||||
});
|
||||
|
||||
if(argv.version) {
|
||||
console.info(TOOL_VERSION);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(0 === argv._.length || argv.help) {
|
||||
console.info('usage: exiftool2desc.js [--version] [--help] PATH');
|
||||
return 0;
|
||||
}
|
||||
|
||||
const path = argv._[0];
|
||||
|
||||
fs.readFile(path, (err, data) => {
|
||||
if(err) {
|
||||
|
@ -19,26 +78,15 @@ function main() {
|
|||
|
||||
exiftool.metadata(data, (err, metadata) => {
|
||||
if(err) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
const handler = FILETYPE_HANDLERS[metadata.fileType];
|
||||
if(!handler) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch(metadata.fileType) {
|
||||
case 'AIFF' :
|
||||
case 'APE' :
|
||||
case 'FLAC' :
|
||||
case 'OGG' :
|
||||
case 'MP3' :
|
||||
console.log(`${metadata.artist||'Unknown Artist'} - ${metadata.title||'Unknown'} (${metadata.audioBitrate})`);
|
||||
break;
|
||||
|
||||
case 'PDF' :
|
||||
console.log(`${metadata.author||'Unknown Author'} - ${metadata.title||'Unknown'}`);
|
||||
break;
|
||||
|
||||
default :
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
console.info(handler(metadata));
|
||||
return 0;
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue