taglib(-ruby) не может читать определенные файлы

Я реализую приложение ruby ​​on rails, которое загружает песни из папки dropbox, а затем выполняет над ними несколько действий, таких как извлечение нескольких метатегов. Сейчас я использую 10 mp3-файлов, которые принадлежат одному и тому же альбому, поэтому они имеют одинаковую кодировку и т. Д. Однако при попытке прочитать метатеги с помощью taglib-ruby 3 из 10 файлов выдают ошибку, говоря:

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 показывает нормальные результаты, и rhythmbox также может их воспроизвести. Я хочу использовать базовый API-интерфейс taglib-ruby вместо конкретного формата, так как мне нужно только получить исполнителя и название, но я должен иметь возможность получать его из файлов различных форматов.

У кого-нибудь есть идеи как это исправить? Может быть, я упускаю что-то супер очевидное, учитывая, что я новичок в этой теме.

редактировать: учитывая комментарий Робинста, это 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

1 ответ

Решение

Этот вопрос также был задан как вопрос 33 в taglib-ruby и там ответили. Короче файлы оказались битыми.

Другие вопросы по тегам