Bem resolvi brincar um bocado e tentar organizar a minha musica, de uma forma "divertida" e comecei por criar um programa que me vai buscar e guardar toda a musica que eu tenho numa pasta, e respectivas sub pastas, que eu selecione, apos isso devo conseguir alterar a informação de autor, album .... Mas aquele que mais me interessa alterar é mesmo o comentário. Mas acontecem coisas estranhas. Após alguma pesquisa descobri o CDDBControl.dll teoricamente "faz milagres". Bem o meu codigo é este:
Imports CDDBCONTROLLib
Imports System.IO
Public Class Form1
Public Function extansa(ByVal ficheiro As IO.FileInfo) As Integer ' Serve para filtrar e garantir que o ficheiro é de musica'
Return (ficheiro.Extension() = ".mp3" Or ficheiro.Extension = ".wma" Or ficheiro.Extension = ".aac" Or ficheiro.Extension = ".ogg" Or ficheiro.Extension = ".ac3" Or ficheiro.Extension = ".wav")
End Function
Public Function precore(ByVal caminho As String) As Integer ' esta precore todos ficheiros dessa pasta e ao ser chamada recursivamente vai precorer todos os fiheiros das subpastas dessa pasta'
Dim di As New IO.DirectoryInfo(caminho)
Dim i As Integer = 4
Dim fich1 As FileInfo() = di.GetFiles()
Dim fich As FileInfo
Dim artistas As String
For Each fich In fich1
If extansa(fich) Then
'Caso seja um ficheiro de musica tenta alterar o comentario dela.'
Dim id3 As New CddbID3Tag
ListBox1.Items.Add(fich.FullName)
id3.LoadFromFile(fich.FullName, False)
MsgBox(id3.Comments) ' comentario inicial'
artistas = id3.Comments
artistas = artistas & " teste"
id3.LeadArtist = artistas ' comentario alterado'
MsgBox(id3.Comments)
id3.SaveToFile(fich.FullName)
i = i + 1
End If
Next
Dim fold1 As IO.DirectoryInfo() = di.GetDirectories()
Dim fold As IO.DirectoryInfo
For Each fold In fold1
precore(caminho & "\" & fold.ToString)
Next
End Function
Private Sub btmcarrega_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btmcarrega.Click 'Aqui seleciono a pasta onde tenho a minha musica'
Dim folderDlg As New FolderBrowserDialog
folderDlg.ShowNewFolderButton = False
If (folderDlg.ShowDialog() = DialogResult.OK) Then
precore(folderDlg.SelectedPath)
TextBox1.Text = folderDlg.SelectedPath
End If
End Sub
End Class
Ele pelas mensagens de teste funciona. Mas depois se for aos detalhes do ficheiro ele apagou toda a informação que estava no comentário. Estou maluco e ja não sei como posso contornar isto. Alguma ideia?
O mais "estúpido" é que se alterar o LeadArtist (interpretes participantes) ele ja consegue alterar com sucesso esse detalhe. Alguma ideia?!
