Many thanks to xtermin8r, kalle, nime5ter and of course James.
Finally got most of the core things I really wanted to make Vox and Plex be friends.
Got some familiarity with even more neat features about the VC platform.
Utilizing many newer things to me in VC: regex, map tables, xml parsing, python..etc I'm sure theres opportunities to clean up and make more efficient but I'm pretty pleased I got things functional:)
Anyways I felt I would share my progress:
Windows Installation of VoxCommando (I'm on VC2 v1.9.3.1)
Any installation of Plex Media Server
Get the IP of local PMS
http://IP:32400 Note the machineIdentifier / IP
http://IP:32400/clientsNote the machineidentfier / IP / Port for the client you intend to control w/ VoxCommando
http://IP:32400/library/sectionsNote the key numbers for the Movies / TV sections
Load the PY Plugin in Options of VoxCommando
Create a .\plexPayloads folder in the root of VoxCommando folder
Copy the pythonPayloads.xml to .\plexPayloads
Copy the plexXML.py to the .\PY folder
Create a Map Table called plexSystem
Enter the values for the machineIdentifier // IP // Port found above into the Map Table
Edit the .\PY\plexXML.py file with the plex client's machineIdentifier so you can filter currently playing info from any other clients' sessions
Not sure you can pass this from VC into PY script as not all objects/vars are exposed in the PY script so hard coded for now.
Create a Map Table called plexSections
Actions include:
Plex NAV - Left/right/up/down, page up/down,select
.
Plex PLAY - skip, step, toggle OSD, stop, play, pause
Plex SYS -
These are my adhoc commands:
Play movie ABC
Uses payload that is scraped from library to enhance results
Play the next episode of Mr Wizards World
This command leverages Plex's OnDeck
Generate Plex XML,
this starts up w/ VC and can call as well. This will load the system variables so VC will know for future calls where the Ips/machineIDs
etc are (this is mostly in lieu of a plugin, and some more could probably be scraped as well)
Update Libraries
This sends remote calls to PMS to update libraries for new/clean up content
Type
This sends speech to Plex such as in SEARCH, you can also use to in fields like renaming Device name in PHT
Dictate
This is like Type but uses the dictionary payloads for things like spelling out letters/acronyms like SOS
What movie is this?
This will leverage sessions XML w/ Python and filter for the plex client VC is controlling to get the right movie name and who's starring in it
What show is this?
This will leverage sessions XML w/ Python and filter for the plex client VC is controlling to get the right show name and episode title, season and ep number
What is the plot?
This will leverage sessions XML w/ Python and filter for the plex client VC is controlling to get the plot summary
Note any of the commands the call DIRECT PLAYS will always play the content from the beginning w/o asking regardless. A previous resume point will not be honored.
Still working on: commands to tell how many/who are sharing/transcoding from the PMS...