Нужен способ получить текущую воспроизводимую песню из Zune и Windows Media Player с Python

Моя прикладная программа извлекает текущую воспроизводимую песню из множества музыкальных проигрывателей. Однако у меня большие проблемы с реализацией Zune и Windows Media Player.

Я много гуглил на эту тему, к сожалению, это только смущает меня все больше и больше.

Что я обычно делаю для других приложений:

Итерация по всем открытым окнам каждые 4 секундыПолучить заголовок всех оконПроверьте заголовок для шаблона (т.е." - Spotify ")Если он есть, настройте заголовок для вывода.

WMP Нет текущей воспроизводимой песни в заголовке.

Zune делает, но вращается каждые несколько секунд между названием, альбомом и исполнителем. Который крайне ненадежен для отслеживания с моим текущим методом, хотя это возможно.

Windows Media Player

Я также попытался использовать компонент COM для Windows Media Player.

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

Большая проблема в том, что он требует, чтобы вы запустили WMP программно, что было бы крайне недружественным для пользователя

Итак, что я нашел?Этот ТАК пост перенаправляет на WMP.dll. Но, насколько я прочитал, у него та же проблема, что и у COM, его нужно запускать программно. Если нет, мне бы очень хотелось узнать, как работать с этой DLL в Python.

Было бы другое, немного менее хакерское решение: написать плагин для WMP, позволить моим пользователям загружать этот плагин и получать данные из этого плагина. Я бы предпочел не идти туда, так как у меня нет опыта работы с какими-либо языками Си, и мне не хочется копаться в документации по плагинам для этого.

Zune

Метод будет состоять в том, чтобы циклически проходить через три состояния заголовка, определять, в каком состоянии он находится в данный момент, и находить положение двух других.

IE: первые 5 секунд заголовок: Super_song следующие 5 секунд заголовок: By Power_artist следующие 5 секунд заголовок: Good_album (date)

Таким образом, я мог определить, когда заголовок альбома, сделав регулярное выражение для даты (которая всегда есть), а затем найти название и исполнителя, подождав несколько секунд.

Это, очевидно, не очень хорошее решение, так как это займет некоторое время и не очень надежно (например, если название песни содержит дату)

Следующая проблема заключается в том, что она также непоследовательна, иногда название остается Zune в течение нескольких минут. Понятия не имею почему.

Итак, перейдите к следующему методу.

Там это приложение называетсяZuneNowPlaying, Это «каким-то образом» получает текущую воспроизводимую песню от Zune и помещает ее в реестр, эта вещь не работает с моим неаккуратным методом заголовка, поскольку она изменяет реестр в момент изменения песни. Немедленно.

Это решение, которое я использовал в рабочей версии моей программы, но многие пользователи сообщали, что она просто не работала, ничего не произошло. И я проверил программу, и она не всегда надежно меняет реестр. Я не знаю почему, я не знаю, как это исправить. Таким образом, это решение также утилизируется.

Является ли тот факт, что он использует имя "MsnMsgrUIManager" # 000000 ">, приводит к тому, что программное обеспечение zune отправляет ему информацию о том, какая песня воспроизводится? Есть ли способ получить эту информацию без такого взлома?

Это можно найти в обсуждении приложения Zune Now Playing. К сожалению, источник недоступен, по крайней мере, я не могу его найти. Кто-нибудь получил больше по этому поводу?

Третий метод, о котором я слышал, был снова, dll. ZuneShell.dll это называется. Я не помню, где я читал об этом, и при этом я не могу найти это через Google, так как все результаты - "Является ли ZuneShell.dll вирусом?".

Еще раз, я сталкиваюсь с проблемой, что я не знаю, как работать с этим дажеЕСЛИ У меня была документация на это, черт возьми, если это даже то, что я искал.

Альтернативные направления, чтобы, возможно, посмотреть в

Просматривая эту тему, я видел людей, которые говорили о получении данных непосредственно из GUI. Я не уверен, насколько правдиво, возможно или даже насколько правильно моя память об этом, но если это возможно, мог бы кто-нибудь перенаправить меня на это?

Всё остальное, правда.

Ответы на вопрос(2)

Ваш ответ на вопрос