XMPlay
- Pako
- Plugin Developer
- Posts: 2294
- Joined: Sat Nov 11, 2006 1:31 pm
- Location: Czech Republic
- Contact:
XMPlay
I have very much like a simple but powerful audio player Billy and I use it very often.
But he does have some shortcomings and because it seems that he is dead, I was looking for a replacement.
The condition to search was, that audio player support not only playlists, but also folders.
I found a player, which is called XMPlay. Given how this program is small, its capabilities are really big.
Support various audio formats is an extraordinary (some with the help of different plugins) and a selection of various skin is great.
What is most important, however, unlike Billy the development of XMPlay is continuing.
I definitely recommend a try! For you who decide to try my new plugin, here is how:
1) Since the XMPlay plugin is based on DDE, you must perform the steps that are described in this topic.
2) Download and install XMPlay
3) In the folder ...\EventGhost\plugins\ , create a new folder "XMPlay"
4) The downloaded file __init__.py (ie XMPlay plugin) put into new XMPlay folder
5) Restart EventGhost and into location of your choice add a new plugin XMPlay.
At the same time set the necessary parameters in the configuration dialog of plugin.
6) To use actions "Open/Add file(s) or folder" and "Open URL (Internet radio)", you must open the configuration dialogs.
You can also (if necessary) add to the configuration tree multiple macros with these actions.
Preferably, you can also use the OSE plugin and try to pass arguments using {eg.event.payload} or {eg.result} and so.
7) To plugin's actions assign events of your remote control.
That is all. Now you can control XMPlay with your remote control.
Pako
But he does have some shortcomings and because it seems that he is dead, I was looking for a replacement.
The condition to search was, that audio player support not only playlists, but also folders.
I found a player, which is called XMPlay. Given how this program is small, its capabilities are really big.
Support various audio formats is an extraordinary (some with the help of different plugins) and a selection of various skin is great.
What is most important, however, unlike Billy the development of XMPlay is continuing.
I definitely recommend a try! For you who decide to try my new plugin, here is how:
1) Since the XMPlay plugin is based on DDE, you must perform the steps that are described in this topic.
2) Download and install XMPlay
3) In the folder ...\EventGhost\plugins\ , create a new folder "XMPlay"
4) The downloaded file __init__.py (ie XMPlay plugin) put into new XMPlay folder
5) Restart EventGhost and into location of your choice add a new plugin XMPlay.
At the same time set the necessary parameters in the configuration dialog of plugin.
6) To use actions "Open/Add file(s) or folder" and "Open URL (Internet radio)", you must open the configuration dialogs.
You can also (if necessary) add to the configuration tree multiple macros with these actions.
Preferably, you can also use the OSE plugin and try to pass arguments using {eg.event.payload} or {eg.result} and so.
7) To plugin's actions assign events of your remote control.
That is all. Now you can control XMPlay with your remote control.
Pako
- Attachments
-
- __init__.py
- Plugin XMPlay, version 0.0.1
- (26.69 KiB) Downloaded 356 times
- kgschlosser
- Site Admin
- Posts: 5508
- Joined: Fri Jun 05, 2015 5:43 am
- Location: Rocky Mountains, Colorado USA
Re: XMPlay
I have modified this plugin to work with EG 0.4 and 0.5
there is a problem with dde that has been included with pywin32 220 and there has been a bug report about this issues since 2010 and nothing has been done to fix it.
I found some code on dde that doesn't use the one in pywin32 and I have altered this to work in the same manner as the pywin32 version.. so if there is an error on importing the pywin32 version it will import the replacement and use that instead.
K
there is a problem with dde that has been included with pywin32 220 and there has been a bug report about this issues since 2010 and nothing has been done to fix it.
I found some code on dde that doesn't use the one in pywin32 and I have altered this to work in the same manner as the pywin32 version.. so if there is an error on importing the pywin32 version it will import the replacement and use that instead.
K
- Attachments
-
- XMPlay-0.0.2.egplugin
- (10.77 KiB) Downloaded 164 times
Re: XMPlay
Presenting a compatible rework of the original plugin version by Pako.
Tested with EG 0.4 and 0.5, on Windows 2000 and 10, used by myself for months.
Main changes:
https://github.com/obermann/XMPlay
Tested with EG 0.4 and 0.5, on Windows 2000 and 10, used by myself for months.
Main changes:
- New rock stable Python DDE module and use concept (using callbacks).
- Powerfull scripting capabilities (combining DDE and WinAmp IPC commands).
- All imaginable control over XMPlay.
- Supposed performance improvement.
https://github.com/obermann/XMPlay
- Attachments
-
- XMPlay-1.0.0.egplugin
- (33.43 KiB) Downloaded 68 times
Re: XMPlay
Executing an action Scripting: Open/Add file(s) or folder when XMPlay is running throws an error:
IMO it would be better to just print an information that XMPlay is not running (or add an option to start it in case it's not running).
After closing XMPlay with a close action, XMPlay can't be startet again with run action. I need to dis-/enable the plugin.
Code: Select all
Traceback (most recent call last) (WIP):
File "E:\EventGhost-topic2k\eg\Classes\ActionBase.py", line 116, in CallWrapper
return self(*args)
File "E:\EventGhost-topic2k\plugins\XMPlay\actions_xmp_open.py", line 82, in __call__
self.plugin.dde_get_conversation("System").execute("[%s(%s)]" % (("open", "list")[mode], fp))
File "E:\EventGhost-topic2k\plugins\XMPlay\__init__.py", line 206, in dde_get_conversation
return self.dde_client[("XMPlay", topic)]
TypeError: 'NoneType' object has no attribute '__getitem__'
After closing XMPlay with a close action, XMPlay can't be startet again with run action. I need to dis-/enable the plugin.
Re: XMPlay
Found and corrected the bug on OpenFileFolder action.
Thanks.
But I cannot recreate any problem with run/close actions (maybe it shows only after mentioned error when opening), please need more info.
Thanks.
But I cannot recreate any problem with run/close actions (maybe it shows only after mentioned error when opening), please need more info.
- Attachments
-
- XMPlay-1.0.1.egplugin
- (33.46 KiB) Downloaded 65 times
- kgschlosser
- Site Admin
- Posts: 5508
- Joined: Fri Jun 05, 2015 5:43 am
- Location: Rocky Mountains, Colorado USA
Re: XMPlay
question for ya. I have not looked at the DDE implementation as of yet. But I am sure it is probably better then that hacked together one I made up for EG. Would you be opposed to use using it in the core?
Re: XMPlay
At first I misunderstood your question as if you wanted to create EG DDE plugin (like TCP) and it made my thoughts fly too far that led to the separate thread.
Then I looked at specifics (/eg/WinApi/pywin32_patches/dde.py) and remembered my XMPlay plugin dev choices:
. But I had little motivation to develop pywin32 DDE drop-in (emulator). Although I wrote one - I do not remember if I ever tested it.
Then I looked at specifics (/eg/WinApi/pywin32_patches/dde.py) and remembered my XMPlay plugin dev choices:
- I didn't like original pywin32 DDE implementation because it hides DDE callback!
- Its XMPlay-0.0.2 Pythonic replacement did bare minimum and required DDE conversation management that earlier XMPlay plugin did not provide either.
- The DDE error handling of earlier XMPlay plugin (possibly it is required by pywin32) seamed much too harsh.

- kgschlosser
- Site Admin
- Posts: 5508
- Joined: Fri Jun 05, 2015 5:43 am
- Location: Rocky Mountains, Colorado USA
Re: XMPlay
screw pywin32. It has so many problems with it.. and the author likes to take code and not give credit where credit is due. I am trying to steer EEG away from PyWin32. Actually I have been writing a python version of the Windows SDK. The whole Windows SDK.
https://github.com/kdschlosser/pyWinAPI
DDE has been removed since pywin32 219 I believe . Hence the reason for making what I made. Now what I made is a very basic thing. just to get some plugins working correctly. I do understand that DDE is pretty much an abandoned by Microsoft But they have not depreciated it and they have not removed it either. So long as thee API remains the same as pywin32 so we do not have to hunt down the plugins that use DDE and make changes I am all for it. I do have a nifty little bit of code that I wrote that you may be interested in using. I have not checked out your implementation of DDE. or if you use the same method names as pywin32. If you do use the same names but you pass different parameters to the methods then this would be right up your ally. It allows for the creation of C++ style overloaded methods in python.
https://github.com/kdschlosser/pyOverloadedMethods
it may or may not be something that is of interest to ya.
https://github.com/kdschlosser/pyWinAPI
DDE has been removed since pywin32 219 I believe . Hence the reason for making what I made. Now what I made is a very basic thing. just to get some plugins working correctly. I do understand that DDE is pretty much an abandoned by Microsoft But they have not depreciated it and they have not removed it either. So long as thee API remains the same as pywin32 so we do not have to hunt down the plugins that use DDE and make changes I am all for it. I do have a nifty little bit of code that I wrote that you may be interested in using. I have not checked out your implementation of DDE. or if you use the same method names as pywin32. If you do use the same names but you pass different parameters to the methods then this would be right up your ally. It allows for the creation of C++ style overloaded methods in python.
https://github.com/kdschlosser/pyOverloadedMethods
it may or may not be something that is of interest to ya.