MM5 von externer App ansprechen

Wenn Sie Hilfe benötigen oder über MediaMonkey diskutieren möchten...

Moderator: onkel_enno

miriki
Posts: 9
Joined: Tue Oct 12, 2021 3:10 am

MM5 von externer App ansprechen

Post by miriki »

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

Code: Select all

obj_ItemDetails.Date = str_Year
verändern und dann mit

Code: Select all

obj_Itemlist.UpdateAll
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
crap_inhuman
Posts: 901
Joined: Sat Jan 26, 2013 6:00 am
Location: Friedberg / Hessen / Germany
Contact:

Re: MM5 von externer App ansprechen

Post by crap_inhuman »

Hallo Michael,

in der neuesten Beta von MM ist der Fehler mit dem COM Schnittstelle beseitigt.
Da ich kein Fan von JS bin, oder besser gesagt, es nicht kann xD, nutze ich die COM Schnittstelle für den Austausch den Songdaten.

Kann Dir aber schon mal berichten, das ich es mit Deinem Beispiel nicht hinbekommen habe, eine Songliste zu erhalten.. ;-)

Code: Select all

Set SDB = CreateObject("SongsDB5.SDBApplication")
SLText = SDB.runJSCode( "( function() { return app.db.getTracklist( 'SELECT * FROM Songs', -1 ).asJSON; } )()", True )
Metal up your ass !
-----------------------------------------------
I added my first 2 videos on youtube. The language is german.

Discogs Autorisierung: https://www.youtube.com/watch?v=oryxKKtnEnc
Discogs Tagger Bedienung: https://www.youtube.com/watch?v=85Wk-5rd-W0
Post Reply