' Shoutcast_to_Xml.vbs RevA.2 ' *** modified by D. Lanik Dec 2005, Rev. 1 Dim oShell Dim lGenre ' ---------------------------------------8<--------------------------------------- Shoutcast_XML_File = "C:\Program Files\Xlobby\databases\shoutcast.xml" Shoutcast_Pls_Files = "C:\Program Files\Xlobby\databases\Shoutcast" ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- Shoutcast_Pls_List_Files = Shoutcast_Pls_Files & "\Pls_list.lst" Cnv_html_Link = False ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- Set FSO_XMLShout = CreateObject("Scripting.FileSystemObject") Set XML_Shoutcast_F = FSO_XMLShout.CreateTextFile(Shoutcast_XML_File,True) ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- ' Construct Pls list... Set oShell = WScript.CreateObject ("WSCript.shell") ' Pls_Cmd_Line = "cmd /K dir " & Chr(34) & Shoutcast_Pls_Files & "\*.pls" & Chr(34) &" /S /b > Pls_list.lst & Exit" 'Pls_Cmd_Line = "cmd /K dir " & Chr(34) & Shoutcast_Pls_Files & "\*.pls" & Chr(34) &" /S /b > " & Chr(34) & Shoutcast_Pls_List_Files & Chr(34) &" & Exit" Pls_Cmd_Line = "cmd /K dir " & Chr(34) & Shoutcast_Pls_Files & "\*.pls" & Chr(34) &" /S /b > " & _ Chr(34) & Shoutcast_Pls_List_Files & Chr(34) & " & Exit" RetVal = oShell.run(Pls_Cmd_Line,0,True) ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- ' Read Pls_list file and construct out file Write_XML_Header_Function Set FSO_Pls_File = CreateObject("Scripting.FileSystemObject") Set Pls_File = FSO_Pls_File.OpenTextFile(Shoutcast_Pls_List_Files, 1, True) Idx = 0 lGenre = "" Do While Pls_File.AtEndOfLine <> True Token = Trim(Pls_File.ReadLine) If ( InStr(Token,".pls") <> 0 ) Then Idx = Idx + 1 Pls_Parameter = Token Pls_File_Name = Extract_Pls_File_Name(Token) Pls_Bitrate = Extract_Pls_Birate(Token) Pls_Name = Extract_Pls_Name(Token) Pls_Genre = Extract_Pls_Genre(Token,Pls_File_Name) Pls_Folder = Extract_Pls_Folder(Token) Pls_File_Addr = Extract_Pls_File_Addr(Pls_Parameter) ' MsgBox Pls_File_Name & " -> " & Pls_Bitrate & " >> " & Pls_Name & " Genre= [" & Pls_Genre & "]" XML_Shoutcast_F.WriteLine("") if( lGenre <> Pls_Genre ) Then if( Idx <> 1 ) Then XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") End If XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Genre) & "") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Genre) & "") XML_Shoutcast_F.WriteLine(" folder") XML_Shoutcast_F.WriteLine(" ") lGenre = Pls_Genre End if XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Folder) & "") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_File_Name) & "") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" track") If Cnv_html_Link Then XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_File_Addr) & "") Else XML_Shoutcast_F.WriteLine(" " & Pls_File_Addr & "") End If XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_File_Name) & "") XML_Shoutcast_F.WriteLine(" ") If Cnv_html_Link Then XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_File_Addr) & "") Else XML_Shoutcast_F.WriteLine(" " & Pls_File_Addr & "") End If XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Genre) & "") XML_Shoutcast_F.WriteLine(" " & Pls_Bitrate & "") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Name) & "") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Genre) & "") XML_Shoutcast_F.WriteLine(" " & Pls_Bitrate & "") XML_Shoutcast_F.WriteLine(" " & Replace_Special_XML_Caracters(Pls_Name) & "") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") End If Loop XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" ") MsgBox "Update done : " & Idx & " radios found." Pls_File.Close Write_XML_Tail_Function XML_Shoutcast_F.Close Wscript.Quit ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- Function Write_XML_Header_Function() XML_Shoutcast_F.WriteLine("") XML_Shoutcast_F.WriteLine("") XML_Shoutcast_F.WriteLine(" display") XML_Shoutcast_F.WriteLine(" ") XML_Shoutcast_F.WriteLine(" genre") XML_Shoutcast_F.WriteLine(" birate") XML_Shoutcast_F.WriteLine(" name") XML_Shoutcast_F.WriteLine(" ") End Function Function Write_XML_Tail_Function() XML_Shoutcast_F.WriteLine("") XML_Shoutcast_F.WriteLine("") End Function Function Replace_Special_XML_Caracters(TokenBase) TokenBase = Replace(TokenBase,"&","&") TokenBase = Replace(TokenBase,"'","'") TokenBase = Replace(TokenBase,"é","é") TokenBase = Replace(TokenBase,"è","è") TokenBase = Replace(TokenBase,"ê","ê") TokenBase = Replace(TokenBase,"à","à") TokenBase = Replace(TokenBase,"á","á") TokenBase = Replace(TokenBase,"â","â") TokenBase = Replace(TokenBase,"ä","ä") TokenBase = Replace(TokenBase,"æ","æ") TokenBase = Replace(TokenBase,"å","å") TokenBase = Replace(TokenBase,"ç","ç") TokenBase = Replace(TokenBase,"ë","ë") TokenBase = Replace(TokenBase,"ñ","ñ") TokenBase = Replace(TokenBase,"ô","ô") TokenBase = Replace(TokenBase,"ò","ò") TokenBase = Replace(TokenBase,"ó","ó") TokenBase = Replace(TokenBase,"ö","ö") TokenBase = Replace(TokenBase,"ù","ù") TokenBase = Replace(TokenBase,"ú","ú") TokenBase = Replace(TokenBase,"û","û") TokenBase = Replace(TokenBase,"ü","ü") TokenBase = Replace(TokenBase,"ì","ì") TokenBase = Replace(TokenBase,"í","í") TokenBase = Replace(TokenBase,"î","î") TokenBase = Replace(TokenBase,"ï","ï") TokenBase = Replace(TokenBase,"°","˚") TokenBase = Replace(TokenBase,"˜","˜") TokenBase = Replace(TokenBase,"º","º") TokenBase = Replace(TokenBase,"ˆ","ˆ") TokenBase = Replace(TokenBase,"“","“") TokenBase = Replace(TokenBase,"”","”") TokenBase = Replace(TokenBase,"‘","‘") TokenBase = Replace(TokenBase,"’","’") TokenBase = Replace(TokenBase,"À","À") TokenBase = Replace(TokenBase,"Á","Á") TokenBase = Replace(TokenBase,"Â","Â") TokenBase = Replace(TokenBase,"Ã","Ã") TokenBase = Replace(TokenBase,"Ä","Ä") TokenBase = Replace(TokenBase,"Å","Å") TokenBase = Replace(TokenBase,"Æ","Æ") TokenBase = Replace(TokenBase,"Ç","Ç") TokenBase = Replace(TokenBase,"È","È") TokenBase = Replace(TokenBase,"É","É") TokenBase = Replace(TokenBase,"Ê","Ê") TokenBase = Replace(TokenBase,"Ë","Ë") TokenBase = Replace(TokenBase,"Ì","Ì") TokenBase = Replace(TokenBase,"Í","Í") TokenBase = Replace(TokenBase,"Î","Î") TokenBase = Replace(TokenBase,"Ï","Ï") TokenBase = Replace(TokenBase,"Ð","Ð") TokenBase = Replace(TokenBase,"Ñ","Ñ") TokenBase = Replace(TokenBase,"Ò","Ò") TokenBase = Replace(TokenBase,"Ó","Ó") TokenBase = Replace(TokenBase,"Ô","Ô") TokenBase = Replace(TokenBase,"Õ","Õ") TokenBase = Replace(TokenBase,"Ö","Ö") TokenBase = Replace(TokenBase,"×","×") TokenBase = Replace(TokenBase,"Ø","Ø") TokenBase = Replace(TokenBase,"Ù","Ù") TokenBase = Replace(TokenBase,"Ú","Ú") TokenBase = Replace(TokenBase,"Û","Û") TokenBase = Replace(TokenBase,"Ü","Ü") TokenBase = Replace(TokenBase,"Ý","Ý") TokenBase = Replace(TokenBase,"Œ","Œ") TokenBase = Replace(TokenBase,"œ","œ") TokenBase = Replace(TokenBase,"ƒ","ƒ") ' TokenBase = Replace(TokenBase,":",":") ' TokenBase = Replace(TokenBase,";",";") ' TokenBase = Replace(TokenBase,"#","#") TokenBase = Replace(TokenBase,"!","!") TokenBase = Replace(TokenBase,"?","?") TokenBase = Replace(TokenBase,"%","%") TokenBase = Replace(TokenBase,"'","'") TokenBase = Replace(TokenBase,chr(34),""") TokenBase = Replace(TokenBase,"³","3") Replace_Special_XML_Caracters = TokenBase End Function ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<--------------------------------------- Function Extract_Pls_File_Name(Tkn) Pos_Left = InStrRev(Tkn,"\") Pos_Right = InStr(Tkn, ".pls") Extract_Pls_File_Name = Replace(Mid(Tkn,Pos_Left+1),".pls","") End Function Function Extract_Pls_Birate(Tkn) Pos_Left = InStrRev(Tkn,"(") Pos_Right = InStr(Tkn, ").pls") Extract_Pls_Birate = Replace(Mid(Tkn,Pos_Left+1),").pls","") End Function Function Extract_Pls_Name(Tkn) Pos_Left = InStrRev(Tkn,"\") Pos_Right = InStrRev(Tkn, "(") Tkn2 = Mid(Tkn,Pos_Left+1,Pos_Right-Pos_Left-2) Pos_Left = InStr(Tkn2," ") Extract_Pls_Name = Mid(Tkn2,Pos_Left+1) End Function Function Extract_Pls_Genre(Tkn,Pls_FName) Tkn = replace(Tkn,"\"&Pls_FName&".pls","") Pos_Left = InStrRev(Tkn,"\") Extract_Pls_Genre = Mid(Tkn,Pos_Left+1) End Function Function Extract_Pls_Folder(Tkn) Pos_Right = InStr(Tkn, "\") Extract_Pls_Folder = Mid(Tkn,Pos_Right+1) End Function Function Extract_Pls_File_Addr(Tkn) Set FSO_Dedicated_File = CreateObject("Scripting.FileSystemObject") Set Dedicated_File = FSO_Dedicated_File.OpenTextFile(Tkn, 1, True) Do While Dedicated_File.AtEndOfLine <> True Tkn_addr = Trim(Dedicated_File.ReadLine) If ( InStr(LCase(Tkn_addr),LCase("File1=")) <> 0 ) Then RetVal = Replace(Tkn_addr,"File1=","") Exit Do End If Loop Dedicated_File.Close Extract_Pls_File_Addr = RetVal End Function ' ---------------------------------------8<--------------------------------------- ' ---------------------------------------8<---------------------------------------