Autor |
Beitrag |
sekzero
      
Beiträge: 57
|
Verfasst: Fr 02.07.10 15:25
Hallo,
ich wollte eine kleine von mir geschriebene Anwendung vorstellen, die eigentlich ein sehr einfaches Problem löst. Und zwar wollte eine Bekannte die Lieder meine aktuellen Wiedergabeliste haben und ich dachte eigentlich, dass dies kein Problem wäre, doch dies war nicht der Fall. Es war tatsächlich weder mit Winamp oder dem MediaPlayer möglich eine M3U-Playliste zu exportieren, so dass man die MP3-Dateien separat in einem Ordner erhält. Doch da ich mich vor vielen Jahren recht intensiv mit Delphi beschäftigt habe und ich im Internet kein Programm finden konnte das mein Problem löst, habe ich mich selber ans Werk gemacht. Das Ergebnis ist M3UToFolder. Hier findet man noch weitere Infos:
Das Programm sollte eigentlich funktionieren, doch wenn jemand Fehler findet oder Verbesserungsvorschläge hat, wäre es nett diese NICHT für sich zu behalten
Grüße und viel Spaß
Zuletzt bearbeitet von sekzero am Mo 10.11.14 19:39, insgesamt 2-mal bearbeitet
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 02.07.10 15:38
_________________ We are, we were and will not be.
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: Fr 02.07.10 16:17
Okay, stimmt. Dein Programm kann das auch  Das mit dem Filter werde ich gleich ändern. Danke.
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: So 04.07.10 14:27
So, hab das Programm ein wenig überarbeitet und den ein oder anderen Fehler beseitigt:
Changelog:
-Filter für M3U-Playlisten eingefügt.
-Man kann den Öffnen-Dialog nun abbrechen ohne eine Fehlermeldung zu erhalten.
-Man kann nun Dateien aus der Playlist löschen, die nicht kopiert werden sollen.( Mit der Entfernen-Taste )
-Der Text im Textfeld "Meldungen" kann nun nicht mehr bearbeitet werden.
-Wenn man eine zweite Playlist umwandeln will, dann wird der Fortschrittsbalken nun korrekt angezeigt. Sprich er wird wieder auf Null gesetzt.
Hat noch jemand Ideen, was so ein Programm noch gebrauchen kann, ohne das es zu überladen wird?
|
|
rushifell
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: So 04.07.10 16:53
Hallo,
AmoK Playlist Copy kann das auch, was Dich allerdings nicht, davon abschrecken sollte, das Programm weiterzuentwickeln.
Die Idee gefällt mir aber trotzdem gut.
Ich habe folgende Fehler gefunden:
1.) Wenn ich eine Playlist lade, "Kopieren" wähle und auf "Abbrechen" klicke, kopiert er mir die Dateien trotzdem auf Laufwerk "E:\"
2.) Bei folgender Playlist findet das Programm die Titel 11 und 13 nicht (weil #EXTINF fehlt).
Quelltext 1: 2: 3: 4: 5: 6: 7:
| #EXTINF:317,Interpret - Titel (geändert) 09-AudioTrack 09.mp3 #EXTINF:246,Interpret - Titel 10-AudioTrack 10.mp3 11-AudioTrack 11.mp3 12-AudioTrack 12.mp3 13-AudioTrack 13.mp3 |
Scheint mir noch ziemlich "buggy" zu sein. Aber wenn Du das alles ausbügelst, wirds bestimmt ein gutes Programm
Ich fände es auch interessant, wenn man einfach die ausgewählten Einträge der Playlist (Multiselect) kopieren könnte.
Eine Überprüfung, ob alle Dateien der Playlist vorhanden sind bevor kopiert wird, fände ich auch gut (wäre auch interessant, eine Suchfunktion nach fehlenden Titeln einzubauen, ob manuell oder automatisch. Aber damit wäre das Programm dann vielleicht doch etwas überladen!?)
Gruß rushifell
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: Di 06.07.10 20:42
Hey,
danke für die Hinweise! Klingt nach ein paar guten Vorschlägen. Werde versuchen das so bald wie möglich umzusetzen  Ist scheinbar echt noch ein wenig fehlerhaft...
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: Fr 09.07.10 18:15
So, die von rushifell angesprochenen Fehler sind nun behoben
Changelog:
-Kopiervorgang kann nun abgebrochen werden, wenn man das Fenster schließt oder auf abbrechen klickt.
-Es werden keine Dateien mehr kopiert, wenn man die Zielordnerauswahl abbricht.
-"Fehlerhafte" Playlisten ohne "#EXTINF:" vor jedem Lied werden nun richtig erkannt.
-Fehlende Lieder werden nun schon vor dem Kopieren angezeigt.
To-Do:
-Fehlende Lieder in der Liste Rot einfärben
-Multiselect von Liedern
-Suchfunktion für fehlende Lieder
|
|
rushifell
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: Sa 10.07.10 17:41
Wunderbar. Das sieht schon besser aus.
Ich würde Dir noch empfehlen, bei jedem Update Im Programm die Versionsnummer (zumindest die "Build"-Nummer) und den Zusatz Alpha- (später Beta-) Version einzutragen (z.B. in der Caption vom Hauptformular). Eine Beta-Version, die ich veröffentliche, habe ich bereits auf Herz und Nieren, bis zum Erbre....  getestet und bin mir sicher, dass ich zumindest die gröbsten Fehler ausgemerzt habe.
sekzero hat folgendes geschrieben: | To-Do
...
-Suchfunktion für fehlende Lieder
|
Der Hintergrund dieser Idee ist, dass ich vor Jahren einen Mp3-Player gebaut habe, den ich jedoch nie veröffentlicht habe und auch nie werde, da das Projekt auf Eis liegt. Geplant war eine "Playlist-Repair -Funktion". Sobald Du Deine Mp3's verschiebst, die Ordner oder Mp3's umbenennst, sind die Playlisten nicht mehr aktuell. Daher hatte ich geplant, dass man einfach ein Verzeichnis (der Ordner, in dem alle Mp3's liegen) angibt und dieses dann nach den fehlenden Titeln durchsucht wird. Hierbei gibt es zwei Möglichkeiten: Du suchst nach dem Dateinamen (falls die Mp3 nicht umbenannt wurde), oder du suchst nach dem Taginhalt (Artist - Title), falls die Dateien umbenannt wurden. Für letzteres brauchst Du leider Id3-Tag-Unterstützung. Allerdings gibt es inzwischen einige sehr gute Libs, die Dir hierbei die meiste Arbeit abnehmen.
Ob Dein Programm dadurch zu überladen wäre, musst Du natürlich überlegen.
Eine weitere Idee, die ich hatte, die sehr einfach umzusetzen ist, ist eine automatische Suche nach Playlists in einem Verzeichnis (Zumindest bei mir sind die Playlists nämlich leider nicht sortiert).
Wenn ich mich richtig erinnere, gibt's hier im Forum auch ein Beispiel für einen Folder-Dialog, mit dem ein "Neues Verzeichnis" erstellt werden kann. Das fände ich auch sehr praktisch.
Viel Spaß noch beim Entwickeln
rushifell
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: So 11.07.10 19:44
Danke rushifell für das viele Feedback. Hab versucht die Suche nach fehlenden Dateien so einfach wie möglich zu gestalten. Die Suche geht auch relativ schnell von statten und funktioniert ganz gut. Es werden bei der Suche auch Dateien berücksichtigt, die ähnlich heißen wie die, nach der Gesucht worden ist. Den Prozentsatz der Übereinstimmung kann man selber bestimmen, was es auch ermöglicht alle Lieder von einem Interpreten anzeigen zu lassen. Außerdem wurde das Menü ebenfalls überarbeitet und gefällt mir nun besser. Das mit der Versionsnummer hab ich auch eingebracht. Macht Spaß nach so langer Zeit mal wieder zu programmieren.
Changelog:
-Fehlende Lieder werden nun farblich markiert.
-Neue Menüstruktur und übersichtlicheres User Interface.
-Es wird eine Fehlermeldung angezeigt, wenn keine Wiedergabeliste ausgewählt ist.
-Fehlende Lieder können nun gesucht werden und der Kopierliste hinzugefügt werden.
-Suchgenauigkeit kann eingestellt werden, da nach Prozent der Übereinstimmung gesucht wird
-Die Fenster können nicht mehr maximiert werden
-Versionsnummer hinzugefügt
-To-Do:
-Die Möglichkeit Verzeichnisse zu erstellen, in der die Lieder gespeichert werden sollen
-Automatische Suche nach Wiedergabelisten
|
|
rushifell
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: So 25.07.10 11:27
Gerne
Die Suchfunktion ist schonmal nicht schlecht. Du solltest Dein Programm aber selbst etwas genauer testen. Bei einer Übereinstimmung von 100% bei der Suche, findet das Programm bei mir die entsprechende Datei nicht (erst bei 99%). Eine Übereinstimmung von 0% halte ich nicht gerade für sinnvoll. Außerdem würde ich 100% als Standard festlegen. Bei der Suche ist es nicht schlecht, die Groß- und Kleinschreibung zu ignorieren, wenn Du davon ausgehst, dass die Dateien möglicherweise umbenannt wurden.
Wozu der Hinzufügen-Button gut sein soll, wusste ich im ersten Moment nicht, konnte es mir dann aber denken. Z.B. über die Eigenschaft "Hint" könntest Du den Button genauer beschreiben ("Gewählten Titel zur Playlist hinzufügen" oder ähnliches)
Ich fände es praktischer, wenn der fehlende Titel nicht ans Ende der Listbox angehängt wird, sondern an die entsprechende Position.
Ich würde, statt den Dateinamen, Interpret und Titel in Listbox eintragen, falls diese vorhanden sind, ansonsten eben den Dateinamen.
Was mir auch noch eingefallen ist und praktisch wäre ist, wenn man optional beim Kopieren eine neue Playlist erstellen könnte.
Wenn Du den ItemIndex der ListBox beim Programmstart auf -1 setzt, sieht's optisch besser aus
Gruß rushifell
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: So 25.07.10 18:38
So, ich habe nun wieder ein bisschen Zeit gefunden an dem Programm zu arbeiten und habe folgendes geschafft:
-Anzahl der noch zu kopierenden Lieder wird nun beim Kopieren angezeigt
-Die Suche funktioniert nun dynamisch. Das bedeutet, dass man die Suchgenauigkeit verändern kann, ohne eine neue Suche starten zu müssen
-Hints hinzugefügt. Verweilt man mit der Maus länger auf einem Button, dann wird ein Hinweis angezeigt.
-Erste Zeile aus dem Memo entfernt. Nun sieht die erste Meldung optisch besser aus
-Der Titelname muss nun zu mindestens 50% mit dem Suchnamen übereinstimmen
-Drag & Drop wird nun unterstützt.
-Bearbeitete Playlist kann nun gespeichert werden
-TabOrder hinzugefügt, damit man die Tabulator-Taste benutzen kann
-Fenster verkleinert und Anordnung der Buttons in der Suche überarbeitet
-Automatische Suche nach Liedern hinzugefügt
Und das will ich noch machen:
-Interpret und Titel anzeigen
-Die Möglichkeit Verzeichnisse zu erstellen, in der die Lieder gespeichert werden sollen
-Automatische Suche nach Wiedergabelisten
-Multiselect von Titeln die "Hinzugefügt" oder "Kopiert" werden sollen
-Internes Drag & Drop
Was meinst du mit ListBox beim Programmstart auf -1 setzen? Bei mir wirkt sich das optisch auf nichts aus. Sieht alles gleich aus? Ansonsten danke für deine vielen Verbesserungsvorschläge! Bringen mich wirklich weiter. Es kann aber wieder sein, dass sich der ein oder andere Fehler eingeschlichen hat, da ich sehr viel am internen Code gearbeitet habe.
|
|
rushifell
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: So 25.07.10 19:02
sekzero hat folgendes geschrieben: | Was meinst du mit ListBox beim Programmstart auf -1 setzen?
|
Sorry, das war ein Denkfehler meinerseits. Das funktioniert nur, wenn Multiselect der Listbox auf True gesetzt ist.
Erhält die Listbox beim Programmstart oder später den Fokus, so wird die erste Zeile der leeren Listbox markiert (leerer Rahmen). Im Grunde stört das nicht, aber zumindest mir gefällt das optisch nicht. Um das zu vermeiden, kannst Du z.B. auch ein leeres Panel erzeugen, dieses hinter der Listbox verstecken und im OnEnter-Ereignis der Listbox folgende Zeile einfügen:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.ListBox1Enter(Sender: TObject); begin IF ListBox1.Items.Count=0 then Panel1.SetFocus; end; |
Aber wie schon geschrieben, dient das nur der "Kosmetik" und ist nicht weiter wichtig. Vielleicht bin ich da auch etwas zu "eitel"
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt
EDIT:
Sag mal, kann es sein dass der Upload nicht funktioniert hat? Scheint noch die alte Version zu sein (hab die alte voreilig gelöscht).
|
|
sekzero 
      
Beiträge: 57
|
Verfasst: Mo 26.07.10 15:39
Also eigentlich sollte alles funktionieren mit dem Download. Hab das eben nochmal überprüft.
|
|
|