Cuento con un Nokia Lumia 530 con Windows Phone 8.1, lo que trato de hacer es sincronizar mi música con este celular, el cual cuenta con una tarjeta sd, así que lo que se me ocurrió, dado que toda mi música la administro con Itunes, es exportar una lista de reproducción desde Itunes en formato *.txt, y la idea es, con esta lista, copiar estos archivos a la tarjeta sd, pero en el siguiente orden, por cada mp3 se tiene que crear una carpeta con el nombre del artista y una subcarpeta con el nombre del album. por lo que en la tarjeta sd los archivos se copiarán de esa forma.
Hasta este punto, he podido leer el archivo *.txt, identificar la ruta de cada mp3 e incluso obtener sus etiquetas, como el artista y el álbum. La segunda parte, y en la que me he atorado un poco es copiar estos archivos a la tarjeta SD, la cual explico en los siguiente párrafos.
Primero traté con FolderBrowserDialog para tener un directorio en el cuál trabajar, pero no funcionó, ya que no reconoce directorios de dispositivos portables, así que buscando en google encontré esto: http://dev.flauschig.ch/wordpress/?p=212, por lo que pude entender, ocupa la shell32 de windows, para obtener el directorio, así que con esto puedo obtener el directorio en el cual necesito copiar mi música. El codigo lo muestro a continuación, báscamente es el mismo código que el del link, sólo que en vb.net:
Código:
Dim objshell As Shell32.Shell
Dim ssfWINDOWS As Long
Dim objFolder As Shell32.Folder
ssfWINDOWS = 36
objshell = New Shell32.Shell
objFolder = objshell.BrowseForFolder(CInt(Handle), "Choose Folder", 0, 0)
Dim fi As Shell32.FolderItem = TryCast(objFolder, Shell32.Folder3).Self
Dim path As String = fi.Path
txt_rutamusic.Text = path
CopyFiles(Path2Folder("C:\Users\Rivera\Desktop\Music"), objFolder)
Con esto obtengo una ruta como esta: "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_0421&pid_06fc&mi_00#6&b6d8f3&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{20001,MTP Volume - 131073,15539896320}\{00000000-00E0-0040-0000-000000000000}"
La cual en el explorador se ve así: "Este equipo\Windows Phone\SD card\Music".
La línea CopyFiles(Path2Folder("C:\Users\Rivera\Desktop\Music"), objFolder), copia todos los archivos de la carpeta ...\Desktop\Music a la ruta ...\SD card\Music, con el código siguiente:
Código:
Public Shared Sub CopyFiles(srcFolder As Shell32.Folder, dstFolder As Shell32.Folder)
For Each currFolderItem As Shell32.FolderItem In srcFolder.Items()
dstFolder.CopyHere(currFolderItem, 0)
Next
End Sub
Public Shared Function Path2Folder(path As String) As Shell32.Folder
' Create Folder if needed
'Directory.CreateDirectory(path)
' Create ShellObject
Dim shell As New Shell32.Shell
' Convert to Shell Folder
Return shell.[NameSpace](path)
End Function
Sin embargo, esto está limitado a copiar sólo los archivos que se encuentran en la carpeta ...\Desktop\Music, y lo que quiero, como expliqué, es copiar los mp3 de una lista de reproducción que se encuentra en un archivo *.txt, de los cuales ya tengo identificados las rutas de cada una, y que se ordeden en carpetas por artista y dentro de ésta, por álbum. Pero hasta este punto parece algo bastante complicado. Lo que se me ocurrió es crear, mediante un proceso iterativo, las carpetas de artistas y dentro de éstas, las de los álbumes con los tags que obtengo de los mp3, y copiar ahí cada mp3. Para crear las carpetas podría utilizar el siguiente código:
Código:
objFolder.NewFolder("Carpeta_Artista")
Sin embargo, para crear subcarpetas de cad album Carpeta_Album tendría que moverme de directorio manualmente con la instrucción:
Código:
objFolder = objshell.BrowseForFolder(CInt(Handle), "Choose Folder", 0, 0)
Además, hasta este punto no sé cómo copiar un archivo mp3 especificando únicamente su ruta.
Así que si alguien puede ayudarme o tiene alguna otra idea de cómo crear estas carpetas y copiar cada archivo mp3, le agradecería mucho .
Saludos.