Seite 1 von 1

EasyWPLSync

Verfasst: 16.09.2007 20:45
von Scarabol
Hi Leute,

ich habe mir mittlerweile einige Musik-Wiedergabelisten zusammengestellt, die ich je nach Laune aufrufe.
Eben fiel mir allerdings auf, dass ich diese nur sehr mühsam auf den MP3-Player kopieren kann, also hab ich schnell nen kleinen Code geschrieben, der die Lieder aus der Liste ausliest und in ein anderes Verzeichnis (MP3-Player) kopiert.

Jetzt das Beste: Das ganz ist OpenSource :o

Vielleicht kommt ja noch der ein oder andere auf eine Idee und kann sie posten order sogar ergänzen (werd den Code hier soweit es geht frisch halten).
Schiele jetzt vor allem in die Ecke der Winamp-, iTunes-, ect. Benutzer.

Code: Alles auswählen

File$ = OpenFileRequester("Windows Media-Wiedergabeliste auswählen:", "", "Wiedergabeliste (*.wpl)|*.wpl|Alle Dateien (*.*)|*.*", 0)
If File$ = ""
  End
EndIf
If ReadFile(1, File$) = 0
  MessageRequester("Error", "Die Datei"+Chr(10)+File$+Chr(10)+"konnte nicht geladen werden!", #MB_ICONERROR)
  End
EndIf

TargetDir$ = PathRequester("Ziel Verzeichnis wählen:", "")
If TargetDir$ = ""
  End
EndIf
If ExamineDirectory(0, TargetDir$, "*.*") = 0
  MessageRequester("Error", "Das Zielverzeichnis"+Chr(10)+TargetDir$+Chr(10)+"konnte nicht verwendet werden!", #MB_ICONERROR)
  End
EndIf

NewList Musik.s()

While Eof(1) = 0
  String$ + Trim(ReadString(1, #PB_UTF8))
Wend

While StringField(String$, n, ">") <> "<seq"
  n+1
Wend

c = n+1
Repeat
  temp.s = StringField(String$, c, ">")
  If temp = "</seq"
    Break
  EndIf
  AddElement(Musik())
  Musik() = GetPathPart(File$)+StringField(temp, 2, Chr(34))
  c+1
Until c > 50000

If c > 50000
  If MessageRequester("Error", "Das Limit von 50.000 Musiktiteln wurde erreicht."+Chr(10)+Chr(10)+"Möchten Sie fortfahren?", #MB_ICONERROR|#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
    End
  EndIf
EndIf

While NextDirectoryEntry(0)
  ForEach Musik()
    If DirectoryEntryName(0) = GetFilePart(Musik())
      DeleteElement(Musik())
      Break
    ElseIf DirectoryEntryType(0) = #PB_DirectoryEntry_File And MD5FileFingerprint(TargetDir$+DirectoryEntryName(0)) = MD5FileFingerprint(Musik())
      If MessageRequester("Info", "Die Datei '"+GetFilePart(Musik())+"' existiert bereits unter dem Namen '"+DirectoryEntryName(0)+"'"+Chr(10)+Chr(10)+"Möchten Sie die bereits vorhandene Datei umbenennen?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
        RenameFile(TargetDir$+DirectoryEntryName(0), TargetDir$+GetFilePart(Musik()))
      EndIf
      Break
    EndIf
  Next
Wend

Error = 0
ForEach Musik()
  If CopyFile(Musik(), TargetDir$+GetFilePart(Musik())) = 0
    If MessageRequester("Error", "Kopieren der Datei '"+GetFilePart(Musik())+"' fehlgeschlagen!"+Chr(10)+Chr(10)+"Quelldatei:"+Chr(10)+Musik()+Chr(10)+"Zieldatei:"+Chr(10)+TargetDir$+GetFilePart(Musik())+Chr(10)+Chr(10)+"Möchten Sie die Synchronisation fortsetzen?", #MB_ICONERROR|#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
      End
    EndIf
    Error+1
  EndIf
Next

If Error
  MessageRequester("Hinweis", "Synchronisation nur teilweise erfolgreich!"+Chr(10)+Chr(10)+Str(Error)+" von "+Str(CountList(Musik()))+" Dateien übertragen!", #MB_ICONWARNING)
Else
  MessageRequester("Hinweis", "Die Synchronisation war erfolgreich!", #MB_ICONINFORMATION)
EndIf
Gruß
Scarabol

Verfasst: 16.09.2007 21:05
von roherter
Was ist das WQL format oder womit erstellt man so eine liste.
Das zu wissen wäre Hilfreich damit man es vernünftig benutzen kann!

Verfasst: 16.09.2007 21:29
von milan1612
Das WPL Format ist das Playlist-Speicher Format des Windows Media Players :wink:

Verfasst: 16.09.2007 22:03
von HeX0R
Interessanter Vertipper, wenn man bedenkt wie weit das Q vom P entfernt ist... hättest wohl mal nen Krake werden sollen roherter, wa ? :lol:

Verfasst: 16.09.2007 22:13
von Scarabol
Denke eher das Roherter sich in Gedanken das alphabet vorgestellt hat und da ist das p vom q nur einen Quantensprung entfernt.

Gruß
Scarabol

Verfasst: 16.09.2007 22:21
von roherter
JUP sonst hätte ich mit Google gefunden sorry, :iamwithstupid: