需求,批量将歌词lrc内容ANSI转为utf-8
const fs = require('fs');
const path = require('path');
var iconv = require('iconv-lite');
const fileTypes = ['.lrc'];
// 输入目录
const inputFolder = './lrcs/'
// 输出目录
const outFolder = './res/'
function toUtf8(fileName) {
const filePath = path.join(inputFolder,fileName);
const outFilePath = path.join(outFolder,fileName);
let byte = fs.readFileSync(filePath);
if((byte[0] === 0xef && byte[1] === 0xbb) ||
(byte[0] === 0xfe && byte[1] === 0xff) ||
(byte[0] === 0xff && byte[1] === 0xfe)
){
// 已经是utf8
console.log('object fileName 已经是utf-8,只是拷贝',fileName);
fs.writeFileSync(outFilePath, byte);
return;
}
byte = iconv.decode(byte,'gbk');
const content = '\ufeff' + byte.toString('utf8');
fs.writeFileSync(outFilePath,content);
// console.log('object 写成功',fileName)
}
function convert(folderPath) {
if(!fs.existsSync(folderPath)){
console.log('object folderPath',folderPath)
return
}
const files = fs.readdirSync(folderPath);
files.forEach((fileName,index) => {
// console.log('object fileName',index,fileName)
const filePath = path.join(folderPath,fileName);
const stats = fs.statSync(filePath);
if(stats.isFile()) {
// console.log('object fileName',index,fileName)
const ext = path.extname(filePath).toLowerCase();
if(fileTypes.indexOf(ext)>-1) {
toUtf8(fileName)
}
} else if(stats.isDirectory()) {
convert(filePath)
}
})
}
convert(inputFolder);
保存文件为index.js
执行:
node index.js