Programm zum erstellen einer Musikplaylist

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Programm zum erstellen einer Musikplaylist

    Hallo liebe Community,
    ich möchte ein Programm erstellen, das auf der linken Seite alle vorhandenen Musikdateien ausgibt (Hautproblem). Auf der rechten seite soll eine Playlist sein in diese man die Lieder von links schieben kann.
    Alle Lieder aus Eigene Musik in ListView?
    Dieser Link beschreibt genau was ich will, allerdings sind meine Lieder in einem anderen Ordner (Medienserver am Router). Das heißt man müsste für (Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)) eine andere Lösung finden. Doch wie geht das, Musikdateien aus einem normalen Ordner einzulesen?
    Außerdem brauche ich noch Hilfe dabei, das ausgewählte ListView-Item in die Playlist einzufügen.
    ListView2.Items.Add(ListView1.SelectedItems) scheint ebenfalls nicht zu funktionieren...
    Wäre toll wenn mir jemand helfen könnte, vielen Dank
    Superscheibenkleiste
    1.

    Superscheibenkleiste schrieb:

    Hautproblem
    google.de/search?sourceid=chro…=chrome..69i57j0.8451j0j7


    2. Lass dir doch einfach mal ausgeben, was denn Environment.GetFolderPath(Environment.SpecialFolder.MyMusic) darstellt, dann wirste merken was du ändern musst ;)

    3. ListView2.Items.Add(ListView1.SelectedItems) Gucke dir die Methode mal auf MSDN oder sonstwo an, und sag mir, warum du nicht ListView1.SelectedItemsübergeben kannst. DAnn kommen wir weiter.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Um Dateien aus einem bestimmtem Ordner in einem ListView hinzuzufügen, benutze folgendes:

    VB.NET-Quellcode

    1. For Each MP3 As String In IO.Directory.GetFiles("C:\Meine Mukke\", "*.mp3", IO.SearchOption.TopDirectoryOnly)
    2. ListView1.Items.Add(System.IO.Path.GetFullPath(MP3), 0)
    3. Next


    Und um den Pfad aus dem ausgewähltem ListViewItem zu bekommen, benutze folgendes:

    VB.NET-Quellcode

    1. If ListView1.SelectedItems.Count > 0 Then
    2. ListView1.SelectedItems(0).SubItems(0).Text
    3. End If


    Merke:
    Pfade in Listviews zu speichern ist eher unangebracht.
    Stattdessen solltest du Objekte in den Listviews verstauen, und dann dessen Eigenschaften benutzen.
    Super vielen Dank Trivium, nur leider funktioniert die einschränkung auf "*.mp3" nicht, stattdessen wird nichts aufgelistet.
    Wenn ich "*" eingebe werden alle dateien im Ordner angezeigt...
    Wie lange würde das einscannen von ca 5.000 Liedern mit dieser Methode dauern?
    Wäre blöde wenn mann bei jedem Systemneustart so lange warten müsste...
    Gibt es eine möglichkeit, die eingelesenen Verzeichnisse irgendwie zu speichern, sodass sie auch nach Systemneustart sofort verwendbar sind?
    Danke
    Superscheibenkleiste
    PS. Wie würde man es mit Objekten und Eigenschaften machen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Superscheibenkleiste“ ()

    Das ist das erste Programm seit langem das ich entwickle... sorry aber für die dummen:
    Was sind Pattern? Muss ich etwas anders machen, sodass nur die mp3 Files aufgelistet werden?

    Und nochmal, das einlesen am Anfang dauert zu lange, kann ich alles vorab indexieren?
    Gruß,
    Superscheibenkleiste
    Pattern ist das englische Wort für "Muster" ;D
    Das Einlesen dauert lange, wenn du viel zum durchsuchen hast.
    Im Normalfall lädt man ja auch nicht bei jedem Start alles neu. Sowas wird eigentlich nur einmalig gemacht. Und dann wird nurnoch geändert.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Superscheibenkleiste schrieb:

    stattdessen wird nichts aufgelistet.
    Ich denke mal, dass der Pfad nicht stimmt.
    Teste diesen Programmteil, indem Du in das temporäre Verzeichnis ein paar wenige MP3-Dateien kopierst und dann das temporäre Verzeichnis als Startverzeichnis vorgibst.
    Danach setzt Du das richtige Verzeichnis.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Superscheibenkleiste schrieb:

    aber wie kann ich
    Trenne Deine Probleme und bearbeite sie unabhängig in je einem kleinen Testprogramm.
    Wenn dann alles läuft, füge die Teillösungen in einem neuen Projekt zusammen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    nochma zurück zu

    Superscheibenkleiste schrieb:

    Was sind Pattern? Muss ich etwas anders machen, sodass nur die mp3 Files aufgelistet werden?
    guck meinen Post, der zitiert ein winz-Stückle aus deim Code.
    Dann gugge deinen Code nochmal, und gugge Triviums-Code an der entsprechenden Stelle.
    Da siehst du den Unterschied, auf den ich aufmerksam machen wollte, und dann erklärt sich "Pattern" glaub auch selbst aus dem Zusammenhang.
    Jo - gemeint ist hier: "Such-Muster" - denn es ist ja eine Datei-Suche, (die bei Trivium funktioniert, und bei dir nicht.)

    Superscheibenkleiste schrieb:

    trotzdem funktioniert's nicht!

    RodFromGermany schrieb:

    Teste diesen Programmteil, indem Du in das temporäre Verzeichnis ein paar wenige MP3-Dateien kopierst und dann das temporäre Verzeichnis als Startverzeichnis vorgibst.
    Setz nen Haltepunkt rein und überzeuge Dich, dass Dein Code korrekt ist.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Superscheibenkleiste schrieb:

    weil ich weiß wo der Fehler liegt...
    Poste mal den ganzen Code.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
    3. Suchergebnisse.Items.Clear()
    4. For Each Audio As String In IO.Directory.GetFiles("Y:\MedienServer\Musik\", "*.mp3", IO.SearchOption.AllDirectories)
    5. Suchergebnisse.Items.Add(System.IO.Path.GetFileName(Audio), 0)
    6. Next
    7. End Sub
    8. Private Sub Suchen_Click(sender As System.Object, e As System.EventArgs) Handles Suchen.Click
    9. Suchergebnisse.Items.Clear()
    10. For Each Ergebnis As String In IO.Directory.GetFiles("Y:\MedienServer\Musik\", Suchleiste.Text & "*.mp3", IO.SearchOption.AllDirectories)
    11. Suchergebnisse.Items.Add(System.IO.Path.GetFileName(Ergebnis))
    12. Next
    13. End Sub
    14. Private Sub AlleAnzeigen_Click(sender As System.Object, e As System.EventArgs) Handles AlleAnzeigen.Click
    15. Suchergebnisse.Items.Clear()
    16. For Each Audio As String In IO.Directory.GetFiles("Y:\MedienServer\Musik\", "*.mp3", IO.SearchOption.AllDirectories)
    17. Suchergebnisse.Items.Add(System.IO.Path.GetFileName(Audio), 0)
    18. Next
    19. End Sub
    20. Private Sub Suchergebnisse_DoubleClick(sender As Object, e As System.EventArgs) Handles Suchergebnisse.DoubleClick
    21. If Suchergebnisse.SelectedItems.Count > 0 Then
    22. Playlist.Items.Add(Suchergebnisse.SelectedItems(0).SubItems(0).Text)
    23. End If
    24. End Sub
    25. Private Sub Playlist_DoubleClick(sender As Object, e As System.EventArgs) Handles Playlist.DoubleClick
    26. Try
    27. AxWindowsMediaPlayer1.newMedia(System.IO.Path.GetDirectoryName(Suchergebnisse.SelectedItems(0).SubItems(0).Text))
    28. Catch : MsgBox("Element wurde nicht gefunden", MsgBoxStyle.Critical, "Fehler")
    29. End Try
    30. End Sub
    31. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Superscheibenkleiste“ ()

    @Superscheibenkleiste Sagte ich bereits zwei Mal:

    RodFromGermany schrieb:

    Teste diesen Programmteil, indem Du in das temporäre Verzeichnis ein paar wenige MP3-Dateien kopierst und dann das temporäre Verzeichnis als Startverzeichnis vorgibst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sorry, aber welches temporäre Verzeichnis?
    Bei "*" werden alle Dateien in z.B. "Y:\MedienServer\Musik\Reinhard Mey" angezeigt, auch die darin befindlichen .jpg-Dateien
    Wenn ich die Suche auf "*.mp3" eingrenze werden keine Dateien mehr gefunden.

    Superscheibenkleiste schrieb:

    Sorry, aber welches temporäre Verzeichnis?
    c:\Temp
    Natürlich nur zum Test Deines Programms.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!