taglib(-ruby) 无法读取特定文件



我正在实现一个ruby on rails应用程序,从dropbox文件夹下载歌曲,然后对它们执行一些操作,如提取一些元标签。现在,我正在使用属于同一专辑的10个mp3,所以它们具有相同的编码等。然而,当尝试使用taglib-ruby读取元标签时,10个文件中的3个抛出错误,说:

TagLib: FileRef::tag() - Called without a valid file.
TagLib: FileRef::audioProperties() - Called without a valid file.

我使用左边提供的代码作为指导,导致:

  def read_metatags
    TagLib::FileRef.open(self.local_path) do |fileref|
      unless fileref.null?
        logger.info "Reading tags"
        tag = fileref.tag
        self.title = tag.title
        self.artist = tag.artist
        properties = fileref.audio_properties
        self.length = properties.length
      end
    end
    self.save!
  end

一开始我以为下载的文件可能损坏了,但是在nautilus中检查元数据显示结果ok, rhythmbox也可以播放它。我想使用taglib-ruby的基本API而不是格式特定的,因为我只需要检索艺术家和标题,但需要能够从各种格式的文件中获得它。

有没有人有任何想法如何解决这个问题?考虑到我是这个话题的新手,我可能错过了一些非常明显的东西。

edit:考虑到robinst的评论,这是各自文件的ls -l列表:

-rw-rw-r-- 1 user user 3710598 Jun  3 15:56 01 - Paradise.mp3
-rw-rw-r-- 1 user user 3731496 Jun  3 15:56 02 - Weirdo.mp3
-rw-rw-r-- 1 user user 3620319 Jun  3 15:56 03 - As It Is When It Was.mp3
-rw-rw-r-- 1 user user 3645815 Jun  3 15:56 04 - Broken Promise.mp3
-rw-rw-r-- 1 user user 3954295 Jun  3 15:56 05 - Way Of Life.mp3
-rw-rw-r-- 1 user user 4199193 Jun  3 15:57 06 - Bizarre Love Triangle.mp3
-rw-rw-r-- 1 user user 5002092 Jun  3 15:57 07 - All Day Long.mp3
-rw-rw-r-- 1 user user 3595686 Jun  3 15:57 08 - Angel Dust.mp3
-rw-rw-r-- 1 user user 4307888 Jun  3 15:57 09 - Every Little Counts.mp3
-rw-rw-r-- 1 user user 6313648 Jun  3 15:57 10 - State Of The Nation.mp3

这个问题在taglib-ruby的issue 33中也被问过,并在那里得到了回答。简而言之,文件被破坏了。

相关内容

  • 没有找到相关文章

最新更新