node.js修改音乐文件的信息-2修改文件名
修改文件
做完拼音转换,那么就开始转换我们的音乐文件的信息了.当然转换信息,我们需要复制文件,毕竟我们的文件是要放在车里的.
import { words2Pinyins } from "./pinyinConvert.js";
import fs from "fs"
let songs=[]
let path="d:\\desktop\\music" //待转换的文件夹
let newPath=paht+"_new" //转换后的文件,以复制形式修改文件,避免污染源文件.
fs.mkdir(newPath,()=>{
fs.readdir(path,(err,files)=>{
if(err){
return console.log("目录不存在",err);
}
songs=files
songs.forEach(element => {
let music=words2Pinyins(element,true)
fs.copyFileSync(path+"/"+element,newPath+"/"+music)
console.log(music)
});
})
})
轻轻松松解决文件名字修改,收工
出现错误
本以为写一个这么简单的东西就可以解决显示问题,结果还是太年轻了.只因为吃了不懂得音乐文件的信息的亏.
播放器显示音乐文件的信息,并不是文件名来显示.我这个只是简简单单修改文件名,对于那些音乐信息(tags信息)完全没有的文件,这个写法还可以凑合用.问题是,大部分音乐文件都不会什么都没.所以注定这个写法失败.
而这些文件信息,存在于音乐文件最后那堆字符串里面.以二进制形式.还有很多模式,什么id3,id4 之类的.
于是我爬网找一些有没相关的api,我在npm.io 上找到2个模块.于是开整.
其中一个是node-id3
另一个是jsmediatags
最后我选择的是node-id3
npm i node-id3 --save
最后是
import { words2Pinyins } from "./pinyinConvert.js";
import ID3 from "node-id3"
import fs from "fs"
let songs=[]
let path=d:\\desktop\\music
let newPath=path+"_new"
//path=newPath
fs.mkdir(newPath,()=>{
fs.readdir(path,(err,files)=>{
if(err){
return console.log("目录不存在",err);
}
//console.log(files)
songs=files
songs.forEach(element => {
let music=words2Pinyins(element,true)
fs.copyFileSync(path+"/"+element,newPath+"/"+music)
console.log(music.replace(".mp3","").replace(".MP3",""))
let tags={//修改的信息,我这里写死了,因为我不想多余信息影响界面.根据自己需要修改. title:music.replace(".mp3","").replace(".MP3",""),
artist:"Eason Chan",
album:"1"
} console.log(ID3.write(tags,newPath+"\\"+music))
});
})
//console.log(ID3)
})
搞掂,就看看能不能显示了.,所有东西都准备好,下一章就开始制作桌面应用,