XMPlay

Questions and comments specific to a particular plugin should go here.
Post Reply
User avatar
Pako
Plugin Developer
Posts: 2294
Joined: Sat Nov 11, 2006 1:31 pm
Location: Czech Republic
Contact:

XMPlay

Post by Pako » Tue Oct 05, 2010 4:18 pm

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
Attachments
__init__.py
Plugin XMPlay, version 0.0.1
(26.69 KiB) Downloaded 286 times

User avatar
kgschlosser
Site Admin
Posts: 4766
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: XMPlay

Post by kgschlosser » Fri Jan 13, 2017 11:07 pm

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
Attachments
XMPlay-0.0.2.egplugin
(10.77 KiB) Downloaded 100 times
If you like the work I have been doing then feel free to Image

obermann
Posts: 8
Joined: Sun Jan 13, 2019 3:54 pm
Contact:

Re: XMPlay

Post by obermann » Sun Jan 13, 2019 4:21 pm

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:
  • 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.
Open on Github:
https://github.com/obermann/XMPlay
Attachments
XMPlay-1.0.0.egplugin
(33.43 KiB) Downloaded 15 times

User avatar
topix
Experienced User
Posts: 441
Joined: Sat May 05, 2007 3:43 pm
Location: Germany
Contact:

Re: XMPlay

Post by topix » Sat Jan 19, 2019 8:36 pm

Executing an action Scripting: Open/Add file(s) or folder when XMPlay is running throws an error:

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__'
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.

obermann
Posts: 8
Joined: Sun Jan 13, 2019 3:54 pm
Contact:

Re: XMPlay

Post by obermann » Tue Jan 22, 2019 2:33 am

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.
Attachments
XMPlay-1.0.1.egplugin
(33.46 KiB) Downloaded 13 times

User avatar
kgschlosser
Site Admin
Posts: 4766
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: XMPlay

Post by kgschlosser » Tue Jan 22, 2019 3:10 am

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?
If you like the work I have been doing then feel free to Image

obermann
Posts: 8
Joined: Sun Jan 13, 2019 3:54 pm
Contact:

Re: XMPlay

Post by obermann » Thu Jan 24, 2019 10:17 pm

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:
  1. I didn't like original pywin32 DDE implementation because it hides DDE callback!
  2. Its XMPlay-0.0.2 Pythonic replacement did bare minimum and required DDE conversation management that earlier XMPlay plugin did not provide either.
  3. The DDE error handling of earlier XMPlay plugin (possibly it is required by pywin32) seamed much too harsh.
So my new dde_client_eg with some testing example is on GitHub under the most free MIT license. I would be happy if it will be useful for the world (and "eg" in its name has some symbolism of specific intention :) . 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.

User avatar
kgschlosser
Site Admin
Posts: 4766
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: XMPlay

Post by kgschlosser » Thu Jan 24, 2019 11:57 pm

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.
If you like the work I have been doing then feel free to Image

Post Reply