2013-06-03 68 views
0

我正在Rails應用程序中實現一個ruby,它從dropbox文件夾下載歌曲,然後對它們執行一些操作,比如提取一些元標記。現在,我使用了屬於同一專輯的10首mp3,因此它們具有相同的編碼等。但是,在嘗試使用taglib-ruby讀取元標記時,10個文件中的3個會拋出錯誤,並說:taglib(-ruby)無法讀取特定文件

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

我作爲指導提供here on the left的代碼,從而導致:

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 

首先,我以爲下載的文件可能已損壞,但檢查鸚鵡螺元數據顯示確定結果和Rhythmbox音樂播放器可以播放它。 我想使用taglib-ruby的基本API而不是格式特定的API,因爲我只需要檢索藝術家和標題,但需要能夠從各種格式的文件中獲取它。

有沒有人有任何想法如何解決這個問題?這可能是我錯過了一些超級明顯的東西,因爲我是這個主題的新手。

編輯:考慮robinst's comment,這是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 
+0

有問題的文件是否有特殊的文件名?另外,請檢查文件權限。 – robinst

+0

名稱在所有文件中都是一致的,例如'01 - 曲目title.mp3'。文件名中沒有特殊字符。文件權限是「-rw-rw-r - 」,並且對於所有文件也是相同的。 – kah

回答