2012-04-23 8 views
2

私は、1つの曲をアップロードし、その曲をアセットディレクトリの他のすべての曲と比較しようとしています。曲が等しい場合は、アップロードを削除してすべてのクエリをマスター曲にルーティングしたいと思います。ファイルがクリップのあるディレクトリ内の別のファイルと等しいかどうかを確認する方法

マスター曲には多くのユーザーソングのアップロードがあるが、デフォルトでは、ユーザーが関連付けているマスター曲IDはnilであるという関連付けを考えていた。アセットの曲が等しいかどうか、またソングを削除してマスターの曲にリクエストをルーティングする方法を確認します。ここで

はuser_song_uploadsのための私のデシベルです:

class CreateUserSongUploads < ActiveRecord::Migration 
    def change 
    create_table :user_song_uploads do |t| 
     t.integer :user_id 
     t.has_attached_file :song 
      :url => "/assets/user_song_uploads/:id/", 
      :path => "#{rails.root}/assets/user_song_uploads/:id/", 
     t.timestamps 
     t.string :artist 
     t.string :album 
     t.string :title 
    end 
    end 
end 

マイmaster_songデシベル:

t.has_attached_file :m_song 
    :url => "/assets/master_songs/:id", 
    :path => "#{rails.root}/assets/master_songs/:id", 

任意のアイデア?どうもありがとうございます。

+1

どういう意味ですか?同じ曲、ビットレート、形式? 2曲が同じで、1曲がmp3、もう1曲がm4aの場合はどうなりますか? –

+1

私はビットを比較するために関数を使用します。もしその曲が90%以上類似しているのであれば同じ曲ですが、それは実装が簡単なので、まずこれに取り組んでいます。ありがとう – MichaelFine

答えて

1

ファイルレベルの比較:

は、ファイルのMD5/SHA1チェックサムを作成し、次のアップロードは、アップロードの仕上げは最初のチェックサムを比較し、同じ場合は、単にそれらをリンクする際、来るとき、デシベルでそれらを保ちます。

これは、ZFSファイルシステムの重複除外に似ています。

関連する問題