有没有用于ID3元数据的Perl或Python库?

1 投票
7 回答
4480 浏览
提问于 2025-04-15 12:16

基本上,我从我兄弟的iPod上拿了一堆音乐文件,这些文件保留了它们的元数据,但名字却是那种让人头疼的四个字符的名字,iPod似乎喜欢这样存储。我想写个简单的脚本,把这些文件名改成我想要的样子。不过,我对读取ID3元数据有没有好的库有点好奇。我比较喜欢用Perl或者Python。因为我在工作中用Perl比较多,所以对它比较熟悉,而Python我还需要多练习,这样也能让我的Python爱好者朋友们开心。

总之,简化一下:你能推荐一个好的库或者模块吗?无论是Python还是Perl,都能让我轻松提取一堆mp3文件的ID3元数据。

7 个回答

9

CPAN搜索可以找到几个Perl模块,当你搜索ID3时。几乎所有以“有没有库...”开头的Perl问题,答案都是去查查CPAN。

我个人比较喜欢MP3::Tag,不过像我这种年纪大的人,往往会找到一个合适的工具,然后就不再关注技术的进步,直到不得不改变为止。

2

MP3::Tag 也是一个很不错的工具。如果你在找 Perl 的模块,建议你先去 search.cpan.org 网站看看。

 use MP3::Tag;

  $mp3 = MP3::Tag->new($filename);

  # get some information about the file in the easiest way
  ($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo();
  # Or:
  $comment = $mp3->comment();
  $dedicated_to
    = $mp3->select_id3v2_frame_by_descr('COMM(fre,fra,eng,#0)[dedicated to]');

  $mp3->title_set('New title');         # Edit in-memory copy
  $mp3->select_id3v2_frame_by_descr('TALB', 'New album name'); # Edit in memory
  $mp3->select_id3v2_frame_by_descr('RBUF', $n1, $n2, $n3);    # Edit in memory
  $mp3->update_tags(year => 1866);      # Edit in-memory, and commit to file
  $mp3->update_tags();                  # Commit to file

撰写回答