'MacroName:Playaway 'MacroDescription:Playaway 'written by John Lavalie, Aug. 23, 2006 option explicit option compare text global CS As Object '-------------------- function replace(strString as string, strOld as string, strNew as string) as string dim pos as integer pos = instr(strString, strOld) do while pos > 0 strString = left(strString, pos - 1) & strNew & mid(strString, pos + len(strOld)) pos = instr(strString, strOld) loop replace = strString end function '------------------- sub deleteTags(tag as string) dim found, temp$ found = CS.GetField (tag, 1, temp$) do while found CS.DeleteField tag, 1 found = CS.GetField (tag, 1, temp$) loop end sub '------------------- function cleanPublisher$(tag$) dim pos% tag$ = mid(tag$, 6) pos% = instr(tag$, chr(223) & "e") if pos% > 0 then tag$ = left(tag$, pos% - 2) if right(tag$, 1) = "," or right(tag$, 1) = "." then tag$ = left(tag$, len(tag$) - 1) cleanPublisher$ = tag$ end function '------------------- Sub Main Set CS = CreateObject("Connex.Client") dim tag$, Audn$, tag538$, tag300$ dim bool, delim$, note$, dur$ dim x%, LParen%, RParen%, gmd%, tag500% delim$ = chr(223) bool = CS.SetFixedField("Form", "q") bool = CS.GetFixedField ("Audn", Audn$) if Audn$ = "" then Audn$ = " " 'delete existing 006s and 007s deleteTags("006") deleteTags("007") tag$ = "006 m " & Audn$ & "q h " CS.AddField 1, tag$ tag$ = "007 s " & delim$ & "b z " & delim$ & "d u " & delim$ & "e u " & delim$ & "f n " tag$ = tag$ & delim$ & "g n " & delim$ & "h n " & delim$ & "i n " & delim$ & "m u " & delim$ & "n d" CS.AddField 1, tag$ tag$ = "007 c " & delim$ & "b s " & delim$ & "d n " & delim$ & "e z " & delim$ & "f a " CS.AddField 1, tag$ 'move 500 (Un)abridged to 250 bool = CS.GetField ("250", 1, tag$) if bool then CS.DeleteField "250", 1 CS.AddField 1, "500 " & mid(tag$, 6) end if 'fix 300 bool = CS.GetField ("300", 1, tag$) tag$ = replace(tag$, "hrs.", "hr.") LParen% = instr(tag$, "(") RParen% = instr(tag$, ")") gmd% = instr(tag$, delim$ & "b") tag300$ = "digital ; " & delim$ & "c 3 1/2 x 2 1/4 in. + " & delim$ tag300$ = tag300$ & "e 1 set of earphones + 1 AAA battery." if LParen% > 0 then dur$ = mid(tag$, LParen%, RParen% - LParen% + 1) tag$ = "300 1 sound media player " & dur$ & " : " & delim$ & "b " & tag300$ else tag$ = "300 1 sound media player " & ": " & delim$ & "b " & tag300$ end if CS.DeleteField "300", 1 CS.AddField 1, tag$ '538 tag538$ = "Playaway Digital Audio." bool = CS.GetField ("538", 1, tag$) if bool then 'prepend to 538 if instr(tag$, "Playaway") = 0 then CS.SetField 1, "538 " & tag538$ & " " & mid(tag$, 6) else 'add 538 CS.AddField 1, "538 " & tag538$ end if 'add 500 note$ = "500 Issued on Playaway, a dedicated audio media player." x% = 0 : tag500% = 0 do x% = x% + 1 bool = CS.GetField ("500", x%, tag$) if instr(tag$, "Issued on Playaway") then tag500% = x% loop until not bool 'fix 250 bool = CS.GetField ("250", x%, tag$) if bool then CS.DeleteField "250", 1 CS.AddField 1, "500 " & mid(tag$, 6) end if if tag500% > 0 then CS.SetField tag500%, note$ else CS.AddField 1, note$ end if 'add 500 note$ = "500 Accompanying material may vary." x% = 0 : tag500% = 0 do x% = x% + 1 bool = CS.GetField ("500", x%, tag$) if instr(tag$, "Accompanying material") then tag500% = x% loop until not bool or tag500% <> 0 '347 CS.ReplaceTextAll "audio file ßb ACLEP ß2 rda","audio file ßb Playaway audio ß2 local",0 CS.ReplaceTextAll "audio file ßb ACELP ß2 rda","audio file ßb Playaway audio ß2 local",0 CS.ReplaceTextAll "video file ßb ACLEP ß2 rda","audio file ßb Playaway video ß2 local",0 CS.ReplaceTextAll "video file ßb ACELP ß2 rda","audio file ßb Playaway video ß2 local",0 'remove common publishers dim pubs$ pubs$ = "Playaway Digital Audio, Findaway World, LLC, Hachette Audio (Firm), Brilliance Audio (Firm), Penguin Random House, Macmillan Audio (Firm)" x% = 1 CS.GetField "710", x%, tag$ tag$ = cleanPublisher$(tag$) do if instr(pubs$, tag$) then CS.DeleteField "710", x% x% = x% - 1 end if x% = x% + 1 CS.GetField "710", x%, tag$ tag$ = cleanPublisher$(tag$) loop until tag$ = "" if tag500% = 0 then CS.AddField 2, note$ CS.SetField 1, "344 digital " & chr(223) & "b non-volatile flash memory " & chr(223) & "2 rda" CS.Reformat End sub