EasyWPLSync

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

EasyWPLSync

Beitrag 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
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag 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!
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Das WPL Format ist das Playlist-Speicher Format des Windows Media Players :wink:
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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:
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag 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
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

JUP sonst hätte ich mit Google gefunden sorry, :iamwithstupid:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten