情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでid3.jsを使用してmp3ファイルのメタデータを取得する

mp3ファイルのメタデータを取得するには下のようなモジュールを利用する方法があります。

  • id3-parser
  • id3js

この記事ではid3jsモジュールを利用する方法を取り上げます。

id3js関数を使用します。

var id3js = require('id3js');

id3js({
    file: 'xxx.mp3', 
    type: id3js.OPEN_LOCAL
}, function(err, metadata) {
});

第1引数にオプションをオブジェクトとして指定します。

オプションには下のようなものがあります。

  • file・・・mp3ファイルのパスを指定します。
  • type・・・id3js.OPEN_LOCALを指定します。

第2引数にコールバック関数を指定します。このコールバック関数の第1引数はエラーオブジェクトであり、第2引数はmp3ファイルのメタデータを表すオブジェクトです。

サンプルコード1

3つ目のコマンドライン引数として与えられたmp3ファイルのメタデータを取得し、標準出力に出力します。

id3js.js

var id3js = require('id3js');

if (process.argv.length < 3) {
    console.error('lack argument.');
    process.exit(1);
}

id3js({
    file: process.argv[2], 
    type: id3js.OPEN_LOCAL
}, function(err, metadata) {
    console.log(metadata);
});

使用パッケージ

  • id3.js
    npm install id3jsでインストールします。

実行結果

現在のフォルダにはsample.mp3という名称のmp3ファイルが存在しています。

C:\work\node>dir sample.mp3
 Volume in drive C is TI31035600A
 Volume Serial Number is 1CBD-3C48

 Directory of C:\work\node

2017/06/25  13:58        10,940,408 sample.mp3
               1 File(s)     10,940,408 bytes
               0 Dir(s)  12,275,019,776 bytes free

このテキストファイルを3つ目のコマンドライン引数に指定してコードを実行するとメタデータの内容が出力されます。

C:\work\node>node id3js.js sample.mp3
{ title: '�������',
  album: '�����',
  artist: '�KH(CV.˱�u")\u0001,Ι�(CV.�K1s)',
  year: '2017',
  v1:
   { title: '��?��������?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000',
     artist: '?����(CV.ء����?��)����������(',
     album: '�����꫺��\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000',
     year: '2017',
     track: 7,
     version: 1.1,
     genre: 'Anime' },
  v2:
   { version: [ 3, 0 ],
     album: '�����',
     artist: '�KH(CV.˱�u")\u0001,Ι�(CV.�K1s)',
     genre: 'Anime',
     title: '�������',
     track: '7/9',
     image:
      { type: 'cover-front',
        mime: 'image/jpeg',
        description: null,
        data: ArrayBuffer { byteLength: 101029 } } } }
(node:5100) DeprecationWarning: Calling an asynchronous function without callback is deprecated.

残念ながら文字化けしてしまいました。

なので、id3-parserモジュールを利用するようにしましょう。

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js