Update:: Fixed a problem with "NetflixApp.Movie.Stopped" event triggering when stopping TV Shows, It should now only trigger when a Movie is stopped (Sept, 20 2015 11:37PM)
Update:: fixed error of not being able to "add to My list" if TV Show was opened from search results the Win8NetflixControl.exe below is updated to the new version (May, 3 2015 11:21AM)
after helping Lja with his quest for better control of
NetfliXBMC addon in XBMC/KODI and reading
Haddood's Netflix setup with RoboBrowser I decided to modify this
AutoHotKey script for windows 8 Netflix app control to better work with VC, and then converted it in to Win8NetflixControl.exe
this does have some
required settings for this to work properly because the .exe is mapping mouse movements,
required:1.)
screen resolution needs to be 1920 x 1080 2.)
in Windows 8.1's Search, search for "Change the Size of Apps on the screen" and set it to "Larger" to make it legible from a usual TV-sitting distance. (this will change the size of all apps)3.)
Win8NetflixControl.exe MUST be placed in the VC folder (If VC is not installed on the computer then it can be ran from anywhere on the main drive)
Netflix Windows 8 APP control
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.4.5-->
<commandGroup open="False" name="Netflix Windows 8 APP" enabled="False" prefix="" priority="0" requiredProcess="" description="">
<command id="729" name="Netflix APP Closed" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>VC.EnableGroup</cmdType>
<params>
<param>XBMC Basic commands</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.DisableGroup</cmdType>
<params>
<param>Netflix Windows 8 APP</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<event>NetflixApp.Closed</event>
</command>
<command id="597" name="Netflix search" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="{LWIN}({Q})">
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>1554,1006</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>100</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({S})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{RWIN}({Q})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>100</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{CONTROL}({A})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{DELETE}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.TextEntry</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{ENTER}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>Searching Netflix for {1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Search Netflix for</phrase>
<payloadDictation>payloadDictation: Regular</payloadDictation>
</command>
<command id="616" name="Netflix Back/Exit" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>1554,1006</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>200</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>SendKeys</cmdType>
<params>
<param>{BACKSPACE}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix go back</phrase>
<event>BACK</event>
</command>
<command id="647" name="Netflix Focus" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({B})</param>
</params>
<cmdRepeat>0</cmdRepeat>
</action>
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>1000,1000</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>100</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{}({F9})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Focus Netflix</phrase>
<event>FOCUS</event>
</command>
<command id="704" name="Netflix Media Prev" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({K})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Jump Back</phrase>
<event>MEDIA PREVIOUS</event>
</command>
<command id="694" name="Netflix Media Next" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({L})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Jump Forward</phrase>
<event>MEDIA NEXT</event>
</command>
<command id="685" name="Netflix Reset Mouse Posistion" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{}({F9})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Reset Mouse Posistion</phrase>
<event>RESET MOUSE</event>
</command>
<command id="664" name="Netflix browse genre's" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>Loading Netflix {PF.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>1532,93</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{ALT}({n})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>400</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Browse, Show, Go To</phrase>
<phrase optional="true">Netflix</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\NetflixAppGuide.xml</payloadFromXML>
</command>
<command id="669" name="Netflix Play/Pause" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>1554,1006</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{}({SPACE})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Play, Netflix Pause</phrase>
<event>PLAY PAUSE</event>
</command>
<command id="681" name="Netflix move" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>SendKeys</cmdType>
<params>
<param>{{1}}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Move, GO</phrase>
<payloadList>RIGHT, LEFT, UP, DOWN</payloadList>
<event>Direction</event>
</command>
<command id="686" name="Netflix Select" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>SendKeys</cmdType>
<params>
<param>{ENTER}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Select</phrase>
<event>SELECT</event>
</command>
<command id="699" name="Netflix Info" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{ALT}({I})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix show info</phrase>
<event>INFO</event>
</command>
<command id="695" name="Netflix Exit Discreet" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({M})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Exit please</phrase>
<event>DISCREET EXIT</event>
</command>
<command id="708" name="Netflix go home" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({W})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix go home</phrase>
<event>GO HOME</event>
</command>
<command id="697" name="Netflix My List" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({Z})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Add, Remove</phrase>
<phrase optional="true">Netflix Movie, Netflix TV Show</phrase>
<phrase>to my list</phrase>
<event>MY LIST</event>
</command>
<command id="725" name="Netflix Stop" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{ALT}({e})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Stop</phrase>
<event>Stop</event>
</command>
<command id="154" name="Netflix Star Rating" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{ALT}({{1}})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>give this</phrase>
<phrase optional="true">Movie, TV Show, Video</phrase>
<phrase optional="true">a</phrase>
<payloadList>1,2,3,4,5</payloadList>
<phrase>Star Rating, Stars </phrase>
<event>Star Rating</event>
</command>
<command id="750" name="Netflix Keyboad Search (Netflix Main Menu Only)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({Q})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>I would like to search by keyboard</phrase>
<event>KEYBOARD SEARCH</event>
</command>
<command id="726" name="Netflix Genre Menu (Netflix Main Menu Only)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({G})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Browse Netflix Genre Menu</phrase>
<event>BROWSE GENRE</event>
</command>
<command id="737" name="Netflix Category Grid (Netflix Main Menu Only)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>InputKeys.Send</cmdType>
<params>
<param>{LALT}({Y})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Browse Netflix Category Grid</phrase>
<event>CATEGORY GRID</event>
</command>
<command id="693" name="Netflix Show Profiles" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>1753,95</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>NetflixProfile</param>
<param>Open</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Netflix Show Profiles</phrase>
</command>
<command id="739" name="Netflix Select Porfile (must show profiles first)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{Var.NetflixProfile}&&Open</ifParams>
<then>
<action>
<cmdType>Mouse.MoveAbsolute</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Mouse.LeftClick</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>NetflixProfile</param>
<param>closed</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<phrase>select</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\NetflixProfiles.xml</payloadFromXML>
</command>
</commandGroup>
Start Netflix
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.3.8-->
<commandGroup open="True" name="Start Netflix" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="746" name="Netflix show me netflix" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>Loading Netflix, Please wait</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Launch</cmdType>
<params>
<param>{Path.VC}\Win8NetflixControl.exe</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>show me netflix, i want to watch netflix</phrase>
<event>Start Netflix</event>
</command>
<command id="655" name="Netflix APP Started" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>VC.EnableGroup</cmdType>
<params>
<param>Netflix Windows 8 APP</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.DisableGroup</cmdType>
<params>
<param>THE GROUP YOU WANT TO DISABLE</param>
</params>
<cmdRepeat>0</cmdRepeat>
</action>
<event>NetflixApp.Started</event>
</command>
</commandGroup>
the "Netflix browse genre's" command is using mouse input to select a specific genre,
you : "browse Netflix TV Shows"
you will see: mouse clicking the menu icon (top right on home screen), the menu will open then mouse will click TV Shows from the menu,
instructions and commands to setup better control of your profiles is in the next post
"Netflix APP Started":
this is trgered when Win8NetflixControl.exe is launched it enables the group above and you will want to adjust the disable group action in this command for what you want it to disable
the Win8NetflixControl.exe (place in your VC folder) and NetflixAppGuide payload,
NetflixProfile payload (place
both in your Payload folder)
Note: this will trigger events when starting and stopping a movie
This should keep track of your position in the app as long as all input goes through the .exe the only thing I couldn't get the .exe to know is when you select to play a video directly from the main menu (the three video thumb nails on the far left of the main menu) so if you directly play a video, the stop button wont work and you will have to use the back button to exit the video, and it wont trigger an event for a movie starting and stopping
instructions and commands to setup better control of your profiles is in the next post