Products            Buy            Support Forum            Professional            About            Codec Central
Results 1 to 11 of 11

Thread: External Tag Scripting (ID Tag Processing & Update ID Tag)

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Apr 2002

    External Tag Scripting (ID Tag Processing & Update ID Tag)

    The utility codec [ID Tag Update] (R4 or later) and the DSP effect ID Tag Processing (R10 or later) contain an option Externally Script Tags

    Externally scripting allows tag actions to take place which could not otherwise be accommodated in dBpoweramp, the scripting language (in this example uses VB Scripting) can do almost anything to the tags. The following example simply replaces the Artist with "abc"

    A command line is specified for this value, for example:

    cscript.exe "z:\tag.vbs" "%idtagstxt%"

    This runs the program cscript.exe which in turn executes the Tag.vbs script. The value %idtagstxt% is replaced by the filename of a temporary unicode text file containing the ID Tags, an example:

    Title=What Up Gangsta
    replaygain_album_gain=-10.96 dB
    AccurateRipResult=AccurateRip: Accurate (confidence 143)   [6E45E560]
    Year=2003 02 06
    Composer=Rob Tewlow
    Style=Hardcore Rap
    Album=Get Rich or Die Tryin'
    Artist=50 Cent{_MUL_}Artist2
    replaygain_track_gain=-10.19 dB
    Album Artist=50 Cent
    _albumart_1_Front Album Cover=z:\tmpusr\dbpA532.tmp\18.bin
    Each tag line has an element=value

    Album art is listed as: _albumart_1xxxxxxxxx _albumart_2xxxxxxxxxx the latter part of the art element name represents the art type:

    32x32 Icon,				(apic 1)
    Other Icon,				(apic 2)
    Front Album Cover,		(apic 3)
    Back Album Cover, 		(apic 4)
    Leaflet Page, 			(apic 5)
    Media >>CD image<<, 	(apic 6)
    Lead Artist,			(apic 7)
    Artist,					(apic 8)
    Conductor, 				(apic 9)
    Band, 					(apic 10)
    Composer, 				(apic 11)
    Writer, 				(apic 12)
    Recording Location,		(apic 13)
    During Recording,		(apic 14)
    During Performance,		(apic 15)
    Video Capture,			(apic 16)
    Illustration,			(apic 18)
    Artist Logo,			(apic 19)
    Publisher Logo 			(apic 20)
    The code in the vb script tag.vbs:

    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    on error resume next
    ' ----------------get the filename from dbpoweramp-----------------
    Dim args, IDTagsTXT
    set args = Wscript.arguments
    IDTagsTXT = args(0)
    ' ------------------ load the tags -------------------------------
    Dim Elements(), Values()
    LoadTags Elements, Values, IDTagsTXT
    ' in this example we find the artist tag and set to abc
    Dim IndexTag
    IndexTag = GetTagIdx ("aRtist", Elements)
    if IndexTag > -1 THEN
        Values(IndexTag) = "abc"
    end if
    SaveTags Elements, Values, IDTagsTXT
    '------------------load the tags to the array----------------------------
    Sub LoadTags(Elements(), Values(), IDTagsTXT)
        Dim fso, objFileRead, TagCount
        TagCount = 0
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set objFileRead = fso.OpenTextFile(IDTagsTXT, ForReading, 0, -1)
        Do While objFileRead.AtEndOfStream <> True
            Dim Line, EqualPos, TagName, TagValue
            Line = objFileRead.ReadLine
            EqualPos = InStr(1, Line, "=", vbTextCompare)
            If EqualPos > 0 Then
                TagName = Left(Line, EqualPos -1)
                TagValue = Right(Line, Len(Line) - EqualPos)
                AddTag Elements, Values, TagName, TagValue, TagCount        
            End If
    End Sub
    '------------------Save the tags to the array----------------------------
    Sub SaveTags (Elements(), Values(), IDTagsTXT)
        Dim fso, objFileRead, TagCount
        TagCount = 0
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set objFileRead = fso.OpenTextFile(IDTagsTXT, ForWriting, true, -1)
        for i = 0 to UBound(Elements)
            if (Len(Elements(i)) > 0) Then
                Dim ToWrite
                ToWrite = Elements(i) + "=" + Values(i)
            End if
    End Sub
    '------------------adds a tag to the array----------------------------
    Sub AddTag (Elements(), Values(), Element, Value, ByRef TagCount)
        if (Len(Element) > 0) then 
        	ReDim Preserve Elements(TagCount + 1)
    	    ReDim Preserve Values(TagCount + 1)
    	    Elements(TagCount) = Element
    	    Values(TagCount) = Value
            TagCount = TagCount + 1
        end if
    End Sub
    '------------------finds a tag index, returns -1 if not there----------------------------
    Function GetTagIdx (Need, Elements())
    	GetTagIdx = -1
    	For i = 0 to Ubound(Elements)
            If StrComp(Elements(i), Need, vbTextCompare) = 0 Then 
                GetTagIdx = i
                Exit for
            End if
    End Function
    Last edited by Spoon; 06-06-2016 at 05:36 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts