' -------------------------------------------------------------- ' Dieses Skript sucht nach einer bestimmten Bilddatei in allen ' Lieder-Verzeichnissen und kopiert diese in die Jukebox ' Bilderdatenbank, falls noch kein Bild vorhanden ist. ' ' Geschrieben von T.G.ViRUS am 05.01.2005 ' -------------------------------------------------------------- Sub Main() Dim strAsk1, strAsk2, strTxt1, strTxt2, strTxt3, strTxt4 Dim strAlbumArtistName, strRootPath Dim strPicName, strPrefix Dim lngCount, lngProcessed Dim lngFound strAsk1 = "Dieses Skript sucht nach einer bestimmten Bilddatei in allen" & vbCrLf strAsk1 = strAsk1 & "Lieder-Verzeichnissen und kopiert diese in die Jukebox-" & vbCrLf strAsk1 = strAsk1 & "Bilderdatenbank, falls noch kein Bild vorhanden ist." & vbCrLf & vbCrLf strAsk1 = strAsk1 & "Suche Bilder in Lieder-Verzeichnissen für Bilderzuweisung von..." & vbCrLf & vbCrLf strAsk1 = strAsk1 & "1. Alben" & vbCrLf strAsk1 = strAsk1 & "2. Künstler" & vbCrLf strAsk1 = strAsk1 & "3. Abbrechen" strAsk2 = "Name der gesuchten Bilddatei (z. Bsp.: picture.jpg, folder.jpg)" strTxt1 = "Suche Verzeichnis-Bild in Lied " strTxt2 = " von " strTxt3 = "Gefunden und kopiert: " strTxt4 = "Bildersuche beendet!" Start: Select Case InputBox(strAsk1, 3) Case "1" strPrefix = "A " 'Album prefix Case "2" strPrefix = "I " 'Artist prefix Case Else ' Assistenten abbrechen Exit Sub End Select strPicName = InputBox(strAsk2, "folder.jpg") If strPicName = "" Then GoTo Start ' Sämtliche Lieder werden nun durchsucht... rs.Open("SELECT Album, Artist, PathOfSong from qry_Song") lngCount = rs.RecordCount lngProcessed = 0 lngFound = 0 db.StartProgressMonitor(lngCount) Do Until rs.EOF strAlbumArtistName = NameToFile(rs.GetField(IIf(strPrefix = "A ", "Album", "Artist"))) strRootPath = fs.GetParentFolderName(db.SQLToPath(rs.GetField("PathOfSong"))) If Right(strRootPath, 1) <> "\" Then strRootPath = strRootPath & "\" If CopyPicture(strPrefix & strAlbumArtistName, strRootPath & strPicName) Then lngFound = lngFound + 1 End If lngProcessed = lngProcessed + 1 If (lngProcessed Mod 10) = 0 Then db.PrintProgressMonitor(strTxt1 & lngProcessed & strTxt2 & lngCount & vbCrLf & strTxt3 & lngFound) End If db.SetProgressMonitor(lngProcessed) rs.MoveNext Loop db.PrintProgressMonitor(strTxt3 & lngFound & vbCrLf & strTxt4) db.EndProgressMonitor End Sub '--------------------------------------------------------- ' Kopiere vorhandenes Bild in die Jukebox Bilderdatenbank '--------------------------------------------------------- Function CopyPicture(vstrName, vstrPicturePath) Dim strExt Dim strDestPic ' Suche Bild im Verzeichnis If fs.FileExists(vstrPicturePath) Then strExt = fs.GetExtensionName(vstrPicturePath) strDestPic = App.Path & "\Pictures\" & vstrName & "." & strExt ' Vorhandene Bilder in Datenbank werden nicht überschrieben If Not fs.FileExists(strDestPic) Then ' Kopiere Bild nun in die Bilderdatenbank fs.CopyFile(vstrPicturePath, strDestPic) Return True End If End If Return False End Function '--------------------------------------------------------- ' Konvertiert Alben oder Künstlername in ein Dateiformat '--------------------------------------------------------- Function NameToFile(vstrName) Dim strNewName strNewName = Replace(vstrName, Chr(160), " ") strNewName = Replace(strNewName, "/", "_") strNewName = Replace(strNewName, "\", "_") strNewName = Replace(strNewName, ":", ";") strNewName = Replace(strNewName, "*", ".") strNewName = Replace(strNewName, "|", "!") strNewName = Replace(strNewName, "?", "!") strNewName = Replace(strNewName, """", "'") strNewName = Replace(strNewName, ">", "") strNewName = Replace(strNewName, "<", "") Return strNewName End Function