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)
})

搞掂,就看看能不能显示了.,所有东西都准备好,下一章就开始制作桌面应用,

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注