Automatische Playlist von Alben ohne folder.jpg

Begonnen von Gridd, 10. Januar 2009, 10:34:30

Vorheriges Thema - Nächstes Thema

Gridd

Ich glaube, ich habe noch was nicht verstanden. Habe alles so gemacht wie du's beschrieben hast, aber wenn ich das Script über das Kontextmenü aufrufe, dann tut sich gar nichts.

Zitat
...mit foo_run funktioniert und eine Playlist mit den Alben schreibt, in denen ein spezielles File fehlt.

Kann es sein, dass ich vorher noch irgendwo im Script editieren muss, wonach ich explizit suchen lassen will?

Die anderen, mitgelieferten Scripte scheinen jedenfalls zu funktinieren, so dass der Fehler nicht an der foo_run.dll liegen dürfte.

tedgo

#16
Zitat von: Gridd in 20. Januar 2009, 02:25:38
Kann es sein, dass ich vorher noch irgendwo im Script editieren muss, wonach ich explizit suchen lassen will?

Die anderen, mitgelieferten Scripte scheinen jedenfalls zu funktinieren, so dass der Fehler nicht an der foo_run.dll liegen dürfte.
Nein, im Script musst du nicht editieren.

Ich bin so vorgegangen (weil es am einfachsten ist):
- Das Script aus dem Anhang in den Ordner C:\WINDOWS\system32 kopieren (ich denke mal, unter Vista wird es da auch hingehören ;))
- foobar (mit vorher in den components-Ordner kopierter foo_run.dll) starten:
- Preferences --> Tools --> Run services --> "ADD"-Button betätigen und folgendes eingeben:

- Dann über Rechtsklick in eine bestehende Playlist, in der mindestens ein Lied vorhanden ist, auf dieses Rechtsklicken und den Befehl "Search Missing Files" aufrufen.
- Dann erscheint ein "Ordner suchen"-Fenster.
- Nach Auswahl des Verzeichnisses, das durchsucht werden soll, erscheint das:

- Nach Eingabe der Datei (mit Dateiendung!) und Klick auf "OK" wird eine neue Playlist mit dem Suchergebnis aus allen Ordnern erstellt, in denen die gesuchte Datei nicht vorhanden ist.
Alles klar? ;)

EDIT
SCRIPTUPDATE
2E7AH hat das Script noch mal überarbeitet. Es unterstützt jetzt auch die Suche nach einer Dateierweiterung (jpg, png lrc usw.)
In der Search-Box muss man z. B. nur noch .lrc eintippen, um alle Lieder aus Ordnern in einer Playlist aufzulisten, die kein File mit der Dateierweiterung lrc haben.
Leider werden (noch) alle Lieder des Ordners aufgelistet, eine File-Association wird also (noch) nicht berücksichtigt.
Aber mal sehen.
Am Wochenende setze ich mich mit einem Programmierer zusammen (meine eigenen 'Künste' dahingehend sind völlig eingerostet).
Möglicherweise können wir gemeinsam ein richtiges foobar-Plugin erstellen, das dann auch ohne foo_run auskommt.

Gridd

Nee, auch wenn ich das Script aus dem System32-Ordner aufrufe - keine Änderung. Allerdings habe ich es jetzt mal manuell gestartet, und da lief es und hat mir sogar eine Result.m3u erstellt, die ich in Foobar importieren konnte. Am Ende bekam ich dann eine Fehlermeldung. "Zeile 28, Zeichen 3, Fehler: Das System konnte den angegebenen Pfad nicht finden. Das ist natürlich kein Wunder, den in Zeile 28 steht:

oShell.Exec("%programfiles%\foobar2000\foobar2000 /command:" & chr(34) & "New Playlist" & chr(34) & " Result.m3u")

D.h., da ich derzeit eine portable Foobar-Installation im Verzeichnis "Eigene Dateien" verwende, existiert der Pfad ja gar nicht. Ob das allerdings der Grund ist, warum es über foo_run.dll nicht läuft, weiß ich nicht, denn manuell gestartet, wählt es für die Playlist ja trotzdem als Alternative den Pfad, in dem es gestartet wurde.

Desweiteren habe ich mal das Suchergebnis mit CUI kontrolliert und dabei einige Alben in der erstellten Result.m3u gefunden, die definitiv ein folder.jpg im Album-Ordner haben und eigentlich nicht in der Liste hätten auftauchen dürfen. Welche Gemeinsamkeit diese falschen Funde aufweisen, konnte ich jedoch beim besten Willen nicht feststellen. (Dass CUI auch cover.jpg oder folder.jpeg anzeigt, ist mir schon klar.)

Ps.: Dieses Posting bezieht sich noch auf die 2. Version (fooMissingFiles.vbs)

tedgo

Ach so, an eine portable Installation haben wir jetzt nicht gedacht.
Ändere doch mal die Pfadangabe im Script, dann sollte es eigentlich funktionieren.
Bei mir funktioniert es tadellos.

Gridd

Würde ich ja gerne machen, aber ich weiß nicht wie die Zeile 28 dann genau aussehen muss.

Der Pfad zu meinem Foobar-Verzeichnis ist:
C:\Dokumente und Einstellungen\Gridd\Eigene Dateien\foobar2000 v0.9.6\foobar2000

tedgo

Wenn mich jetzt icht alles täuscht (kann sein, dass ich ein Anführungszeichen vergessen habe), dann


oShell.Exec("C:\Dokumente und Einstellungen\Gridd\Eigene Dateien\foobar2000 v0.9.6\foobar2000 /command:" & chr(34) & "New Playlist" & chr(34) & " Result.m3u")



Probier das mal aus. Ich kann es ja nicht, weil mein Pfad anders aussieht...

Gridd

Solange das Skript mit der von dir angepassten Pfadangabe im System32-Ordner liegt, öffnet sich jetzt zumindest schon mal das Fenster, ich kann die Suchoptionen eingeben, und die Suche läuft scheinbar durch. Wenn's dann jedoch ans Speichern der Playlist geht, erscheint wieder die Fehlermeldung: Zeile 28, Das System kann die angegebene Datei nicht finden. Code 80070002, Quelle WshShell.Exec
Diesmal wird eine Result.m3u im Foobar-Verzeichnis angelegt, jedoch mit 0 Byte.

Aber lassen wie das hier jetzt lieber. Es verlängert den Thread ja nur unnötig. Ich werde beizeiten mal eine ordentliche Installation in C:\Programme machen, besonders um auszuprobieren, ob die Suchergebnisse dann korrekt sind.

tedgo

#22
Ich habe 2E7AH schon gepostet, ob er das Script auch für portable Installation fit machen kann.
Melde mich dann wieder :)

EDIT:
Habe die Modifikation angehängt.
Sollte jetzt funktionieren, wenn du die Datei entweder in den foobar2000 Installationsordner legst oder eben in WINDOWS\sytem32.

Gridd

Super, danke vielmals! Ich werde es heute Nachmittag testen.

Gridd

So, jetzt habe ich getestet.
Also, bei meiner portablen Version verhält sich das so, dass das Script nur über foo_run läuft, wenn es sich im System32 befindet. Soweit Ok. Nachdem es durchgelaufen ist, legt es eine *.fpl in den playlists-Ordner, die als "New Playlist" im Playlist Switcher erscheint, jedoch 0 Titel enthält. Man kann jedoch sehen, dass das eigentliche Suchergebnis sofort an eine bereits vorhandene Playlist namens "Default" übergeben wird. Diese Default-Playlist war vorher leer, enthält hinterher allerdings mehr Titel, als meine gesamte Sammlung übehaupt hergibt. Somit habe ich als nächstes 'Remove Dublicates' durchlaufen lassen, und erhielt daraufhin eine realistische Anzahl von Einträgen. Leider sind aber immernoch viele falsche Titel bzw. Alben unter den Suchergebnissen.

tedgo

Hast du denn mal versucht, das Script in den foobar2000 ordner zu legen und mit foo_run von da zu starten?
Sollte mit dem letzten Script eigentlich funktionieren.
Bei mir funktioniert es jedenfalls...

Gridd

Ja, habe ich.
Über foo_run startet es nicht von dort. Wenn ich es jedoch manuell von da starte, verhält es sich genau so, wie über foo_run aus dem system32-Ordner.

tedgo

#27
Ich fürchte, ich weiß jetz, wo der Fehler liegt.
Das Script versucht eine M3U-Datei zu erstellen, das geht aber nur, wenn man die M3U-Playlisten mit foobar2000 assoziiert.
Leider ist das aber bei einer portablen Installation nicht möglich...
Deshalb bekommst du wahrscheinlich eine leere FPL-Playlist.

Ich werde mal mit dem Author "plaudern", ob es nicht möglich ist, eine FPL-Playlist mit dem Teil zu erstellen, denn das ist ja das foobar2000-Playlistenformat. Dann müsste es funktionieren.
Das wird aber etwas schwieriger und ist vielleicht gar nicht so einfach möglich, weil FPL-Dateien keine Textdateien mit einer anderen Endung sind, wie es bei M3U-Playlisten der Fall ist...

Ansonsten kann ich aber nur sagen, dass es bei einer Standardinstallation tadellos funktioniert.
Hilft dir halt jetzt bloß nicht...  ::)

EDIT:
Habe mich jetzt mit 2E7AH kurzgeschlossen.
Er sagt, er hat es ausprobiert und es funktioniere mit portabler Installation.
Er sagt, das Script speichert gar keine Playlist, sondern übergibt ein Textfile mit dem Suchergebnis an foobar, damit daraus eine Playlist erstellt wird.
Bei mir (allerdings auf Standardinstallation von foobar2000) funktioniert es einwandfrei.
Und hat auch keine Fehlergebnisse.

Bitte wiederhole den Vorgang noch einmal.
- Leg das letzte von mir gepostete Script in den WINDOWS\system32-Ordner
- Starte foobar und lege folgendes Preset für foo_run an:
- Label: (kannst du frei wählen)
- Path: fooMissingFiles.vbs

Dann rechtsklickst du auf eine Musik-Datei in irgendeiner Playlist und wählst den Befehl aus.

Als Suchkriterium kannst du kein Titleformatting verwenden!
Du musst also entweder genau spezifizieren, was du suchst (also z. B. "folder.jpg") oder nach einer Dateiendung suchen (".jpg").

Falls es immer noch nicht funktionieren sollte schick mir mal eine PM mit den genauen Ergebnissen.
Ich reiche es dann weiter.
Danke.

Gridd

Also ehrlich gesagt stört mich die Geschichte mit dem erstellen der Playliste nicht so sehr. Hauptsache man erhält irgendwie und irgendwo eine korrekte Liste.

Auf der Suche nach einem Grund für die fehlerhaften Suchergebnisse habe ich jetzt noch ein bisschen herumprobiert. Es ist ja nicht nur so, dass Ordner bzw. MP3s aus Ordnern gefunden werden, die eigentlich nicht in den Ergebnissen auftauchen dürften, sondern auch umgekehrt Ordner (bzw. MP3s) fehlen, die eigentlich auftauchen müssten.
Ich habe mir zum Testen auf einer anderen Partition eine Miniatur-Sammlung angelegt und dort auszugsweise einige zuvor falsch und richtig gefundenen, zu findende und nicht zu findende  Alben hinkopiert, um nach fehlenden folder.jpg suchen zu lassen.
Zunächst kann ich sagen, dass den Dateien selbst offenbar nichts besonderes anhaftet, denn bei veränderter Verzeichnisstruktur mit den selben Dateien entstehen teilweise unterschiedliche Suchergebnisse. Bei unveränderter Verzeichnisstruktur sind die Suchergebnisse jedoch reproduzierbar.
Update: Genauer gesagt, die Struktur bleibt zwar gleich, aber dadurch, dass ich die enthaltenen Ordner umbenenne, sodass sich ihre Reihenfolge ändert, erhalte ich unterschiedliche Ergebnisse. Diese Ergebnisse sind reproduzierbar. (Ich könnte dir ja mal meine Versuchsanordnung  zuschicken und du kannst sie an @2E7AH weiterleiten?)

Zitat
Bitte wiederhole den Vorgang noch einmal.
- Leg das letzte von mir gepostete Script in den WINDOWS\system32-Ordner
- Starte foobar und lege folgendes Preset für foo_run an:
- Label: (kannst du frei wählen)
- Path: fooMissingFiles.vbs

Habe ich genau so gemacht.

Zitat
Dann rechtsklickst du auf eine Musik-Datei in irgendeiner Playlist und wählst den Befehl aus.

Hier hatte ich allerdings den Rechtsklick direkt auf einer Playlist gemacht, aber das sollte wohl kein Unterschied sein. Werde ich jedoch noch ausprobieren.

Zitat
Du musst also entweder genau spezifizieren, was du suchst (also z. B. "folder.jpg") oder nach einer Dateiendung suchen (".jpg").

Ich habe in das Suchfeld folder.jpg ohne Anführungszeichen geschrieben.

tedgo

Zitat von: Gridd in 25. Januar 2009, 01:24:24
Ich habe in das Suchfeld folder.jpg ohne Anführungszeichen geschrieben.
Die Anführungszeichen habe ich nur zur Verdeutlichung geschrieben, die musst du natürlich nicht eingeben ;)

Mal sehen was 2E7AH noch aus dem Script macht.
Ich habe ihn ja darauf hingewiesen, vielleicht schaut er noch mal drauf.