2008-10-05 41 views
5

Vì vậy, trong những năm qua, tôi đã mua nhạc từ iTunes, Urge và Rhapsody và tất cả các tệp này đều được trộn lẫn với các tệp MP3 không phải DRM'd mà tôi đã tách các đĩa CD của mình. Giờ đây, một số tệp trong số này có giấy phép đã hết hạn và một số giấy phép có giấy phép hợp lệ.Sắp xếp nhạc

Tôi muốn sắp xếp nhạc của mình theo các giới hạn DRM/giấy phép khác nhau mà chúng có trên chúng. Điều này sẽ làm cho nó dễ dàng hơn cho tôi để xóa âm nhạc mà tôi không có đăng ký, và tất cả biết những tập tin tôi có thể thực hiện trên máy nghe nhạc.

Có ai biết nếu điều này là có thể trong .NET/Perl/Python nghĩa là có bất kỳ thư viện nào có sẵn để giúp tôi thực hiện việc này không?

+0

Phần mềm máy hát tự động của bạn có làm điều này cho bạn không? Tôi chỉ thiết lập danh sách phát thông minh riêng cho mục này trong iTunes. –

Trả lời

1

Tôi cũng đã gặp vấn đề này và đã viết hàm python để sửa lỗi; lời khuyên của tôi là để cắt giảm thiệt hại của bạn với các tập tin DRM và chỉ cần di chuyển chúng ra khỏi bất kỳ chương trình bạn đang sử dụng cho danh sách nhạc vv Vấn đề điển hình là m4p của trộn với mp3 của bạn và m4a; bất cứ sự pha trộn của bạn này sẽ di chuyển tất cả các file drm'd vào một thư mục mới tại C:\drm_music:

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') 

Vì vậy, ví dụ bạn có thể chạy trên với python -i move_drm.py (tiết kiệm kịch bản như move_drm.py) và gọi move_drm_files('/users/alienfluid/music'), và tất cả các drm Các kiểu tập tin sẽ được chuyển đến thư mục cách ly của riêng chúng. Nếu bạn nghĩ rằng bạn có thể tiết kiệm một số của những người bạn có thể làm điều này để sắp xếp các tập tin DRM theo loại:

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:]) 

này sẽ tạo ra một thư mục tại C:\drm_collection với các thư mục con đặt tên cho phần mở rộng của họ (m4p vv), và họ sẽ có chứa đầy tất cả các cá thể của từng loại; nếu bạn chạy hàm đầu tiên, bạn chỉ có thể lưu hàm thứ hai vào cùng một tệp và gọi sort_drm('/drm_music')

+0

Cảm ơn các tập lệnh.Họ trông đầy hứa hẹn. Vấn đề duy nhất là tôi không chắc liệu tệp DRM có các phần mở rộng khác nhau hay không - nghĩa là không thể giới thiệu các hạn chế DRM vào tệp WMA trong khi chắc chắn có thể tạo các tệp WMA không phải DRM bằng cách trích xuất CD trong WMP? – alienfluid

0

Tất cả các tệp có tiện ích mở rộng khác nhau không? Nếu vậy điều này có thể làm việc (tôi đã viết nó tất cả ra khỏi đỉnh đầu của tôi để nó không được thử nghiệm):

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 

Điều này được viết với Linux trong tâm trí. Nếu bạn đang thực sự đọc loại giấy phép từ bên trong tệp, điều này sẽ khó khăn hơn nhiều

4

Sẽ không tuyệt vời nếu DRM có ý nghĩa như các API khác?

Đáng buồn thay, bạn sẽ phải nghiên cứu từng lược đồ DRM và định vị API ứng dụng khách cho lược đồ DRM đó.

Xem phần này article để có đề xuất thử và đối phó với các giải pháp "DRM" khác nhau.