Entwickler-Ecke
Freeware Projekte - Mp3 Player mit automatisierter Songtextsuche+Coversuche
pigfacejoe - Sa 28.06.08 20:45
Titel: Mp3 Player mit automatisierter Songtextsuche+Coversuche
Guten Abend,
ich möchte hier meinen Mp3 Player vorstellen, der in der Lage ist Playlisten zu speichern, diese zu durchsuchen, Cover zu gerade spielenden Liedern zu finden, Songtexte zu finden, ID3Tags auszulesen und neuerdings auch Musikvideos zu spielenden Songs zu finden.
Cover und Songtexte werden im Ordner Anwendungsdaten\Mp3Library gespeichert. (z.B C:\Dokumente u. Einstellungen\name\Anwendungsdaten)
Ich freue mich über Verbesserungsvorschläge und hoffe , dass der ein oder andere das Programm ausprobiert ;-)
EDIT: Ich habe den Player nocheinmal grundsaniert, zu finden ist die neueste Version immer unter
http://www.max-altmeyer.de/mp3lib15.php , der entsprechende Beitrag hier im Forum findet ihr unter
http://www.delphi-forum.de/topic_Musikverwaltung+und+MusikplayerMp3Library+15_93301.html
Gruß
Max
Blackheart666 - Sa 28.06.08 21:41
Einfaches anklicken des Titels und dann Play funktioniert nicht, startet nur mit Doppelklick vieleicht solls ja so sein.
Stop Button hat die selbe funktion wie der Pause Button.
Die Zeit würd ich mit Nullen auffüllen sieht besser aus 1:9 - 1:09
Ganze Verzeichnisse per Drag and Drop wäre nicht schlecht.
Wenn ein Lied spielt und ich alle Titel aus der Liste lösche spielt er trotzdem weiter.
Für die Suche braucht man noch eine Hilfedatei ich weiss nicht so recht wie das funzt.
Die Farben naja die volumebar passt nicht so recht ins gesamtbild, die Schrift mit dem schwarz weiss macht irgendwie Augenschmerzen.
Ansonsten schon mal nicht schlecht.
Ist mir etwas zu wuchtig, schlecht zu händeln beim Drag and Drop.
Gausi - Sa 28.06.08 22:14
Um ehrlich zu sein: Ich weiß nicht, was ich sagen soll. Das Design und Steuerung ist etwas gewöhnungsbedürftig - um es vorsichtig zu sagen.
Aber: Die Cover- und Lyricsuche haut da einiges wieder raus. Die funktioniert bei mir, und auf den ersten Blick erstaunlich gut! :zustimm:
Das ist so etwas, wo ich gerne mal einen Blick (oder auch ein paar mehr Blicke) in den Quelltext hätte, um das dann an anderer Stelle mit entsprechender Notiz in der About-Box einbauen zu können. ;-)
pigfacejoe - So 29.06.08 00:06
Wow, ging ja ziemlich schnell.. Vielen Dank für's testen!!
Also:
| Zitat: |
| Stop Button hat die selbe funktion wie der Pause Button. |
-> Stimmt. Muss geändert werden.
| Zitat: |
| Ganze Verzeichnisse per Drag and Drop wäre nicht schlecht. |
-> Auch richtig.
| Zitat: |
| Für die Suche braucht man noch eine Hilfedatei ich weiss nicht so recht wie das funzt. |
...kann ich verstehn...Diese Checkbox ist hier eigentlich wie ein button zu bedienen, ist wirklich etwas seltsam :oops:
| Zitat: |
| Ich weiß nicht, was ich sagen soll. Das Design und Steuerung ist etwas gewöhnungsbedürftig - um es vorsichtig zu sagen. |
Ohje, ich kann einfach machen was ich will. Designtechnisch bin ich wohl einfach ungeeignet..
Ich setze eure Anregungen mal soweit um, den Quelltext liefere ich noch nach!
Kurz vorweg: Ich Suche den Songtext über Google und filtere den Link zum Songtext aus den Google Ergebnissen heraus.
Das Cover Bild suche ich bei Google Bilder, da das nicht so 100% genau ist, habe ich dort dem Nutzer die Chance gegeben aus 10 Vorschlägen ein Coverbild zu wählen.
Also, nochmals Danke für das Feedback, weitere Kommentare sind natürlich erwünscht! (und vlt. auch ein paar Tips, damit das mit dem Design mal irgendwann funktioniert :cry: )
Gruss
PigfaceJoe
Delete - So 29.06.08 00:12
Moin!ich hab das prog auch mal getestet und fand es vom design sehr angenehm.
was mich allerdings gestört hat war dass ich nichts mit den Laden und Speichern Button
anfangen konnte.Hints wären ganz schön.
Ich habe grade bei mir die festplatte entleert und windooof xp neu raufgekloppt-
also hatte ich nur die beispiel-musik zum probieren da.
aber dein prog konnte das nicht abspielen!WMA Format!
es sollte wenigstens die standart formate kennen.
Sonst kann ich nich viel zum prog sagen.
Werde wohl morgen(bzw.heute (in c.a 10h))mal ausführlich berichten.
Gute Nacht! 8)
Jakob_Ullmann - So 29.06.08 12:04
j.klugmann hat folgendes geschrieben: |
also hatte ich nur die beispiel-musik zum probieren da.
aber dein prog konnte das nicht abspielen!WMA Format!
es sollte wenigstens die standart formate kennen. |
Hast du einen Codec installiert?
pigfacejoe - So 29.06.08 12:17
Moin!
| Zitat: |
also hatte ich nur die beispiel-musik zum probieren da.
aber dein prog konnte das nicht abspielen!WMA Format!
es sollte wenigstens die standart formate kennen. |
Hab ich jetzt verbessert: Er kennt WAV, wma, mp3
Die Buttons haben Hints in der neuen Version,
ein kleiner Fehler bei der Songtext Suche habe ich behoben.
Ausserdem habe ich die Vorschläge umgesetzt mit einer Ausnahme: Das man Ordner per Drag and Drop einfügen kann. (Bei meiner TStringlist zeigt er dann immer an Listenindex überschreitet das Maximum 1) Ich schau mich da mal noch um.
Gruss
Max
Delete - So 29.06.08 12:49
mOIN!Ich hab mal einn lied ohne text abgespielt und dem programm gesagt das es
einen songtext suchen soll-Aber das programm stürtzte nach c.a 25 sek ab.
Woran kann das liegen?
Sonst hat sich programm a bissl verbessert. :wink:
pigfacejoe - So 29.06.08 12:56
| Zitat: |
Ich hab mal einn lied ohne text abgespielt und dem programm gesagt das es
einen songtext suchen soll-Aber das programm stürtzte nach c.a 25 sek ab.
Woran kann das liegen? |
Es könnte natürlich sein, dass das Programm sich in der while Schleife ,hier sucht es ein ganz best. Wort, aufhängt, weil es dieses nicht findet. Ich schau mal nach.
jakobwenzel - So 29.06.08 14:57
Ganz nett, nur spielt der Player Dateien mit Japanischen Zeichen im Dateinamen nicht ab. (Ein Beispiel: "Angela Aki - Home - 03 - 心の戦士.mp3")
Wenn du schon Cover lädst, sollten auch im ID3-Tag befindliche Cover berücksichtigt werden. Außerdem sollte bei der manuellen Coverauswahl der Standardpfad vom OpenDialog gleich dem Pfad der aktuellen Datei sein.
Einstellige Sekundenangaben sollten mit führender Null angegeben werden.
Außerdem stürzt der Player bei manchen Dateien einfach ab. Es passiert einfach gar nichts mehr, der Player hängt.
Die Dateien, bei denen das bisher auftrat waren "Howling" von "abingdon boys school" und "Kakusei Heroism ~ The Hero without a name" von "Antic Cafe". Irgendwelche Gemeinsamkeiten, die zu diesem Fehlverhalten führen könnten, habe ich nicht gefunden...
Delete - So 29.06.08 15:24
Wie kommt man auf die idee japanische lieder abzuspielen- :wink:
pigfacejoe - Mo 30.06.08 01:58
| Zitat: |
Ich hab mal einn lied ohne text abgespielt und dem programm gesagt das es
einen songtext suchen soll-Aber das programm stürtzte nach c.a 25 sek ab.
Woran kann das liegen? |
Soooo.... habe endlich den Fehler gefunden! Er wurde jetzt behoben , ich hoffe mal er wird sich jetzt nicht mehr aufhängen , kannst ja einfach mal den selben Song abspielen und mit dem Programm versuchen den Songtext zu finden. Statt des Absturzes sollte jetzt nach ca 2-5 sek. eine Showmessage kommen die dir sagt, dass nichts gefunden wurde ;-)
Ich habe nocheinmal die Songtextsuche verbessert (ich hoffe man merkts!^^).
Ausserdem habe ich die Nullen eingefügt bei der Zeitangabe.
Mit den japanischen Zeichen weiss ich nicht wie ich das umgehen soll,vlt. kannste mir da ja einen Tip geben ;-)
Vielen Dank für die Berichte!
Neue Version ist oben aktualisiert,
Gruss
Max
jakobwenzel - Mo 30.06.08 14:28
pigfacejoe hat folgendes geschrieben: |
| Mit den japanischen Zeichen weiss ich nicht wie ich das umgehen soll,vlt. kannste mir da ja einen Tip geben ;-) |
Stichwort
UNICODE: Diese Zeichen sind im Standard-1Byte-Zeichensatz nicht enthalten, weshalb sie da zu Fragezeichen werden, und die Datei folglich nicht gefunden wird. Unicode ist ein Multibyte-Zeichensatz, wo es mehr als 256 verschiedene Zeichen gibt, und auch diese Zeichen enthalten sind.
Der nette Nachbar - Mo 30.06.08 14:35
Also sorry wenn ich das sagen muss, aber das Design isn nun wirklich fürn *popo*.
Habe selten ein schlechteres gesehen.
pigfacejoe - Mo 30.06.08 15:24
| Zitat: |
Also sorry wenn ich das sagen muss, aber das Design isn nun wirklich fürn *popo*.
Habe selten ein schlechteres gesehen. |
Ja ich weiss, ich habs halt mit dem design echt nicht drauf...Was genau stört euch eig. alle an dem design? ;-)
Apollo - Mo 30.06.08 21:38
Hallo,
hab mir das mal angesehen und soooo
schlimm ist das desige nun auch wieder nich
(trotzdem nich seeeeeeeeeeeeeeehr schön :( )
Sag mal wie heißt eigendlich die zeitleisten
Komponente (siehe bild unten)? Gib's das bei Torry?
Wars bei delphi dabei?
danke
mfg Apollo
pigfacejoe - Mo 30.06.08 21:40
is bei den JEDI Komponenten dabei, sind im grossen und ganzen auch echt recht nützlich..
Download hier:
http://sourceforge.net/projects/jvcl
Gruss
Max
pigfacejoe - Di 01.07.08 16:56
Sooo habe jetzt die 4. Version hochgeladen. Das Design habe ich mal versucht zu verbessern... Ausserdem kann man jetzt geladene Cover und Songtexte auch wieder entfernen.
Die Songtextsuche hängt sich auch nicht mehr auf...
Gruss
Max
Der nette Nachbar - Di 01.07.08 17:24
Nicht schlecht, das Design sieht nun mehr asnprechend aus xD...weiter so.
pigfacejoe - Di 01.07.08 22:50
Ersteinmal Danke ;-)
Und hier den versprochenen Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140:
| procedure TForm3.Button1Click(Sender: TObject); var z,i:integer; begin JVWaitingGradient1.Active:=true;res:=''; text:='';try memo1.Text:=idhttp1.Get('http://www.google.de/search?hl=de&q='+plusersetzen(edit1.text)+'+magistrix+songtext&btnG=Suche&meta='); for z:= 1 to length(memo1.text) do begin application.ProcessMessages; if copy(memo1.Text,z,length('www.magistrix.de/lyrics'))='www.magistrix.de/lyrics' then begin i:=z; while (memo1.Text[i] <>'"') and (i<length(memo1.text)-1) do begin res:=res+memo1.text[i];i:=i+1; application.ProcessMessages; end; if i<length(memo1.Text) then begin edit1.Text:=res; button2.click;exit; end else begin showmessage('Die Suche war erfolglos'); close; exit; end; end; end; except showmessage('Verbindung zum Internet nicht möglich. Überprüfen Sie ihre Firewall!'); close; end; showmessage('Die Suche war erfolglos'); close; end;
procedure TForm3.Button2Click(Sender: TObject); var z,i:integer; begin if zahl (res) then begin try memo2.Text:=idhttp1.Get('http://'+res);for z:= 1 to length(memo2.Text) do begin if copy(memo2.Text,z,length('<p id="lyricText" style="">'))='<p id="lyricText" style="">' then begin i:=z+length('<p id="lyricText" style="">'); while (copy(memo2.Text,i,length('<table class="box1"'))<>'<table class="box1"') and (i<length(memo2.Text)) do begin text:=text+memo2.Text[i]; i:=i+1; application.ProcessMessages; end; memo3.Text:=html2text(text); if not directoryexists(Extractfilepath(Paramstr(0))+'Lyrics\') then createdir(Extractfilepath(Paramstr(0))+'Lyrics\'); memo3.lines.SaveToFile(Extractfilepath(Paramstr(0))+'Lyrics\'+Extractfilename(form1.mediaplayer1.FileName)+'.txt'); showmessage('Songtext gefunden und abgespeichert!'); close; exit; end ;
end; except showmessage('Verbindung zum Internet nicht möglich. Überprüfen Sie ihre Firewall!'); close; end; showmessage('Die Suche war erfolglos'); close; end else begin showmessage('Die Suche war erfolglos'); close; end; end;
function HTML2Text(aHTML: string): string; var WStr: string; begin WStr:= aHTML; WStr:= StringReplace(WStr, '<br>', #13#10, [rfReplaceAll]); WStr:= StringReplace(WStr, '</p><center>', ' ', [rfReplaceAll]); WStr:= StringReplace(WStr, '</i>', ' ', [rfReplaceAll]); WStr:= StringReplace(WStr, '', #13#10, [rfReplaceAll]); WStr:= StringReplace(WStr, '|', ' ', [rfReplaceAll]); WStr:= StringReplace(WStr, '´', '`', [rfReplaceAll]); WStr:= StringReplace(WStr, '<i>', ' ', [rfReplaceAll]); WStr:= StringReplace(WStr, 'ä', 'ä', [rfReplaceAll]); WStr:= StringReplace(WStr, 'Ä', 'Ä', [rfReplaceAll]); WStr:= StringReplace(WStr, 'ö', 'ö', [rfReplaceAll]); WStr:= StringReplace(WStr, 'Ö', 'Ö', [rfReplaceAll]); WStr:= StringReplace(WStr, 'ü', 'ü', [rfReplaceAll]); WStr:= StringReplace(WStr, '&Üuml;', 'Ü', [rfReplaceAll]); WStr:= StringReplace(WStr, 'ß', 'ß', [rfReplaceAll]); WStr:= StringReplace(WStr, '€', '€', [rfReplaceAll]); WStr:= StringReplace(WStr, '&', '&', [rfReplaceAll]); WStr:= StringReplace(WStr, '<', '<', [rfReplaceAll]); WStr:= StringReplace(WStr, '>', '>', [rfReplaceAll]); WStr:= StringReplace(WStr, '"', '"', [rfReplaceAll]); WStr:= StringReplace(WStr, '<b>', '', [rfReplaceAll]); WStr:= StringReplace(WStr, '</b>', '', [rfReplaceAll]); WStr:= StringReplace(WStr, '%B4', '''', [rfReplaceAll]); Result:= WStr; end;
function zahl(s:string):boolean; var z:integer; begin for z:=1 to length(s) do if (ord(s[z])>=48) and (ord(s[z])<=57) then begin result:=true; exit ; end; result:=false; end; function allesklein(s:string):string; var z:integer;r:string; begin r:=''; for z:=1 to length(s) do begin
if (ord(s[z])>=65) and (ord(s[z])<=90) then r:=r+ chr(ord(s[z])+32) else r:=r+s[z]; end; result:=r; end; var res,text:string; p:boolean;
function plusersetzen(s:string):string; var z:integer; begin for z:= 1 to length(s) do begin if s[z]=' ' then s[z]:='+'; if (allesklein(copy (s,z,4))='.mp3') or (allesklein(copy (s,z,4))='.wma')or (allesklein(copy (s,z,4))='.wav') then delete(s,z,4); end; result:=s; end; |
Falls ihr das ganze in eurem Projekt unterbringt, würde ich mich sehr über eine kleine Erwähnung freuen :-)
Gruss
Max
pigfacejoe - Do 24.07.08 15:21
Titel: Mp3 Player mit Songtext-, Cover-, und Musikvideosuche [neu]
So, nach längerer Zeit melde ich mich mal mit einer neuen Version des Programms zurück!
Was wurde verändert?
- Die Songtextsuche findet keine Übersetzungen mehr, sondern nur noch den originalen Songtext
- Die Songtextsuche arbeitet präziser.
- Das Programm wurde (meiner Meinung nach) übersichtlicher gestaltet.
- Für Vista-Nutzer funktioniert das Programm nun auch, weil Cover und Songtexte nun im Ordner Anwendungsdaten (s.o) abgespeichert werden.
- Ein paar Fehler mit Hints und ein paar kleinere Bugs wurden behoben
- Und: Eine Musikvideosuche wurde implementiert! das Programm sucht nun auch Videos zu gerade spielenden Songs aus dem Internet (FLV Datei wird gefiltert, eine HTML datei wird vom Programm erstellt, welche einen Player bereitstellt und vom Twebbrowser angesteuert wird)
Programm findet ihr oben!
Viel Spass ! ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!