提问者:小点点

如何获取mp3文件在文件夹及其子文件夹中的路径


我做了一个函数来检查任何文件夹中的.mp3文件。 我对正则表达式知之甚少。 下面是我的代码,我尝试了什么仍然接收空数组。

null

const find = require('find') ;
const path = require('path') ;
const mm = require('music-metadata') ;

async function parseMetadata(files){
   let metadata ;
   data = files.map(async (file) => {
      metadata = await mm.parseFile(file,{duration:true}) ;
      m = new metaData(metadata.common, metadata.format.duration, file) ;
      return m ;
   }) ;

   const musicarray = await Promise.all(data) ;
   return musicarray ;
}


function fetchmp3(dirs){
   let res,musicfiles = [] ;
   dirs.forEach((path)=>{
      res = find.fileSync(/\.(mp3)/ig,path) ;
      musicfiles.push(...res) ;
   });

   if (musicfiles.length === 0){
      return parseMetadata(musicfiles) ;
   }
   else{
      return Promise.resolve([]) ;
   }
}

null

因此,我希望函数fetchmp3接收与给定文件夹及其子文件夹中的mp3文件相关的所有数据。 当前我的代码不工作。


共1个答案

匿名用户

这是因为正则表达式不能正常工作,所以可以使用

[\w]+\.(mp3)

另外,“\w”与单词字符(a-z,a-z,0-9,_)匹配名称。如果文件名中有除“_”以外的任何特殊字符,您可以将其添加到“\w”之后以匹配它们。 例如,如果你有“。” 在像“something.some.mp3”这样的文件名中,您可以这样添加它

[\w.]+\.(mp3)

您的正则表达式只匹配“.mp3”。