Moinsens!
Vielleicht kurz vorweg, was und warum ich es versuche: Ich habe im Wohnzimmer einen PC stehen. Dieser hat einen Kabel-Receiver (mit DVBViewer Server und DVR) und externe USB-Festplatten mit Videos, Audios usw. Dieser PC ist an einen Multimedia-Receiver (Onkyo) angeschlossen, parallel zu einer X-Box und einer Playstation. Der Receiver wiederum hängt dann an einem LCD-TV (Samsung). So kann ich TV, XB oder PS auf dem Fernseher sehen. Ausserdem streamt der DVB sein Programm auch über's Netz an andere Clients. (Zusätzlich erledigt der Server auch andere Dienste, wie z.B. Web-Server mittels WAMP usw.)
Vor einiger Zeit hatte ich mal mit MediaMonkey, 4 glaube ich, herumgespielt und auch mit der Script-Schnittstelle in VBS ein bisschen was gemacht. Jetzt hab ich mir 2 lifetime Lizenzen geholt und versuch mich am MM5. Und ich bin ein kleines wenig kurz am Überlegen, ob Verzweifeln eine Option ist.
Im VBS hab ich seinerzeit sowas wie
Code: Select all
Set obj_ItemList = SDB.SelectedSongList
For i = 0 to obj_ItemList.Count - 1
Set obj_ItemDetails = obj_ItemList.Item( i )
str_user5 = obj_ItemDetails.Custom5
[ . . . ]
Es geht also darum, dass ich die im Hauptfenster selektierten Einträge durchlaufe und anhand der Details dann gewisse Aktionen durchführe. So konnte ich dann Details des Eintrags mit
verändern und dann mit
die Einträge in der Datenbank aktualisieren.
Jetzt versuche ich Ähnliches mit MM5. Allerdings würde ich jetzt gerne eine GUI bauen. Ich benutze MM hauptsächlich für meine Videos. Ich habe z.B. einen Haufen Videos aus meinen DVDs des TV-Movie-Abo extrahiert. Die Dateinamen sind recht "sauber" strukturiert und beinhalten eigentlich immer ein "{tt......}" im Dateinamen mit der IMDB-ID. Über TMDB hole ich mir dann weiterführende Details als JSON und würde die dann gerne in die DB von MM schreiben. Aber ich komm einfach nicht so recht voran.
a) Wenn ich versuche, MediaMonkey als
Referenz für COM zu setzen, schmiert mir Visual Studio 19 "still" weg, also ohne Fehlermeldung. Das passiert bei VB und bei C#. Ich krieg das Ding von dort also nicht als COM angesprochen.
b) Inspiriert von
MediaMonkeyNet (/mmuffins/MediaMonkeyNet auf github), mit dem ich ein kurzes Erfolgserlebnis mit der Beispiel-Konsolenanwendung hatte, hab ich versucht, eine Klasse für eine GUI-Anwendung zu basteln. Aber da klappt auch irgendwie nix.
c) Mit
WebSocketSharp (/sta/websocket-sharp auf github) krieg ich MM gerade noch verbunden, aber ich weiss eigentlich überhaupt nicht, was ich dort schicken soll. Bislang krieg ich nur 'n Fehler mit dem JSON Element 0 oder so ähnlich.
d) Das Geraffel mit
JS in der PowerShell wuchert auch langsam wie ein Tumor. Erst Visual Studio Code, dann NodeJS dazu, dann noch Electron für die GUI. ein "hello world" hat laut dir /s jetzt 17377 Dateien in 7073 Verzeichnissen. Krank...
e) Ein
VBS-Dreizeiler über cscript in der Shell (hier aus dem Forum) scheint mir bislang noch der vielversprechendste Ansatz zu sein. Hier wird mit
Code: Select all
Set SDB = CreateObject("SongsDB5.SDBApplication")
SLText = SDB.runJSCode( "( function() { return app.db.getTracklist( 'SELECT * FROM Songs', -1 ).asJSON; } )()", True )
ein JSON über JS via COM abgerufen. Das Nervige ist, dass MM mir bei (fehlerhaften) Versuchen alle Nase lang mit einem Laufzeitfehler (217, glaube ich) wegschmiert und sich auch nicht sauber neu startet. Da bleibt immer ein Zombie-Task im System, den ich erst per Manager killen muss. JS ist nun wirklich nicht meine Welt, noch weniger als VBS.
So, wie ich das sehe, kann ich mittels
executeQueryAsync und
getQueryResultAsync auch Operationen auf der DB ausführen. Aber hier bräuchte ich mal Starthilfe. Denn da krieg ich ja nicht, wie o.a. beschrieben, mit .asJSON direkt die Antwort.
Wer mag mir hier mal ein bisschen helfen, ob nun mit e) oder einem der anderen Punkte, vielleicht auch ganz anderem Ansatz?
Michael