2012-04-23 7 views
2

나는 노래를 업로드하고 해당 노래를 자산 디렉토리의 다른 모든 노래와 비교하려고하는 레일 응용 프로그램이 있습니다. 노래가 동일하면 업로드를 삭제하고 모든 검색어를 마스터 송으로 라우팅하고 싶습니다.파일이 종이 클립이있는 디렉토리의 다른 파일과 동일한 지 확인하는 방법

마스터 송에 많은 사용자 송 업로드가있는 연관성을 생각하고 있었지만 기본적으로 사용자가 연결 한 마스터 송 ID는 없음입니다. 애셋의 노래가 같은지 확인하고, 노래를 삭제하고 요청을 마스터 노래로 라우팅하는 방법을 확인합니다. 여기

는 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의 DB :

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

어떤 아이디어가? 정말 고맙습니다.

+1

평등이란 무엇입니까? 같은 노래, 비트 전송률, 형식? 두 곡이 동일하고 하나가 mp3이고 다른 하나가 m4a라면? –

+1

저는 비트를 비교하는 함수를 사용하려고합니다. 노래가 90 % 이상 유사하다면 같은 노래이지만 구현하기 쉽기 때문에 먼저이 작업을하고 있습니다. 감사 – MichaelFine

답변

1

파일 수준의 비교 :

파일의 MD5/SHA1 체크섬을 확인하고 다음 업로드 업로드 마무리 먼저 체크섬을 비교하여 동일한 경우 단지를 연결할 때, 때, DB에 보관하십시오.

이것은 ZFS 파일 시스템 중복 제거와 유사합니다.

관련 문제