2008-10-05 19 views
5

Así que a lo largo de los años, he comprado música de iTunes, Urge y Rhapsody y todos estos archivos están mezclados con mis archivos MP3 no DRM que he arrancado de mis CD. Ahora, algunos de estos archivos tienen licencias caducadas y algunos de ellos tienen licencias válidas.Ordenando música

Quiero ordenar mi música por varias restricciones DRM/licencia que tienen sobre ellos. Esto hará que sea más fácil para mí eliminar la música que no tengo suscripción, y todos saben qué archivos puedo llevar en qué reproductor de música.

¿Alguien sabe si esto es posible en .NET/Perl/Python, es decir, hay alguna biblioteca disponible que me ayude a hacer esto?

+0

¿Su software jukebox no hace esto por usted? Acabo de configurar listas de reproducción inteligentes separadas para esto en iTunes. –

Respuesta

1

Me he encontrado con este problema también y escribí una función de python para solucionarlo; Mi consejo es que reduzcas tus pérdidas con los archivos DRM y que los elimines del programa que estás utilizando para las listas de reproducción, etc. El problema típico es que m4p está mezclado con tus mp3 y m4a; Sea cual sea su mezcla esto moverá todos los archivos drm'd en una nueva carpeta en 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') 

Así, por ejemplo, podría ejecutar lo anterior con python -i move_drm.py (guardando el guión como move_drm.py) y llamar a move_drm_files('/users/alienfluid/music'), y todo el DRM 'd los tipos de archivos se moverán a su propia carpeta en cuarentena. Si usted piensa que puede salvar a algunos de los que se podía hacer esto para ordenar los archivos DRM por tipo:

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

Esto creará una carpeta en C:\drm_collection con subcarpetas con el nombre de su extensión (m4p etc), y que será lleno con todas las instancias de cada tipo; Si ejecuta la primera función, puede guardar la segunda en el mismo archivo y llamar al sort_drm('/drm_music')

+0

Gracias por los guiones.Se ven prometedores. El único problema es que no estoy seguro de si los archivos DRM tienen extensiones diferentes, es decir, no es posible introducir restricciones DRM en un archivo WMA mientras que es ciertamente posible crear archivos WMA no DRM mediante extracción CD en WMP? – alienfluid

0

¿Todos los archivos tienen diferentes extensiones? Si es así esto podría funcionar (i escribí todo de la parte superior de mi cabeza así que no es a prueba):

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 

Esto se escribe con Linux en mente. Si está buscando realmente leer el tipo de licencia desde dentro del archivo, eso será considerablemente más difícil

4

¿No sería genial si DRM tuviera sentido como otras API?

Lamentablemente, deberá investigar cada esquema de DRM y localizar una API cliente para ese esquema de DRM.

Consulte esta article para obtener una propuesta para tratar de hacer frente a las diversas "soluciones" de DRM inane.