View Issue Details

IDProjectCategoryView StatusLast Update
0006218MMW v4Framework: Scripts/Extensionspublic2012-01-13 14:20
ReporterLudek Assigned To 
PriorityurgentSeverityminorReproducibilityalways
Status assignedResolutionopen 
Target Version4.1 
Summary0006218: Scripting: Add support of non-standard frames in tags
DescriptionOriginally suggested in 0006005 to accomplish functionality for a script to write non-standard tags like ACCURATERIP* frames in FLACs files.

Also discussed a possible adding of new scripting property
OnRippedTrackVerified( AccuRipInfo)
where AccuRipInfo would include DiskID, Confidence Number, CRC, etc. as AccurateRip verification results.

Some other non-standard tag frames are discussed in 0006211
TagsNo tags attached.
Fixed in build

Relationships

related to 0006211 closedLudek MM does not read/write to compatible Copyright tag for m4a/mp4 tracks 
related to 0008970 feedbackjiri Suggestion how to add almost unlimited numer of tags/fields with very little DB modifications 
related to 0011218 closedmichal COMMENT ITUNNORM can be read/modified as Comment 
child of 0006005 closedLudek AccurateRip for verification of disc rips 

Activities

jiri

2012-01-13 11:12

administrator   ~0029855

Last edited: 2012-01-13 14:20

The following is a proposal of what could be implemented:

On each tag read or write operation an Event would be fired:

OnTagRead( TaggedFile)
OnTagWrite( TaggedFile)

where TaggedFile would be a new object with the following methods and properties:

property SD: SDBSongData (info about tagged track)
property tagFormat: string (e.g. 'ID3v2.3;ID3v1' or 'WM')
property AllFields: SDBStringList (all currently stored fields in the tag)
function FieldExists( field: string): boolean;
method SetFieldValue( field: string; value: string)
function GetFieldValue( field: string; out value: string): boolean; (returns true if the field exists)
method SetFieldValues( field: string; values: SDBStringList); (sets multiple values of one field - i.e. its multiple instances in the tag)
method GetFieldValues( field: string; out values: SDBStringList);
method DeleteField( field: string);

Note 1: field name can contain more specifics about a field, e.g. 'COMM' would mean any id3v2 comment field, 'COMM:description:language' could get a particular comment field given its description sub-field and language
Note 2: binary support could be added in the future (i.e. any field content could be specified)
Note 3: tagFormat property could be writeable in the future in order to support e.g. changing of ID3 versions, etc.

Simplified example of usage:

Sub TagRead( TaggedFile)
  If Right( TaggedFile.SD.Path, 4) = ".mp3" Then
    If TaggedFile.GetFieldValue( "COMM:iTunNORM", value) Then
      TaggedFile.SD.Leveling = value ' To be parsed somehow
    EndIf
  EndIf
End Sub