Benötigen Sie eine Möglichkeit, den aktuell wiedergegebenen Titel von Zune und Windows Media Player mit Python abzurufen

Eine meiner Anwendungen ruft das aktuell wiedergegebene Lied von einer Vielzahl von Musik-Playern ab. Ich habe jedoch große Probleme bei der Implementierung von Zune und Windows Media Player.

Ich habe viel über das Thema gegoogelt, leider verwirrt es mich immer mehr.

Was ich normalerweise für meine anderen Anwendungen tun würde:

Alle 4 Sekunden über alle geöffneten Fenster iterierenHolen Sie sich den Titel aller FensterÜberprüfen Sie den Titel für ein Muster (Dh," - Spotify ")Wenn es dort ist, passen Sie den Titel für die Ausgabe an.

WMP Der Titel enthält nicht das aktuell wiedergegebene Lied.

Zune tut es, aber es wechselt alle paar Sekunden zwischen Titel, Album und Künstler. Was mit meiner derzeitigen Methode sehr unzuverlässig ist, wenn auch möglich.

Windows Media Player

Ich habe auch versucht, die COM-Komponente für Windows Media Player zu verwenden.

import win32com.client
wmp = win32com.client.gencache.EnsureDispatch('WMPlayer.OCX')

# some function I don't have here, it retrieves the current playing song
# and other data

Das große Problem dabei ist, dass Sie WMP programmgesteuert starten müssen, was äußerst benutzerfreundlich wäre

Was habe ich gefunden?Dieser SO Beitrag leitet zu WMP.dll um. Aber soweit ich gelesen habe, hat es das gleiche Problem wie die COM, Sie müssen es programmgesteuert starten. Wenn nicht, möchte ich wirklich einige Anweisungen, wie man mit dieser DLL in Python arbeitet.

Es würde eine etwas weniger hackige Lösung geben, nämlich ein Plugin für WMP zu schreiben, meine Benutzer dieses Plugin herunterladen zu lassen und die Daten von diesem Plugin abzurufen. Ich würde lieber nicht dorthin gehen, da ich keine Erfahrung mit einer der C-Sprachen habe und auch keine Lust habe, in Plugin-Dokumentationen dafür zu stöbern.

Zune

Eine Methode wäre, durch die drei Titelzustände zu blättern, den aktuellen Zustand zu ermitteln und die Position der beiden anderen zu ermitteln.

IE: Die ersten 5 Sekunden lautet der Titel: Super_song Die nächsten 5 Sekunden lautet der Titel: Von Power_artist Die nächsten 5 Sekunden lautet der Titel: Good_album (Datum)

So konnte ich feststellen, wann der Albumtitel angezeigt wird, indem ich einen regulären Ausdruck für das Datum (das immer vorhanden ist) erstellte und dann den Titel und den Interpreten fand, indem ich einige Sekunden wartete.

Dies ist offensichtlich keine großartige Lösung, da es eine Weile dauern wird und es auch nicht sehr zuverlässig ist (was ist, wenn der Songtitel zum Beispiel ein Datum enthält)

Das nächste Problem ist, dass es auch nicht konsistent ist. Manchmal bleibt der Titel nur Minuten lang Zune. Keine Ahnung warum.

Fahren Sie mit der nächsten Methode fort.

Es gibt diese Anwendung namensZuneNowPlaying. Dies "irgendwie" holt sich das aktuell abgespielte Lied von Zune und legt es in der Registrierung ab. Dieses Ding funktioniert nicht mit meiner Methode "Sloppy Title", da es die Registrierung ändert, sobald sich das Lied ändert. Sofort.

Dies ist die Lösung, die ich in der Arbeitsversion meines Programms verwendet hatte, aber viele Benutzer berichteten, dass es einfach nicht funktionierte, nichts passierte. Ich habe das Programm überprüft und es ändert die Registrierung nicht immer zuverlässig. Ich weiß nicht warum, ich weiß nicht, wie ich das beheben soll. Daher ist diese Lösung auch -verschrottet-.

Hat die Tatsache, dass der Name "MsnMsgrUIManager" # 000000 "verwendet wird, zur Folge, dass die Zune-Software Informationen darüber sendet, welcher Titel abgespielt wird? Gibt es eine Möglichkeit, diese Informationen ohne diese Art von Hack abzurufen?

Das wird in der Diskussion der Zune Now Playing-Anwendung gefunden. Die Quelle ist leider nicht verfügbar, zumindest kann ich sie nicht finden. Hat jemand mehr darüber?

Die dritte Methode, von der ich gehört hatte, war wieder eine DLL. ZuneShell.dll heißt es. Ich erinnere mich nicht, wo ich darüber gelesen habe und kann es auch nicht über Google finden, da alle Ergebnisse "Ist ZuneShell.dll ein Virus?" Sind.

Wieder einmal stoße ich auf das Problem, dass ich nicht einmal wissen würde, wie ich damit umgehen sollOB Ich hatte Dokumentation, zum Teufel, wenn es überhaupt das ist, wonach ich gesucht habe.

Alternative Richtungen, in die man vielleicht schauen sollte

Beim Surfen zu diesem Thema habe ich Leute gesehen, die über das Abrufen von Daten direkt von GUIs gesprochen haben. Ich bin nicht sicher, wie legitim, möglich oder sogar wie korrekt meine Erinnerung daran ist, aber wenn es möglich ist, könnte mich jemand dazu weiterleiten?

Alles andere wirklich.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage