#include <Array.au3> ;Only for displaying the results Global $CddbControl_Dll = @ScriptDir & '\CddbControl.dll' Global $File = @ScriptDir & '\Some File.mp3' ;Startup the CddbControl _CddbControl_Startup() _CddbControl_Error_Handler(@error, 'CddbControl.dll Not Found!', 1) ;Get all tags into array and show them... $aOld_Tags = _CddbControl_GetID3Tag($File) _CddbControl_Error_Handler(@error, 'There was an error (%i) to get an array with ID3 tags.', 1) _ArrayDisplay($aOld_Tags, '_CddbControl_GetID3Tag') ;Set "Title" tag to "_CddbControl Title" _CddbControl_SetID3Tag($File, 'Title', '_CddbControl Title') _CddbControl_Error_Handler(@error, 'There was an error (%i) to set ID3 tag (Title).', 1) ;Get all tags with new value into array and show them... $aNew_Tags = _CddbControl_GetID3Tag($File) _CddbControl_Error_Handler(@error, 'There was an error (%i) to get an array with ID3 tags.', 1) _ArrayDisplay($aNew_Tags, '_CddbControl_GetID3Tag') ;Set back the original "Title" tag value _CddbControl_SetID3Tag($File, 'Title', $aOld_Tags[1][1]) _CddbControl_Error_Handler(@error, 'There was an error (%i) to set ID3 tag (Title).', 1) ;Show the "Title" tag (to see if it was restored back) MsgBox(64, 'Results', 'Old Title: ' & _CddbControl_GetID3Tag($File, 'Title')) ;Shutdown the CddbControl _CddbControl_Shutdown() Func _CddbControl_Startup() If Not FileExists($CddbControl_Dll) Then Return SetError(-1, 0, 0) RunWait('Regsvr32.exe /s /i "' & $CddbControl_Dll & '"', @WindowsDir) Return 1 EndFunc ;==>_CddbControl_Startup Func _CddbControl_Shutdown() If Not FileExists($CddbControl_Dll) Then Return SetError(-1, 0, 0) Run('Regsvr32.exe /s /u ' & $CddbControl_Dll, @WindowsDir) Return 1 EndFunc ;==>_CddbControl_Shutdown Func _CddbControl_GetID3Tag($sFile, $sTag = "") Local $oId3 = ObjCreate("CDDBControl.CddbID3Tag") If Not IsObj($oId3) Then Return SetError(1, 0, "") If Not FileExists($sFile) Then Return SetError(2, 0, "") $oId3.LoadFromFile($sFile, False) Local $aRet_Tags[16][2] $aRet_Tags[0][0] = 15 $aRet_Tags[1][0] = 'Title' $aRet_Tags[1][1] = $oId3.Title $aRet_Tags[2][0] = 'LeadArtist' $aRet_Tags[2][1] = $oId3.LeadArtist $aRet_Tags[3][0] = 'Album' $aRet_Tags[3][1] = $oId3.Album $aRet_Tags[4][0] = 'TrackPosition' $aRet_Tags[4][1] = $oId3.TrackPosition $aRet_Tags[5][0] = 'Year' $aRet_Tags[5][1] = $oId3.Year $aRet_Tags[6][0] = 'Genre' $aRet_Tags[6][1] = $oId3.Genre $aRet_Tags[7][0] = 'Comments' $aRet_Tags[7][1] = $oId3.Comments $aRet_Tags[8][0] = 'Label' $aRet_Tags[8][1] = $oId3.Label $aRet_Tags[9][0] = 'FileId' $aRet_Tags[9][1] = $oId3.FileId $aRet_Tags[10][0] = 'ISRC' $aRet_Tags[10][1] = $oId3.ISRC $aRet_Tags[11][0] = 'CopyrightHolder' $aRet_Tags[11][1] = $oId3.CopyrightHolder $aRet_Tags[12][0] = 'CopyrightYear' $aRet_Tags[12][1] = $oId3.CopyrightYear $aRet_Tags[13][0] = 'PartOfSet' $aRet_Tags[13][1] = $oId3.PartOfSet $aRet_Tags[14][0] = 'Movie' $aRet_Tags[14][1] = $oId3.Movie $aRet_Tags[15][0] = 'BeatsPerMinute' $aRet_Tags[15][1] = $oId3.BeatsPerMinute If $sTag <> "" Then For $i = 1 To 15 If $aRet_Tags[$i][0] = $sTag Then Return $aRet_Tags[$i][1] Next Return SetError(3, 0, "") EndIf Return $aRet_Tags EndFunc ;==>_CddbControl_GetID3Tag ;=============================================================================================================== ; 'TitleAlbum', 'Movie', 'Title', 'CopyrightYear', 'CopyrightHolder', 'Comments', 'Label', 'BeatsPerMinute', ; 'LeadArtist', 'PartOfSet', 'TrackPosition', 'Year', 'Genre', 'FileId', 'ISRC' ;================================================================================================================ Func _CddbControl_SetID3Tag($sFile, $sTag, $sValue) Local $oId3 = ObjCreate("CDDBControl.CddbID3Tag") If Not IsObj($oId3) Then Return SetError(1, 0, 0) If Not FileExists($sFile) Then Return SetError(2, 0, 0) ; False means open for read-write $oId3.LoadFromFile($sFile, False) Switch $sTag Case 'TitleAlbum' $oId3.Album = $sValue Case 'LeadArtist' $oId3.LeadArtist = $sValue Case 'Title' $oId3.Title = $sValue Case 'TrackPosition' $oId3.TrackPosition = $sValue Case 'Year' $oId3.Year = $sValue Case 'Genre' $oId3.Genre = $sValue Case 'Comments' $oId3.Comments = $sValue Case 'Label' $oId3.Label = $sValue Case 'FileID' $oId3.FileId = $sValue Case 'IRSC' $oId3.ISRC = $sValue Case 'CopyrightHolder' $oId3.CopyrightHolder = $sValue Case 'CopyrightYear' $oId3.CopyrightYear = $sValue Case 'PartOfSet' $oId3.PartOfSet = $sValue Case 'Movie' $oId3.Movie = $sValue Case 'BeatsPerMinute' $oId3.BeatsPerMinute = $sValue Case Else Return SetError(3, 0, 0) EndSwitch $oId3.SaveToFile($sFile) Return 1 EndFunc ;==>_CddbControl_SetID3Tag Func _CddbControl_Error_Handler($iError, $sErrMsg, $iExit = 1) If $iError = 0 Then Return If $iExit Then $sErrMsg &= @CRLF & @CRLF & 'OK ==> EXIT' MsgBox(262144 + 16, 'CddbControl Error', StringFormat($sErrMsg, $iError)) If $iExit Then Exit _CddbControl_Shutdown() EndFunc ;==>_CddbControl_Error_Handler |