2008-10-05 4 views
5

지난 몇 년 동안 iTunes, Urge 및 Rhapsody에서 음악을 구입했으며이 모든 파일은 내 DRM하지 않은 MP3 파일과 섞여있어 CD를 찢어 버렸습니다. 이제 일부 파일에는 만료 된 라이센스가 있고 일부 라이센스에는 유효한 라이센스가 있습니다.음악 정렬

음악을 다양한 DRM/라이센스 제한으로 정렬하고 싶습니다. 이렇게하면 구독하지 않은 음악을 삭제하는 것이 더 쉬워지고 모든 음악 플레이어에서 어떤 파일을 휴대 할 수 있는지 알 수 있습니다.

.NET/Perl/Python에서 가능하면 알 수 있습니까? 즉, 내가 할 수있는 라이브러리가 있습니까?

+0

쥬크 박스 소프트웨어가이 작업을 수행하지 않습니까? 난 그냥 아이튠즈에서 별도의 스마트 재생 목록을 설정합니다. –

답변

1

나는이 문제를 보았고 그것을 고치기 위해 파이썬 함수를 작성했다. 내 충고는 DRM 파일로 손실을 줄이고 재생 목록 등을 위해 사용하는 프로그램에 관계없이 이동하는 것입니다. 일반적인 문제는 m4p가 mp3 및 m4a와 섞여 있다는 것입니다.

import os, shutil 

def move_drm_files(music_folder): 
    all_songs = [] 
    good_filetypes = ['mp3', 'm4a', 'ogg', 'flv', 'wma'] 
    for root, dirs, files in os.walk(music_folder): 
     for name in files: 
      full_name = os.path.join(root, name) 
      all_songs.append(full_name) 
    os.mkdir('/drm_music') 
    for song in all_songs: 
     if song[-3:] not in good_filetypes: 
      shutil.move(song, '/drm_music') 

그래서 예를 들어 당신이 (move_drm.py로 스크립트를 저장) python -i move_drm.py과 위의를 실행하고 move_drm_files('/users/alienfluid/music')를 호출 할 수 있으며, 모든 DRM : 어떤 믹스이 C:\drm_music에서 새 폴더에 모든 drm'd 파일을 이동합니다 파일 형식이 자신의 격리 된 폴더로 이동됩니다.

def sort_drm(drm_folder, all_songs=[]): 
    os.mkdir('/drm_collection') 
    known_types = [] 
    for root, dirs, files in os.walk(drm_folder): 
     for name in files: 
      full_name = os.path.join(root, name) 
      all_songs.append(full_name) 
    for item in all_songs: 
     if item[-3:] not in known_types: 
      known_types.append(item[-3:]) 
    for item in known_types: 
     os.mkdir('/drm_collection/'+item) 
    for item in all_songs: 
     shutil.copy2(item, '/drm_collection/'+item[-3:]) 

이 자신의 연장라는 이름의 하위 폴더 (M4P 등)로 C:\drm_collection에 폴더를 생성합니다, 그들은 것입니다 : 당신은 당신이 그 중 일부를 절약 할 수 있습니다 생각한다면 당신은 유형별로 DRM 파일을 정렬이 작업을 수행 할 수 각 유형의 모든 인스턴스로 채워짐; 첫 번째 기능을 실행하면 두 번째 파일을 같은 파일에 저장하고 sort_drm('/drm_music')

+0

스크립트를 제공해 주셔서 감사합니다.그들은 유망 해 보입니다. 유일한 문제는 DRM 파일에 다른 확장명이 있는지 확실하지 않다는 것입니다. 즉, DRM 제한을 WMA 파일에 삽입 할 수없는 반면 리핑으로 비 DRM'd WMA 파일을 만들 수 있습니다. WMP의 CD? – alienfluid

0

모든 파일의 확장자가 다릅니 까? 그렇다면이 방법이 효과적 일 수 있습니다. (머리 부분에서 쓴 것이므로 테스트하지 않았습니다) :

import os 

music_dir = "/home/johnbloggs/music/" # note the forward slashes and the trailing slash 
output_dir = "/home/johnbloggs/sorted_music/" 

for file in os.listdir(music_dir): 
    if file.find(".mp3") != -1: 
      if os.path.exists(output_dir + "mp3"): 
       os.system("cp " + music_dir + file " " + output_dir + "mp3") 

    elif file.find(".wma") != -1: 
      if os.path.exists(output_dir + "wma"): 
       os.system("cp " + music_dir + file " " + output_dir + "wma") 

    # etc 

이것은 Linux를 염두에두고 작성되었습니다. 실제로 파일 내부에서 라이선스 유형을 읽으 려한다면 상당히 어려워 질 것입니다.

4

DRM이 다른 API와 같은 의미로 사용된다면 좋지 않을까요?

슬프게도 각 DRM 체계를 조사하고 해당 DRM 체계에 대한 클라이언트 API를 찾아야합니다.

다양한 inane DRM "솔루션"을 시도하고 대처할 제안을 보려면 article을 참조하십시오.