eslavnov / pylips Goto Github PK
View Code? Open in Web Editor NEWControl Philips TVs (2015+) and Ambilight (+ Hue) through their reverse-engineered API (+ MQTT support!)
License: MIT License
Control Philips TVs (2015+) and Ambilight (+ Hue) through their reverse-engineered API (+ MQTT support!)
License: MIT License
Describe the solution you'd like
To be able to set "screen off", "screen on" or otherwise toggle.
This is a setting in my quick settings menu for turning off the panel (but not the TV), for example when you are listening to music.
I have this setting on my 65PUT6703 GUI
Is your feature request related to a problem? Please describe.
I'd like to have a way to switch between HDMI inputs
Describe the solution you'd like
I'd be surprised if such API was not available, but I don't have enough experience to tell.
Describe the bug
mqtt publish from fhem is not working with the following command:
set myBroker publish /smarthome/sz/tv/cmd {"command":"volume_down"}
I have debugged it, and it seems the payload is utf8 encoded!
So after changing line 338 from:
message = json.loads(msg.payload)
to:
message = json.loads(msg.payload.decode('utf-8'))
fixed the issue for me!
I think that change makes no problem with no utf8 encoded strings, but that has to be tried.
Sadly i dont have any other mqtt device to test.
Can you please test this on your side and add this fix?
To Reproduce
see above
Expected behavior
fhem mqtt publish should work with pylips
First, thanks for the great script and API documentation, has really helped me out build some home automation stuff between the TV, Node-Red and Homekit!
I am using a 50PUS6703/12 TV operating a Linux OS, I am however using the headphone output of the TV to output audio to external speakers. When running the command python3 pylips.py volume
it returns the same values regardless of the mute status or volume level of the TV at the time. I have since discovered that this is returning the settings for the volume of the internal speakers; when unplugging the 3.5mm jack from the headphone output and adjusting the volume/mute status with the remote, this then is reflected in the response from the API and subsequently the pylips script. It is therefore clear that the data for the internal speakers and headphone output are stored separately, and could be accessible from alternative endpoints?
It would be great if an API endpoint was documented (if it exists) and a command added to the pylips script to return the volume of the headphone output instead of the internal output. Subsequently it may also become prudent to document the API endpoint (if it exists) and have a command that returns which output is currently active so that the appropriate request can then be made to find the current TV volume (headphones or internal)
Note, when making post requests to the http://ip-address:1925/6/audio/volume endpoint, sending {"muted": false}
or {"muted": true}
DOES change the muted status for the active output (headphones or internal speakers), but sending {"current": 18}
ONLY changes the volume of the internal TV speakers so in the case headphones are connected makes no audible change. Of course using the https://ip-address:1926/6/input/key endpoint, and sending {"key": "VolumeUp"}
, {"key": "VolumeDown"}
, or {"key": "Mute"}
does reflect changes to whichever output is currently active (headphones or internal speakers) as it is just the same as if the TV remote was to be used directly. It is therefore requested that consideration be made for documentation of the API endpoint (again if it exists) that will work to set the volume of the headphone output as in the http://ip-address:1925/6/audio/volume endpoint, which as above only works for the internal speakers.
Note there also appears to be an option in the settings to output audio over HDMI, this may prove a similar issue to the above, so may require further API endpoints for access to that data?
Hey @eslavnov,
hope you and your family are doing well these days?
I have an idea regarding launching the shutdown/restart menu on the android TV over pylips.
In the toengel blog there is an interesting entry which allows to map the shutdown/restart menu to any button (except standby). Also starting apps, activities can be launched this way!
Launching apps is already supported by pylips and using activities (as i understand, sorry not so deep in android).
So would it be possible to send the "show shutdown/restart" activity over pylips to the tv?
thanks a lot
Tobias
Is your feature request related to a problem? Please describe.
Couldn't find anywhere saying that this code supports Saphi OS TVs and this would be nice to have.
Describe the solution you'd like
I would like to be able to control Saphi OS TVs with the same commands that you have for other philips TVs
Describe alternatives you've considered
I don't think there is anywhere some alternatives for this type of TVs.
Additional context
No
Hello, I would like to send notifications on the TV screen. It is possible because there is a command to send text but it doesn’t work for me.
I have an Echo device and if I use the Alexa app in the TV to pair both devices (Alexa and TV) I can see notifications on the screen when I turn the TV off for example, the TV writes something like Goodbye on the screen. It could be very useful for those who do home automation (alarm for example...).
Does somebody know how this command works ?
I don’t know how to use a sniffer to catch the trafic but I think it is possible. If someone could help for that... Thanks
Hi! Do you have any plans for packaging your tool and publishing it to PyPI?
SAPHI OS works great with most commands, its possivel to used it resscommand in HA?
Is your feature request related to a problem? Please describe.
While mqtt over TLS is supported, it's missing the possibility to configure a custom SSL/TLS certificate.
Describe the solution you'd like
I'd like to have a config option where I can configure my broker SSL cert.
Describe alternatives you've considered
n/a
Additional context
paho-mqtt supports these options in the tls_set()
function. See https://pypi.org/project/paho-mqtt/#option-functions
(my example setup with self.mqtt.tls_set("/opt/pylips/mosquitto.crt")
works)
Hello, I have a strange bug:
When I call https://192.168.178.32:1926/6/powerstate I get powerstate "On"
But with MQTT I get {
"powerstate": "Off",
"volume": null,
"muted": false,
"cur_app": null,
"ambilight": null,
"ambihue": false
}
I have been investigating controlling the TV and have discovered some extra API calls that are not in the list.
On later models the tv uses API 6 so most calls are proceeded by this. i.e.
http://:1925/6/[API call]
http://:1925/6/system
It seems the /system call will return valid data when called with either /1/ or /6/ - presumably so the actual API can be determined from the returned JSON.
Here are the GET calls I have found.
Get the channel logo for a channel from its ccid number. Returns a png image if there is one or a 404 not found if no logo is available.
/6/channeldb/tv/channelLists/allcab//logo
Get the list of favorite channels took a while to resolve as it is different to the description in the api
/6/channeldb/tv/favoriteLists/favcab
Returns a json with the ccid number and preset number. Preset number is the channels position in the favorites list. For some reason it starts from 2 and not 1. favcab is the id from the favoriteLists entry from the /6/channeldb/tv call.
There are various calls that return xml files for dmr (Media Rendering?) There are not prefixed with the API version and are on http port 2870.
/dmr.xml
/dmr_avts.xml
/dmr_cms.xml
Some POST calls
/control/ConnectionManager
/control/AVTransport
These are SOAP calls and needs a SOAP payload.
(...follow up to #41 as I couldn't reopen the issue...)
I updated the TVs Android software and successfully paired it with the iOS remote app, but the app doesn't do too much (ratings in the app store complain about missing/broken functionality with the latest app version).
After rebooting the TV now I get following:
python3 pylips.py
Checking API version and port...
Trying http://IP.OF.MY.TV:1925/6/system
Connection refused
Trying http://IP.OF.MY.TV:1925/5/system
Connection refused
Trying http://IP.OF.MY.TV:1925/1/system
Connection refused
PING IP.OF.MY.TV (IP.OF.MY.TV) 56(84) bytes of data.
64 bytes from IP.OF.MY.TV: icmp_seq=1 ttl=64 time=0.597 ms
--- IP.OF.MY.TV ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.597/0.597/0.597/0.000 ms
IP IP.OF.MY.TV is online, but no known API is found. Exiting...
When I open the URL http://IP.OF.MY.TV:1925/6/system
in my browser the result is
{"notifyChange":"http","menulanguage":"German","name":"55PUS7394-12","country":"Germany","serialnumber_encrypted":"H0HR6EHZSqqWtybuK40VCrnDxto62F89nqinyiuKo8A=\n","softwareversion_encrypted":"HUUPMg2cTvN\/QxSl+S+1x3LDy\/rpbDcYCScz\/pD42bjcp9kbObXMYLF7gEfGNXYK\n","model_encrypted":"x378brSX+8m4vCn29qtoG6a7g4l1YG3eX8XDWCDesZ4=\n","deviceid_encrypted":"hzu0wwK8b2wml0HUPWJz3tkNCxAuEqgRji79EOR\/yKI=\n","nettvversion":"8.2.0","epgsource":"no_epg","api_version":{"Major":6,"Minor":1,"Patch":0},"featuring":{"jsonfeatures":{"editfavorites":["TVChannels","SatChannels"],"recordings":["List","Schedule","Manage"],"ambilight":["LoungeLight","Hue","Ambilight","HueStreaming"],"menuitems":["Setup_Menu"],"textentry":["not_available"],"applications":["TV_Apps","TV_Games","TV_Settings"],"pointer":["not_available"],"inputkey":["key"],"activities":["intent"],"channels":["preset_string"],"mappings":["server_mapping"]},"systemfeatures":{"tvtype":"consumer","content":["dmr","pvr"],"tvsearch":"intent","pairing_type":"digest_auth_pairing","secured_transport":"true","companion_screen":"true"}},"os_type":"MSAF_2019_P"}
The other URLs do not return anything.
Installing requirements from "requirements.txt" was not possible.
The package "pycrypto" failed to install.
Installing Visual Studio C++ Build Tools does not change anything.
At long last i installed the package "pycryptodome":
$pip install pycryptodome
This package worked for me and the TV "Philips 65PUS6704/12" is working (Not fully tested yet).
First, thanks for this beautiful python script!
Back half a year i was struggling to control my new "65PUS8102" (android tv) from windows and eventghost. This was solved by an modified older philips script which was no so mighty as this :-)
Currently did'nt tried it, but it looks very promissing and i will try it soon.
So here is my question/feature request:
Back half a year i have solved it with an usb -> ir transmitter and sent "on" (or 1) to switch it on.
I realized that the JS api to turn it on does'nt work when the tv was off for an amount off time.
WOL did'nt work, regardless of its power state.
I'll think it enters some sort of deep standby and switches off network.
Yeah, there is an option to deactivate it, but sadly this has'nt solved the issue.
I could not power it on over network.
I have read your very detailed readme (thanks for this) but could not find any word of this "issue" i had. In the meantime i have received the Pie update but did not tried JS or WOL again.
How do you power on the philips android tv over network without the use of the philips app?
Does WOL work for you, all the time?
Which settings do i have to change that it maybe work?
Any chance to get a WOL feature, or is it already implemented?
Thank a lot and keep up the good work
Is your feature request related to a problem? Please describe.
The tool does not support non-Android Philips TVs.
Describe the solution you'd like
It seems that non-Android Philips TVs use a slightly different API:
pairing_type
in system
instead. Both 6.1 and 6.2 can require pairingI don't own such a TV so I rely on other people to help me with mapping this version of the API. Once the traffic is captured and analyzed, the tool needs to be updated to support non-Android Philips TVs.
If you have a non-Android Philips TV (2016+) please reply to this issue to help me with testing it!
Describe the bug
Before i'll used pylips my smarthome ping'ed the ethernet interface of my TV's (65PUS8102 & 55PUS9104).
If they where offline/online this was a trigger todo certain things (switching lights, ...).
Sadly the philips tv has woke up in the night on ~04:00 AM everyday made this useless as a trigger.
After activating alexa on the tv, the "deep standby" was deactivated and the power state worked reliable.
After some time i switched to pylips with mqtt for power state (3sec intervall), which also works good (alexa is activated).
So my question is, does the power state also works when alexa is deactivated?
So DONT send "on" state @ ~04:00 AM when the TV is doing its magic (channel scanning!?)?
I want to deactivate alexa because i think, since i have activated it, the tv is more unstable (because of long runtime).
Also i have some audio dropout's on my HDMI ARC connected audio system. After reboot -> everything is in good shape.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
I'll hope that this works, so i can deactivate alexa and use deep standby again.
Also i would throw les energy without alexa.
Hope anyone of you is using this in such way and can give me some hints 👍
thx
Is your feature request related to a problem? Please describe.
I use Home Assitant, and I would really like to add your work in this eco system. It will allow a lot of user to easily control the Ambilight light as a classic connected light and some other great feature.
Describe the solution you'd like
I have some basics skills in Python and I can work on the integration in Home Assistant but the software require a pip library to make it easy. (Maybe I can use directly this github repository but I have to look further to see if it possible).
Describe alternatives you've considered
I can make another repo from scratch and make the library from scratch based on your work. But it could be difficult for me to reflect any update made by you.
Additional context
I'm open to any idea that could lead to integrate TV in Home Assistant. I can provide some help if it's not beyond my skills in Python.
Hello.
In the last version, I see that there is a power_on command, which I was very happy to see implemented.. but it doesn't seem to work on my 55PUS7304/12.
I did multiple tests:
Is there any way to fix this? Or at least start the API after sending a WoL package? (if the API starts up, I can use standby to power on the TV)
Describe the bug
The new Philips 55OLED754/12 reports as apiversion it's 6.1.0 but it does not support the /6/activites/current endpoint. This makes the use of pylips mostly impossible especially in MQTT mode which I wanted to use because it just dies because it tries to query activities as soon as the tv is in mode Powerstate "on"
To Reproduce
1.) configure mqtt settings in settings.ini
2.) start pylips in MQTT mode (so without any parameters)
3.) pylips dies as soon as it tries ti query activities
Expected behavior
there ahould at least be a possibility to skip this query or not do a fatal call Probably script should go on on every "Not Found" answer.
Using pylips in mqtt mode now on an 65pus8102 and 55pus9104, it works really good!!
Since activating alexa on the TV sets it doesn't deactivate the network interfaces in standby (I think it just don't go in any sleep mode) and I am able to wake it with pylips sending standby key.
Sadly in my case, after a few days the sound over my avr (connected with ARC) is choppy. A manual restart of the TV set, solves the issue.
So my feature request! / question is a silent, scheduled reboot with pylips.
PS. : adb reboot is working but not silent
Is this possible?
Thx
Hello,
Nice job with the documentation and everything else. I’m trying to set up the timer. I can get info with :
"menuitems/settings/current -d {"nodes":[{"nodeid":2131230835}]}"
It returns :
"values":[{"value":{"Nodeid":2131230835,"Controllable":true,"Available":true,"string_id":"Arrêt programmé","data":{"value":0}}}],"version":0}
So I have the good nodeid for the timer and it is controllable.
If I change with the remote the timer to power off the value changes with the previous command again. But if I send the following command, I got no error but the timer is not set up !!
menuitems/settings/update -d {"values":[{"value":{"Nodeid":2131230835,"Controllable":true,"Available":true,"data":{"value":40}}}]}"
Value=40 for 40 minutes before shutting down the TV...
How can I fix this ?
Thanks.
Is your feature request related to a problem? Please describe.
I plan to buy a Philips TV very soon (like today) with the Saphi OS. I would like to know if this library can handle this model.
Describe the solution you'd like
Generally, it could be great to have a list of all supported TV in the wiki for example. This list could be filled with the community that use this library.
Additional context
This is the model that I plan to buy PHILIPS 65OLED754.
"IP 192.168.0.223 is online, but no known API is found. Exiting..."
If its something you're interested in sorting and I can help let me know
Hello!
First congratulate you for this great script. The second I apologize for my English, I must use Google Translate.
I am trying to generate a switch by mqtt to be able to turn the Ambilight + Hue on and off on the 55PUS7304 and be able to integrate this feature into my home automation center.
The Philips Remote application connects relatively well with the TV (it has disconnection failures and the ambilight bridge settings do not synchronize with the TV) but the turning on and off of both Ambilight and Ambilight-Hue, once configured on the TV, work well .
This is the value returned by mqtt:
{"powerstate": "On", "volume": 20, "muted": false, "cur_app": "uk.co.freeview.onnow", "ambilight": {"styleName": "FOLLOW_VIDEO", "isExpert ": false," menuSetting ":" NATURAL "," stringValue ":" Natural "}," ambihue ": 5}
I don't understand that value 5 in Ambihue. If I turn off the ambihue with the app or from the TV, it does not change.
I deactivate the mqtt in settings.ini and now I do tests with the readme commands:
For status
pi@DiyHuePi:/pylips $ sudo python3 pylips.py --host 172.16.10.11 --user qqjKm8W9ub5RCrW3 --pass 73ad38878df23d1689b9fc0cfaec9c1f5067f30b0fbf56ce1e609b76c0e47884 --command ambihue_status
Sending POST request to https://172.16.10.11:1926/6/menuitems/settings/current
Request sent!
{"values":[{"value":{"Nodeid":2131230774,"Controllable":true,"Available":false,"string_id":"Brillo de la parte inferior","data":{"value":5}}}],"version":1581773617053}
For Ambi+Hue on
pi@DiyHuePi:/pylips $ sudo python3 pylips.py --host 172.16.10.11 --user qqjKm8W9ub5RCrW3 --pass 73ad38878df23d1689b9fc0cfaec9c1f5067f30b0fbf56ce1e609b76c0e47884 --command ambihue_on
Sending POST request to https://172.16.10.11:1926/6/menuitems/settings/update
Request sent!
{"response": "OK"}
For Ambi+Hue off
pi@DiyHuePi:/pylips $ sudo python3 pylips.py --host 172.16.10.11 --user qqjKm8W9ub5RCrW3 --pass 73ad38878df23d1689b9fc0cfaec9c1f5067f30b0fbf56ce1e609b76c0e47884 --command ambihue_off
Sending POST request to https://172.16.10.11:1926/6/menuitems/settings/update
Request sent!
{"response": "OK"}
Nothing happens. Only change in status, the value
"version": 1581773617053
that its number is increasing (54, 55, 56 ...)
These are the values offered in the browser https://172.16.10.11:1926/6/system
{"notifyChange":"http","menulanguage":"Spanish","name":"55PUS7304\/12","country":"Spain","serialnumber_encrypted":"s53vNo\/gABVJXbfA4wAP0w3Rsy6YcS6g5dtYQLWw76E=\n","softwareversion_encrypted":"wuIstBMd8\/WsNDlcly9T4EeYPOI+GJrK08kDdVFC3b7a17YUuVYF7Er6ZBA2Unom\n","model_encrypted":"IHrF2HY3A1IcuZYPrd02ozA9ilATGZQR\/H6ictzWVcI=\n","deviceid_encrypted":"vxw2iJBhiCSM5Ig5H9\/jCwnAbzSbE\/Twt5cRWtEwasI=\n","nettvversion":"8.2.0","epgsource":"no_epg","api_version":{"Major":6,"Minor":1,"Patch":0},"featuring":{"jsonfeatures":{"editfavorites":["TVChannels","SatChannels"],"recordings":["List","Schedule","Manage"],"ambilight":["LoungeLight","Hue","Ambilight","HueStreaming"],"menuitems":["Setup_Menu"],"textentry":["not_available"],"applications":["TV_Apps","TV_Games","TV_Settings"],"pointer":["not_available"],"inputkey":["key"],"activities":["intent"],"channels":["preset_string"],"mappings":["server_mapping"]},"systemfeatures":{"tvtype":"consumer","content":["dmr","pvr"],"tvsearch":"intent","pairing_type":"digest_auth_pairing","secured_transport":"true","companion_screen":"true"}},"os_type":"MSAF_2019_P"}
Any ideas or help? Any test I can do, I offer my model to test
Thx
I want to toggle "Screen off" but can't figure it out.
Using GET on http://ip-address:1926/6/menuitems/settings/structure gave me:
{"node":{"node_id":2131230753,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_VB_SETUP","context":"Setup_Menu","data":{"nodes":[{"node_id":2131230841,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PICTURE","context":"picture","data":{"nodes":[{"node_id":2131230842,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PICTURE_STYLE","context":"picture_style","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PERSONAL"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIVID"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NATURAL"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_STANDARD","icon":"org.droidtv.ui.tvwidget2k15.R.drawable.eco_16x12_146"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MOVIE"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAME"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MONITOR"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_PERSONAL"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_VIVID"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_DOLBY_VISION_BRIGHT"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_DOLBY_VISION_DARK"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_NATURAL"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_MOVIE"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_GAME"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ISF_DAY","icon":"org.droidtv.ui.tvwidget2k15.R.drawable.isf_16x12_250"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ISF_NIGHT","icon":"org.droidtv.ui.tvwidget2k15.R.drawable.isf_16x12_250"}]},"type":"LIST_NODE"},{"node_id":2131230843,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COLOUR","context":"colour","data":{"slider_data":{"min":0,"max":100,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230844,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CONTRAST","context":"contrast","data":{"slider_data":{"min":0,"max":100,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230845,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SHARPNESS","context":"sharpness","data":{"slider_data":{"min":0,"max":10,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230846,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BRIGHTNESS","context":"brightness","data":{"slider_data":{"min":0,"max":100,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230908,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MISC_3D","context":"3d","data":{"nodes":[{"node_id":2131230909,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VB_3D_FORMAT","context":"3d_format","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MISC_2D"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MISC_3D"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_3D_2D_TO_3D_CONVERSION"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_3D_SIDE_BY_SIDE"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_3D_TOP_BOTTOM"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_3D_SIDE_BY_SIDE_INVERTED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_3D_TOP_BOTTOM_INVERTED"}]},"type":"LIST_NODE"},{"node_id":2131230910,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAMING","context":"gaming","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAMING_MODE"},{"enum_id":101,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIDE_BY_SIDE_GAMING"},{"enum_id":102,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TOP_BOTTOM_GAMING"}]},"type":"LIST_NODE"},{"node_id":2131230911,"string_id":"org.droidtv.ui.strings.R.string.MAIN_3D_EXPERIENCE","context":"3d_experience","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FLICKER_FREE"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM_CLARITY"}]},"type":"LIST_NODE"},{"node_id":2131230912,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_3D","context":"switch_to_3d","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_3D_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_3D_NOTIFICATION_ONLY"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_3D_ON"}]},"type":"LIST_NODE"}]}},{"node_id":2131230847,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_ADVANCED_PICTURE","context":"advanced_picture","data":{"nodes":[{"node_id":2131230848,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_COLOUR","context":"colour_menu","data":{"nodes":[{"node_id":2131230849,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TINT_HUE","context":"tint","data":{"slider_data":{"min":-50,"max":50,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230850,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COLOUR_ENHANCEMENT","context":"colour_enhancement","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230851,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COLOUR_GAMUT","context":"colour_gamut","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORMAL"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WIDE"}]},"type":"LIST_NODE"},{"node_id":2131230852,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COLOUR_TEMPERATURE","context":"colour_temperature","data":{"enums":[{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORMAL"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WARM"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COOL"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CUSTOM"}]},"type":"LIST_NODE"},{"node_id":2131230853,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WHITEPOINT_ALIGNMENT","context":"whitepoint_alignment_item","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED_WP","slider_data":{"min":0,"max":127,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN_WP","slider_data":{"min":0,"max":127,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE_WP","slider_data":{"min":0,"max":127,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED_BL","slider_data":{"min":-7,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN_BL","slider_data":{"min":-7,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE_BL","slider_data":{"min":-7,"max":8,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230854,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_WHITEPOINT_ALIGNMENT","context":"whitepoint_alignment_menu","data":{"nodes":[{"node_id":2131230855,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WHITEPOINT_ALIGNMENT_2POINT","context":"whitepoint_alignment","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED_WP","slider_data":{"min":0,"max":127,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN_WP","slider_data":{"min":0,"max":127,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE_WP","slider_data":{"min":0,"max":127,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED_BL","slider_data":{"min":-7,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN_BL","slider_data":{"min":-7,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE_BL","slider_data":{"min":-7,"max":8,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230856,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WHITEPOINT_ALIGNMENT_20POINT","context":"whitepoint_alignment","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_LEVEL","slider_data":{"min":1,"max":20,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED_OFFSET","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN_OFFSET","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE_OFFSET","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"}]}},{"node_id":2131230857,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_COLOUR_CONTROL","context":"colour_control","data":{"nodes":[{"node_id":2131230858,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED","context":"colour_control","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_HUE","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_SATURATION","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_INTENSITY","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230859,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MS_YELLOW","context":"colour_control","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_HUE","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_SATURATION","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_INTENSITY","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230860,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN","context":"colour_control","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_HUE","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_SATURATION","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_INTENSITY","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230861,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MS_CYAN","context":"colour_control","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_HUE","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_SATURATION","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_INTENSITY","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230862,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE","context":"colour_control","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_HUE","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_SATURATION","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_INTENSITY","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230863,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MS_MAGENTA","context":"colour_control","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_HUE","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_SATURATION","slider_data":{"min":-15,"max":15,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_INTENSITY","slider_data":{"min":-15,"max":15,"step_size":1}}]},"type":"MULTIPLE_SLIDER"},{"node_id":2131230864,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_RESET_ALL","context":"reset_all","data":{}}]}},{"node_id":2131230865,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RGB_ONLY_MODE","context":"rgb_only_mode","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEN"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BLUE"}]},"type":"LIST_NODE"}]}},{"node_id":2131230866,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CONTRAST_MENU","context":"contrast_menu","data":{"nodes":[{"node_id":2131230867,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CONTRAST_MODE","context":"contrast_modes","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORMAL"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OPTMIZED_FOR_PICTURE"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OPTMIZED_FOR_ENERGY_SAVING"}]},"type":"LIST_NODE"},{"node_id":2131230868,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HDR_UPSCALING","context":"hdr_upscaling","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230869,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PNR","context":"perfect_natural_reality","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230870,"context":"hd_ultra_hdr","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_3D_ON"}]},"type":"LIST_NODE"},{"node_id":2131230871,"context":"perfect_contrast","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230872,"context":"video_contrast","data":{"slider_data":{"min":0,"max":100,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230873,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LIGHT_SENSOR","context":"light_sensor","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230874,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAMMA","context":"gamma","data":{"slider_data":{"min":-4,"max":4,"step_size":1}},"type":"SLIDER_NODE"}]}},{"node_id":2131230875,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_SHARPNESS","context":"sharpness_menu","data":{"nodes":[{"node_id":2131230876,"context":"super_resolution","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"}]}},{"node_id":2131230877,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PICTURE_CLEAN","context":"picture_clean_menu","data":{"nodes":[{"node_id":2131230878,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NOISE_REDUCTION","context":"noise_reduction","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230879,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MPEG_ARTEFACT_REDUCTION","context":"mpeg_artefact_reduction","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"}]}},{"node_id":2131230880,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_MOTION_MENU","context":"motion_menu","data":{"nodes":[{"node_id":2131230881,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MOTION_STYLE","context":"motion_style","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MOVIE"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPORTS"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_STANDARD"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SMOOTH"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PERSONAL"}]},"type":"LIST_NODE"},{"node_id":2131230882,"context":"hd_natural_motion","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230883,"string_id":"org.droidtv.ui.strings.R.string.MISC_PERFECT_CLEAN_MOTION","context":"clear_lcd","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"}]}},{"node_id":2131230884,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CLEAR_IMAGE_RESIDUAL","context":"clear_image_residual","data":{}}]}},{"node_id":2131230885,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PICTURE_FORMAT","context":"picture_format","data":{}},{"node_id":2131230886,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DOLBY_VISION_NOTIFICATION","context":"dolby_vision_notification","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230887,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_QUICK_PICTURE_SETTINGS","context":"quick_picture_settings","data":{}}]}},{"node_id":2131230888,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_SOUND","context":"sound","data":{"nodes":[{"node_id":2131230889,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SOUND_STYLE","context":"sound_style","data":{"enums":[]},"type":"LIST_NODE"},{"node_id":2131230890,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SOUND_STYLE","context":"sound_style","data":{"enums":[]},"type":"LIST_NODE"},{"node_id":2131230891,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEADPHONE_VOLUME","context":"headphones_volume","data":{"slider_data":{"min":0,"max":60,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230892,"type":"PARENT_NODE","context":"sound_expert_mode","data":{"nodes":[{"node_id":2131230893,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPEAKER_VIRTUALIZER","context":"personal_dolby_atmos","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DOLBY_ATMOS_AUTO"}]},"type":"LIST_NODE"},{"node_id":2131230894,"string_id":"org.droidtv.ui.strings.R.string.MISC_CLEAR_DIALOGUE","context":"clear_dialogue","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230895,"string_id":"org.droidtv.ui.strings.R.string.MAIN_EQUALIZER","context":"expert_equalizer","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MISC_100_HZ","slider_data":{"min":-8,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MISC_300_HZ","slider_data":{"min":-8,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MISC_1_KHZ","slider_data":{"min":-8,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MISC_3_KHZ","slider_data":{"min":-8,"max":8,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MISC_10_KHZ","slider_data":{"min":-8,"max":8,"step_size":1}}]},"type":"MULTIPLE_SLIDER"}]}},{"node_id":2131230896,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TV_POSITION","context":"tv_placement","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WALL_MOUNTED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON_TV_STAND"}]},"type":"LIST_NODE"},{"node_id":2131230897,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_ADVANCED_SOUND","context":"advanced_sound","data":{"nodes":[{"node_id":2131230898,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_VOLUME","context":"auto_volume_leveling","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NIGHT_MODE"}]},"type":"LIST_NODE"},{"node_id":2131230899,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DELTA_VOLUME","context":"DeltaVolume","data":{"slider_data":{"min":-12,"max":12,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230900,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUDIO_OUT","context":"tv_speakers","data":{"enums":[]},"type":"LIST_NODE"},{"node_id":2131230901,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DIGITAL_OUTPUT_FORMAT","context":"digital_output_format","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTICHANNEL"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.SPDIF_OUTPUT_3"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PCM"}]},"type":"LIST_NODE"},{"node_id":2131230902,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DIGITAL_OUTPUT_LEVEL","context":"digital_output_level","data":{"enums":[{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPDIF_MORE"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPDIF_MEDIUM"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPDIF_LESS"}]},"type":"LIST_NODE"},{"node_id":2131230903,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUDIO_OUT_DELAY","context":"audio_out_delay","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NO_LATENCY"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IN_LIPSYNC"}]},"type":"LIST_NODE"},{"node_id":2131230904,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUDIO_OUT_OFFSET","context":"audio_out_offset","data":{"slider_data":{"min":0,"max":60,"step_size":5}},"type":"SLIDER_NODE"},{"node_id":2131230905,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SUBWOOFER_OUT","context":"subwoofer_out","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230906,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CENTRE_SPEAKER_VOLUME","context":"centre_speaker_volume","data":{"slider_data":{"min":-3,"max":3,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230907,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEIGHT_SPEAKER_VOLUME","context":"height_speaker_volume","data":{"slider_data":{"min":-3,"max":3,"step_size":1}},"type":"SLIDER_NODE"}]}}]}},{"node_id":2131230765,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MISC_AMBILIGHT","context":"ambilight","data":{"nodes":[{"node_id":2131230766,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_STYLE","context":"ambilight_style","data":{"nodes":[{"node_id":2131230767,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_STYLE_OFF","context":"ambilight_off","data":{}},{"node_id":2131230768,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_VIDEO","context":"ambilight_follow_video","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_STANDARD"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_NATURAL"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_FOOTBALL"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_VIVID"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_VIVID"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_GAME"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_COMFORT"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_RELAX"}]},"type":"LIST_NODE"},{"node_id":2131230769,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO","context":"ambilight_follow_audio","data":{"enums":[{"enum_id":101,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_1"},{"enum_id":102,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_2"},{"enum_id":103,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_3"},{"enum_id":104,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_4"},{"enum_id":106,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_5"},{"enum_id":107,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_6"},{"enum_id":110,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_AUDIO_STYLE_7"}]},"type":"LIST_NODE"},{"node_id":2131230770,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_COLOUR","context":"ambilight_follow_color","data":{"enums":[{"enum_id":201,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LOUNGE_LIGHT_MODE_2"},{"enum_id":202,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LOUNGE_LIGHT_MODE_3"},{"enum_id":203,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LOUNGE_LIGHT_MODE_1"},{"enum_id":207,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WARM_WHITE"},{"enum_id":204,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COOL_WHITE"}]},"type":"LIST_NODE"},{"node_id":2131230771,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_FLAG","context":"ambilight_follow_flag","data":{}},{"node_id":2131230772,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_FOLLOW_APP","context":"ambilight_follow_app","data":{}}]}},{"node_id":2131230773,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_BRIGHTNESS","context":"ambilight_brightness","data":{"slider_data":{"min":0,"max":10,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230774,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BRIGHTNESS_BOTTOM_SIDE","context":"ambilight_brightness_bottom_side","data":{"slider_data":{"min":0,"max":10,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230775,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_SATURATION","context":"ambilight_saturation","data":{"slider_data":{"min":-2,"max":2,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230776,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_PLUS_HUE","context":"ambilight_hue_menu","data":{"nodes":[{"node_id":2131230777,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_HUE_CONFIGURE","context":"ambilight_hue_wizard","data":{}},{"node_id":2131230778,"context":"ambilight_hue_off","data":{},"type":"TOGGLE_NODE"},{"node_id":2131230779,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_HUE_FOLLOW_AMBILIGHT","context":"ambilight_hue_follow_ambilight","data":{"slider_data":{"min":0,"max":10,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230780,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LOUNGE_LIGHT_HUE","context":"ambilight_lounge_light_hue","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230781,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_HUE_STATUS","context":"ambilight_hue_status","data":{}},{"node_id":2131230782,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AMBILIGHT_HUE_RESET","context":"ambilight_hue_reset_configuration","data":{}}]}},{"node_id":2131230783,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_ADVANCED_AMBILIGHT","context":"ambilight_advanced","data":{"nodes":[{"node_id":2131230784,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WALL_COLOUR","context":"ambilight_wall_colour","data":{"colors":[-1,-1651276,-3342439,-3347201,-3355393,-13108,-6451,-103,-12566464,-3693173,-6565376,-10053121,-2982751,-33664,-81560,-256,-15724528,-7508135,-10452480,-15513423,-5293203,-1888983,-5682169,-26368]},"type":"WALL_COLOR_NODE"},{"node_id":2131230785,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TV_SWITCH_OFF","context":"ambilight_tv_switch_off","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FADE_OUT"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IMMEDIATE_SWITCH_OFF"}]},"type":"LIST_NODE"},{"node_id":2131230786,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ISF_TUNING","context":"ambilight_isf_tuning","data":{"sliders":[{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_RED","slider_data":{"min":0,"max":100,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_GREEN","slider_data":{"min":0,"max":100,"step_size":1}},{"slider_id":"org.droidtv.ui.strings.R.string.MAIN_MS_BLUE","slider_data":{"min":0,"max":100,"step_size":1}}]},"type":"MULTIPLE_SLIDER"}]}}]}},{"node_id":2131230814,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_ECO_SETTINGS","context":"eco_settings","data":{"nodes":[{"node_id":2131230815,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENERGY_SAVING","context":"energy_saving","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230816,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_MUTE_SCREEN","context":"screen_off","data":{}},{"node_id":2131230817,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_LIGHT_SENSOR","context":"eco_settings_light_sensor","data":{}},{"node_id":2131230818,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTOMATIC_SWITCH_OFF","context":"switch_off_timer","data":{"slider_data":{"min":0,"max":240,"step_size":30}},"type":"SLIDER_NODE"}]}},{"node_id":2131230913,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_GENERAL_SETTINGS","context":"general_settings","data":{"nodes":[{"node_id":2131230914,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_USB_STORAGE","context":"usb_storage","data":{}},{"node_id":2131230915,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_USB_KEYBOARD_SETTINGS","context":"usb_keyboard_settings","data":{}},{"node_id":2131230916,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PHILIPS_WORDMARK","context":"philips_wordmark","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MINIMUM"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MEDIUM"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAXIMUM"}]},"type":"LIST_NODE"},{"node_id":2131230917,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LOCATION","context":"location","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HOME"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SHOP"}]},"type":"LIST_NODE"},{"node_id":2131230918,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_VB_SHOP_CONFIGURATION","context":"shop_setup","data":{}},{"node_id":2131230919,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MISC_EASYLINK","context":"easylink_menu","data":{"nodes":[{"node_id":2131230920,"string_id":"org.droidtv.ui.strings.R.string.MISC_EASYLINK","context":"easylink","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230921,"string_id":"org.droidtv.ui.strings.R.string.MAIN_EASYLINK_REMOTE_CONTROL","context":"easylink_remote_control","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"}]}},{"node_id":2131230922,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI_ULTRA_HD","context":"hdmi_ultra_hd","data":{"nodes":[{"node_id":2131230923,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI1","context":"hdmi_ultra_hd","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_STANDARD_2K18"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_OPTIMAL_2K18"}]},"type":"LIST_NODE"},{"node_id":2131230924,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI2","context":"hdmi_ultra_hd","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_STANDARD_2K18"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_OPTIMAL_2K18"}]},"type":"LIST_NODE"},{"node_id":2131230925,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI3","context":"hdmi_ultra_hd","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_STANDARD_2K18"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_OPTIMAL_2K18"}]},"type":"LIST_NODE"},{"node_id":2131230926,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI4","context":"hdmi_ultra_hd","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_STANDARD_2K18"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UHD_OPTIMAL_2K18"}]},"type":"LIST_NODE"}]}},{"node_id":2131230927,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_HDMI_AUTO_GAME_MODE","context":"hdmi_auto_game_mode","data":{"nodes":[{"node_id":2131230928,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI1","context":"hdmi_auto_game_mode","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230929,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI2","context":"hdmi_auto_game_mode","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230930,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI3","context":"hdmi_auto_game_mode","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230931,"string_id":"org.droidtv.ui.strings.R.string.MISC_HDMI4","context":"hdmi_auto_game_mode","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"}]}},{"node_id":2131230932,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_VIEWING_DATA","context":"viewing_data","data":{"nodes":[{"node_id":2131230933,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIEWING_DATA_SETTINGS","context":"viewing_data_settings","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230934,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PRIVACY_POLICY","context":"privacy_policy","data":{}}]}},{"node_id":2131230935,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_ADVANCED_PICTURE","context":"advanced_general_settings","data":{"nodes":[{"node_id":2131230936,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTOMATIC_RECORDING","context":"auto_recording","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230937,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_HBBTV_SETTINGS","context":"hbbtv_settings","data":{"nodes":[{"node_id":2131230938,"string_id":"org.droidtv.ui.strings.R.string.MISC_HBB_TV","context":"hbbtv","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230939,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HBBTV_TRACK_USAGE","context":"hbbtv_track_usage","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230940,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HBBTV_COOKIES","context":"hbbtv_cookies","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230941,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CLEAR_APPROVED_APP_LISTING","context":"hbbtv_clear_listing","data":{}}]}}]}},{"node_id":2131230942,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_FACTORY_SETTINGS","context":"factory_settings","data":{}},{"node_id":2131230943,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_REINSTALL_TV","context":"reinstall_tv","data":{}},{"node_id":2131230944,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.CAM_PROFILE_NAME","context":"CAM_profile_name","data":{}}]}},{"node_id":2131230819,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_REGION_AND_LANGUAGE","context":"region_languages","data":{"nodes":[{"node_id":2131230820,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_LANGUAGES","context":"languages","data":{"nodes":[{"node_id":2131230821,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MENU_LANGUAGE","context":"menu_language","data":{"enums":[{"enum_id":83,"string_id":"org.droidtv.ui.strings.R.string.MISC_AZERBAIJANI"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MISC_BAHASA_MELAYU"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MISC_INDONESIAN"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MISC_BULGARIAN"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MISC_CZECH"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MISC_DANISH"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MISC_GERMAN"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MISC_ENGLISH"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MISC_SPANISH"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MISC_ESTONIAN"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MISC_GREEK"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MISC_FRENCH"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MISC_IRISH"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MISC_CROATIAN"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MISC_ITALIAN"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MISC_KAZAKH"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MISC_LATVIAN"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MISC_LITHUANIAN"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MISC_MACEDONIAN"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MISC_HUNGARIAN"},{"enum_id":78,"string_id":"org.droidtv.ui.strings.R.string.MISC_MONGOLIAN"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MISC_DUTCH"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MISC_NORWEGIAN"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MISC_POLISH"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MISC_PORTUGUESE"},{"enum_id":36,"string_id":"org.droidtv.ui.strings.R.string.MISC_PORTUGUESE_BRAZILIAN"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MISC_RUSSIAN"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MISC_ROMANIAN"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MISC_ALBANIAN"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MISC_SERBIAN"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MISC_SLOVAK"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MISC_SLOVENIAN"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MISC_FINNISH"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MISC_SWEDISH"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MISC_TURKISH"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MISC_VIETNAMESE"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MISC_UKRAINIAN"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MISC_TRADITIONAL_CHINESE"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MISC_CHINESE"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MISC_ARABIC"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MISC_HEBREW"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MISC_THAI"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MISC_HINDI"},{"enum_id":79,"string_id":"org.droidtv.ui.strings.R.string.MISC_BENGALI"},{"enum_id":80,"string_id":"org.droidtv.ui.strings.R.string.MISC_TELUGU"},{"enum_id":81,"string_id":"org.droidtv.ui.strings.R.string.MISC_MARATHI"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MISC_TAMIL"},{"enum_id":82,"string_id":"org.droidtv.ui.strings.R.string.MISC_ARMENIAN"},{"enum_id":84,"string_id":"org.droidtv.ui.strings.R.string.MISC_GEORGIAN"}]},"type":"LIST_NODE"},{"node_id":2131230822,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PRIMARY_AUDIO","context":"primary_audio","data":{"enums":[{"enum_id":44,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_LANGUAGE"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ALBANIAN_TRANSLATED"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ARABIC_TRANSLATED"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BAHASA_MELAYU_TRANSLATED"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BASQUE_TRANSLATED"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BULGARIAN_TRANSLATED"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CATALAN_TRANSLATED"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIMPLIFIED_CHINESE_TRANSLATED"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHINESE_TRANSLATED"},{"enum_id":61,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANDARIN_TRANSLATED"},{"enum_id":76,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANTONESE_TRANSLATED"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CROATIAN_TRANSLATED"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CZECH_TRANSLATED"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DANISH_TRANSLATED"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DUTCH_TRANSLATED"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENGLISH_TRANSLATED"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ESTONIAN_TRANSLATED"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FINNISH_TRANSLATED"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FRENCH_TRANSLATED"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAELIC_TRANSLATED"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HINDI_TRANSLATED"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIAN_TRANSLATED"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRISH_TRANSLATED"},{"enum_id":18,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GALLEGAN_TRANSLATED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GERMAN_TRANSLATED"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEK_TRANSLATED"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEBREW_TRANSLATED"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HUNGARIAN_TRANSLATED"},{"enum_id":46,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_AUDIO"},{"enum_id":59,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECOND_AUDIO"},{"enum_id":60,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THIRD_AUDIO"},{"enum_id":47,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTIPLE_LANGUAGES"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ITALIAN_TRANSLATED"},{"enum_id":57,"string_id":"org.droidtv.ui.strings.R.string.MAIN_JAPANESE_TRANSLATED"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_TRANSLATED"},{"enum_id":55,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KOREAN_TRANSLATED"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LATVIAN_TRANSLATED"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LITHUANIAN_TRANSLATED"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MACEDONIAN_TRANSLATED"},{"enum_id":54,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAORI_TRANSLATED"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORWEGIAN_TRANSLATED"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_POLISH_TRANSLATED"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGUESE_TRANSLATED"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ROMANIAN_TRANSLATED"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RUSSIAN_TRANSLATED"},{"enum_id":72,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMI_TRANSLATED"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVAK_TRANSLATED"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVENIAN_TRANSLATED"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SERBIAN_TRANSLATED"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPANISH_TRANSLATED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWEDISH_TRANSLATED"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TAMIL_TRANSLATED"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIETNAMESE_TRANSLATED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TURKISH_TRANSLATED"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UKRAINIAN_TRANSLATED"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THAI_TRANSLATED"},{"enum_id":24,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WELSH_TRANSLATED"}]},"type":"LIST_NODE"},{"node_id":2131230823,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECONDARY_AUDIO","context":"secondary_audio","data":{"enums":[{"enum_id":44,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_LANGUAGE"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ALBANIAN_TRANSLATED"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ARABIC_TRANSLATED"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BAHASA_MELAYU_TRANSLATED"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BASQUE_TRANSLATED"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BULGARIAN_TRANSLATED"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CATALAN_TRANSLATED"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIMPLIFIED_CHINESE_TRANSLATED"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHINESE_TRANSLATED"},{"enum_id":61,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANDARIN_TRANSLATED"},{"enum_id":76,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANTONESE_TRANSLATED"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CROATIAN_TRANSLATED"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CZECH_TRANSLATED"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DANISH_TRANSLATED"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DUTCH_TRANSLATED"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENGLISH_TRANSLATED"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ESTONIAN_TRANSLATED"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FINNISH_TRANSLATED"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FRENCH_TRANSLATED"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAELIC_TRANSLATED"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HINDI_TRANSLATED"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIAN_TRANSLATED"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRISH_TRANSLATED"},{"enum_id":18,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GALLEGAN_TRANSLATED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GERMAN_TRANSLATED"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEK_TRANSLATED"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEBREW_TRANSLATED"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HUNGARIAN_TRANSLATED"},{"enum_id":46,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_AUDIO"},{"enum_id":59,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECOND_AUDIO"},{"enum_id":60,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THIRD_AUDIO"},{"enum_id":47,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTIPLE_LANGUAGES"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ITALIAN_TRANSLATED"},{"enum_id":57,"string_id":"org.droidtv.ui.strings.R.string.MAIN_JAPANESE_TRANSLATED"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_TRANSLATED"},{"enum_id":55,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KOREAN_TRANSLATED"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LATVIAN_TRANSLATED"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LITHUANIAN_TRANSLATED"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MACEDONIAN_TRANSLATED"},{"enum_id":54,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAORI_TRANSLATED"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORWEGIAN_TRANSLATED"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_POLISH_TRANSLATED"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGUESE_TRANSLATED"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ROMANIAN_TRANSLATED"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RUSSIAN_TRANSLATED"},{"enum_id":72,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMI_TRANSLATED"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVAK_TRANSLATED"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVENIAN_TRANSLATED"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SERBIAN_TRANSLATED"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPANISH_TRANSLATED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWEDISH_TRANSLATED"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TAMIL_TRANSLATED"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIETNAMESE_TRANSLATED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TURKISH_TRANSLATED"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UKRAINIAN_TRANSLATED"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THAI_TRANSLATED"},{"enum_id":24,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WELSH_TRANSLATED"}]},"type":"LIST_NODE"},{"node_id":2131230824,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PRIMARY_SUBTITLES","context":"primary_subtitles","data":{"enums":[{"enum_id":44,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_LANGUAGE"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ALBANIAN_TRANSLATED"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ARABIC_TRANSLATED"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BAHASA_MELAYU_TRANSLATED"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BASQUE_TRANSLATED"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BULGARIAN_TRANSLATED"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CATALAN_TRANSLATED"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIMPLIFIED_CHINESE_TRANSLATED"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHINESE_TRANSLATED"},{"enum_id":61,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANDARIN_TRANSLATED"},{"enum_id":76,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANTONESE_TRANSLATED"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CROATIAN_TRANSLATED"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CZECH_TRANSLATED"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DANISH_TRANSLATED"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DUTCH_TRANSLATED"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENGLISH_TRANSLATED"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ESTONIAN_TRANSLATED"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FINNISH_TRANSLATED"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FRENCH_TRANSLATED"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAELIC_TRANSLATED"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HINDI_TRANSLATED"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIAN_TRANSLATED"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRISH_TRANSLATED"},{"enum_id":18,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GALLEGAN_TRANSLATED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GERMAN_TRANSLATED"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEK_TRANSLATED"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEBREW_TRANSLATED"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HUNGARIAN_TRANSLATED"},{"enum_id":46,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_AUDIO"},{"enum_id":59,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECOND_AUDIO"},{"enum_id":60,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THIRD_AUDIO"},{"enum_id":47,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTIPLE_LANGUAGES"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ITALIAN_TRANSLATED"},{"enum_id":57,"string_id":"org.droidtv.ui.strings.R.string.MAIN_JAPANESE_TRANSLATED"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_TRANSLATED"},{"enum_id":55,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KOREAN_TRANSLATED"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LATVIAN_TRANSLATED"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LITHUANIAN_TRANSLATED"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MACEDONIAN_TRANSLATED"},{"enum_id":54,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAORI_TRANSLATED"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORWEGIAN_TRANSLATED"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_POLISH_TRANSLATED"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGUESE_TRANSLATED"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ROMANIAN_TRANSLATED"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RUSSIAN_TRANSLATED"},{"enum_id":72,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMI_TRANSLATED"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVAK_TRANSLATED"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVENIAN_TRANSLATED"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SERBIAN_TRANSLATED"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPANISH_TRANSLATED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWEDISH_TRANSLATED"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TAMIL_TRANSLATED"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIETNAMESE_TRANSLATED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TURKISH_TRANSLATED"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UKRAINIAN_TRANSLATED"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THAI_TRANSLATED"},{"enum_id":24,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WELSH_TRANSLATED"}]},"type":"LIST_NODE"},{"node_id":2131230825,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECONDARY_SUBTITLES","context":"secondary_subtitles","data":{"enums":[{"enum_id":44,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_LANGUAGE"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ALBANIAN_TRANSLATED"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ARABIC_TRANSLATED"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BAHASA_MELAYU_TRANSLATED"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BASQUE_TRANSLATED"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BULGARIAN_TRANSLATED"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CATALAN_TRANSLATED"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIMPLIFIED_CHINESE_TRANSLATED"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHINESE_TRANSLATED"},{"enum_id":61,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANDARIN_TRANSLATED"},{"enum_id":76,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANTONESE_TRANSLATED"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CROATIAN_TRANSLATED"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CZECH_TRANSLATED"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DANISH_TRANSLATED"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DUTCH_TRANSLATED"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENGLISH_TRANSLATED"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ESTONIAN_TRANSLATED"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FINNISH_TRANSLATED"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FRENCH_TRANSLATED"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAELIC_TRANSLATED"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HINDI_TRANSLATED"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIAN_TRANSLATED"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRISH_TRANSLATED"},{"enum_id":18,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GALLEGAN_TRANSLATED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GERMAN_TRANSLATED"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEK_TRANSLATED"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEBREW_TRANSLATED"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HUNGARIAN_TRANSLATED"},{"enum_id":46,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_AUDIO"},{"enum_id":59,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECOND_AUDIO"},{"enum_id":60,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THIRD_AUDIO"},{"enum_id":47,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTIPLE_LANGUAGES"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ITALIAN_TRANSLATED"},{"enum_id":57,"string_id":"org.droidtv.ui.strings.R.string.MAIN_JAPANESE_TRANSLATED"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_TRANSLATED"},{"enum_id":55,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KOREAN_TRANSLATED"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LATVIAN_TRANSLATED"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LITHUANIAN_TRANSLATED"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MACEDONIAN_TRANSLATED"},{"enum_id":54,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAORI_TRANSLATED"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORWEGIAN_TRANSLATED"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_POLISH_TRANSLATED"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGUESE_TRANSLATED"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ROMANIAN_TRANSLATED"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RUSSIAN_TRANSLATED"},{"enum_id":72,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMI_TRANSLATED"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVAK_TRANSLATED"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVENIAN_TRANSLATED"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SERBIAN_TRANSLATED"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPANISH_TRANSLATED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWEDISH_TRANSLATED"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TAMIL_TRANSLATED"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIETNAMESE_TRANSLATED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TURKISH_TRANSLATED"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UKRAINIAN_TRANSLATED"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THAI_TRANSLATED"},{"enum_id":24,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WELSH_TRANSLATED"}]},"type":"LIST_NODE"},{"node_id":2131230826,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PRIMARY_TELETEXT","context":"primary_text","data":{"enums":[{"enum_id":44,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_LANGUAGE"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ALBANIAN_TRANSLATED"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ARABIC_TRANSLATED"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BAHASA_MELAYU_TRANSLATED"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BASQUE_TRANSLATED"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BULGARIAN_TRANSLATED"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CATALAN_TRANSLATED"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIMPLIFIED_CHINESE_TRANSLATED"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHINESE_TRANSLATED"},{"enum_id":61,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANDARIN_TRANSLATED"},{"enum_id":76,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANTONESE_TRANSLATED"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CROATIAN_TRANSLATED"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CZECH_TRANSLATED"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DANISH_TRANSLATED"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DUTCH_TRANSLATED"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENGLISH_TRANSLATED"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ESTONIAN_TRANSLATED"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FINNISH_TRANSLATED"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FRENCH_TRANSLATED"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAELIC_TRANSLATED"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HINDI_TRANSLATED"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIAN_TRANSLATED"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRISH_TRANSLATED"},{"enum_id":18,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GALLEGAN_TRANSLATED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GERMAN_TRANSLATED"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEK_TRANSLATED"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEBREW_TRANSLATED"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HUNGARIAN_TRANSLATED"},{"enum_id":46,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_AUDIO"},{"enum_id":59,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECOND_AUDIO"},{"enum_id":60,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THIRD_AUDIO"},{"enum_id":47,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTIPLE_LANGUAGES"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ITALIAN_TRANSLATED"},{"enum_id":57,"string_id":"org.droidtv.ui.strings.R.string.MAIN_JAPANESE_TRANSLATED"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_TRANSLATED"},{"enum_id":55,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KOREAN_TRANSLATED"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LATVIAN_TRANSLATED"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LITHUANIAN_TRANSLATED"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MACEDONIAN_TRANSLATED"},{"enum_id":54,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAORI_TRANSLATED"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORWEGIAN_TRANSLATED"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_POLISH_TRANSLATED"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGUESE_TRANSLATED"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ROMANIAN_TRANSLATED"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RUSSIAN_TRANSLATED"},{"enum_id":72,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMI_TRANSLATED"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVAK_TRANSLATED"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVENIAN_TRANSLATED"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SERBIAN_TRANSLATED"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPANISH_TRANSLATED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWEDISH_TRANSLATED"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TAMIL_TRANSLATED"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIETNAMESE_TRANSLATED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TURKISH_TRANSLATED"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UKRAINIAN_TRANSLATED"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THAI_TRANSLATED"},{"enum_id":24,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WELSH_TRANSLATED"}]},"type":"LIST_NODE"},{"node_id":2131230827,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECONDARY_TELETEXT","context":"secondary_text","data":{"enums":[{"enum_id":44,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_LANGUAGE"},{"enum_id":74,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ALBANIAN_TRANSLATED"},{"enum_id":28,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ARABIC_TRANSLATED"},{"enum_id":48,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BAHASA_MELAYU_TRANSLATED"},{"enum_id":11,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BASQUE_TRANSLATED"},{"enum_id":37,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BULGARIAN_TRANSLATED"},{"enum_id":12,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CATALAN_TRANSLATED"},{"enum_id":34,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SIMPLIFIED_CHINESE_TRANSLATED"},{"enum_id":49,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHINESE_TRANSLATED"},{"enum_id":61,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANDARIN_TRANSLATED"},{"enum_id":76,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANTONESE_TRANSLATED"},{"enum_id":13,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CROATIAN_TRANSLATED"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CZECH_TRANSLATED"},{"enum_id":14,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DANISH_TRANSLATED"},{"enum_id":15,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DUTCH_TRANSLATED"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ENGLISH_TRANSLATED"},{"enum_id":26,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ESTONIAN_TRANSLATED"},{"enum_id":16,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FINNISH_TRANSLATED"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_FRENCH_TRANSLATED"},{"enum_id":17,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GAELIC_TRANSLATED"},{"enum_id":58,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HINDI_TRANSLATED"},{"enum_id":50,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIAN_TRANSLATED"},{"enum_id":43,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRISH_TRANSLATED"},{"enum_id":18,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GALLEGAN_TRANSLATED"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GERMAN_TRANSLATED"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_GREEK_TRANSLATED"},{"enum_id":29,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEBREW_TRANSLATED"},{"enum_id":30,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HUNGARIAN_TRANSLATED"},{"enum_id":46,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ORIGINAL_AUDIO"},{"enum_id":59,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SECOND_AUDIO"},{"enum_id":60,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THIRD_AUDIO"},{"enum_id":47,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MULTIPLE_LANGUAGES"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ITALIAN_TRANSLATED"},{"enum_id":57,"string_id":"org.droidtv.ui.strings.R.string.MAIN_JAPANESE_TRANSLATED"},{"enum_id":41,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_TRANSLATED"},{"enum_id":55,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KOREAN_TRANSLATED"},{"enum_id":40,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LATVIAN_TRANSLATED"},{"enum_id":39,"string_id":"org.droidtv.ui.strings.R.string.MAIN_LITHUANIAN_TRANSLATED"},{"enum_id":52,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MACEDONIAN_TRANSLATED"},{"enum_id":54,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MAORI_TRANSLATED"},{"enum_id":19,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORWEGIAN_TRANSLATED"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_POLISH_TRANSLATED"},{"enum_id":20,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGUESE_TRANSLATED"},{"enum_id":25,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ROMANIAN_TRANSLATED"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RUSSIAN_TRANSLATED"},{"enum_id":72,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMI_TRANSLATED"},{"enum_id":22,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVAK_TRANSLATED"},{"enum_id":23,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLOVENIAN_TRANSLATED"},{"enum_id":21,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SERBIAN_TRANSLATED"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPANISH_TRANSLATED"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWEDISH_TRANSLATED"},{"enum_id":53,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TAMIL_TRANSLATED"},{"enum_id":51,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VIETNAMESE_TRANSLATED"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TURKISH_TRANSLATED"},{"enum_id":27,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UKRAINIAN_TRANSLATED"},{"enum_id":45,"string_id":"org.droidtv.ui.strings.R.string.MAIN_THAI_TRANSLATED"},{"enum_id":24,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WELSH_TRANSLATED"}]},"type":"LIST_NODE"}]}},{"node_id":2131230828,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CLOCK","context":"clock","data":{"nodes":[{"node_id":2131230829,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTO_CLOCK_MODE","context":"auto_clock_mode","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTOMATIC"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_COUNTRY_DEPENDENT"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MANUAL"}]},"type":"LIST_NODE"},{"node_id":2131230830,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_WESTERN"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAZAKH_EASTERN"}]},"type":"LIST_NODE"},{"node_id":2131230831,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PORTUGAL_MADEIRA"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AZORES"}]},"type":"LIST_NODE"},{"node_id":2131230832,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KALINGRAD"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MOSCOW"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SAMARA"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_YEKATERINBURG"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OMSK"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KRASNOYARSK"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_IRKUTSK"},{"enum_id":7,"string_id":"org.droidtv.ui.strings.R.string.MAIN_YAKUTSK"},{"enum_id":8,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VLADIVOSTOK"},{"enum_id":9,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SREDNEKOLYMSK"},{"enum_id":10,"string_id":"org.droidtv.ui.strings.R.string.MAIN_KAMCHATKA"}]},"type":"LIST_NODE"},{"node_id":2131230833,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPAIN_BALEARES"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CANARY_ISLANDS"}]},"type":"LIST_NODE"},{"node_id":2131230834,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_QUEENSLAND"},{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NEW_SOUTH_WALES"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_VICTORIA"},{"enum_id":5,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TASMANIA"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SOUTH_AUSTRALIA"},{"enum_id":6,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NORTHERN_TERRITORY"},{"enum_id":4,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WESTERN_AUSTRALIA"}]},"type":"LIST_NODE"},{"node_id":2131230835,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIA_WESTERN_TIME_ZONE"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIA_CENTRAL_TIME_ZONE"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_INDONESIA_EASTERN_TIME_ZONE"}]},"type":"LIST_NODE"},{"node_id":2131230836,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME_ZONE","context":"time_zone","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NZ_EXCEPT_CHATHAM_TIME_ZONE"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_CHATHAM_ISLANDS"}]},"type":"LIST_NODE"},{"node_id":2131230837,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DATE","context":"date","data":{},"type":"DATE_PICKER"},{"node_id":2131230838,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TIME","context":"time","data":{},"type":"TIME_PICKER"},{"node_id":2131230839,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SLEEPTIMER","context":"sleeptimer","data":{"slider_data":{"min":0,"max":180,"step_size":5}},"type":"SLIDER_NODE"}]}},{"node_id":2131230840,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RC_KEYBOARD","context":"rc_keyboard","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MISC_QWERTY"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MISC_AZERTY"}]},"type":"LIST_NODE"}]}},{"node_id":2131230754,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_GOOGLE_SETTINGS","context":"android_settings","data":{}},{"node_id":2131230755,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_UNIVERSAL_ACCESS","context":"accessibility","data":{"nodes":[{"node_id":2131230756,"string_id":"org.droidtv.ui.strings.R.string.MAIN_UNIVERSAL_ACCESS","context":"universal_access","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230757,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEARING_IMPAIRED","context":"hearing_impaired","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230758,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_AUDIO_DESCRIPTION","context":"audio_description_menu","data":{"nodes":[{"node_id":2131230759,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUDIO_DESCRIPTION","context":"audio_description","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230760,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPEAKERS_OR_HEADPHONES","context":"speakers_headphones","data":{"enums":[{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPEAKERS"},{"enum_id":2,"string_id":"org.droidtv.ui.strings.R.string.MAIN_HEADPHONE"},{"enum_id":3,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPEAKERS_HEADPHONE"}]},"type":"LIST_NODE"},{"node_id":2131230761,"string_id":"org.droidtv.ui.strings.R.string.MAIN_MIXED_VOLUME","context":"mixed_volume","data":{"slider_data":{"min":-32,"max":32,"step_size":1}},"type":"SLIDER_NODE"},{"node_id":2131230762,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SEAMLESS_MIXING","context":"audio_effects","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230763,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SPEECH_PREFERENCE","context":"speech","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PREFERENCE_DESCRIPTIVE"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PREFERENCE_SUBTITLES"}]},"type":"LIST_NODE"}]}},{"node_id":2131230764,"string_id":"org.droidtv.ui.strings.R.string.MAIN_DIALOGUE_ENHANCEMENT","context":"dialogue_enhancement","data":{"slider_data":{"min":0,"max":9,"step_size":1}},"type":"SLIDER_NODE"}]}},{"node_id":2131230808,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CHILD_LOCK","context":"child_lock","data":{"nodes":[{"node_id":2131230809,"string_id":"org.droidtv.ui.strings.R.string.MAIN_PARENTAL_RATING","context":"parental_rating","data":{"enums":[]},"type":"LIST_NODE"},{"node_id":2131230810,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PARENTAL_RATING_STREAMING_CHANNELS","context":"parental_rating","data":{}},{"node_id":2131230811,"string_id":"org.droidtv.ui.strings.R.string.MAIN_APP_LOCKING","context":"app_locking","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230812,"type":"PARENT_NODE","context":"change_code","data":{}},{"node_id":2131230813,"type":"PARENT_NODE","context":"CAM_change_code","data":{}}]}},{"node_id":2131230724,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_WIRELESS_AND_NETWORKS","context":"wireless_networks","data":{"nodes":[{"node_id":2131230725,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_WIRED_OR_WIFI","context":"network","data":{"nodes":[{"node_id":2131230726,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CONNECT_TO_NETWORK","context":"connect_to_network","data":{}},{"node_id":2131230727,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_VIEW_NETWORK_SETTINGS","context":"view_network_settings","data":{}},{"node_id":2131230728,"string_id":"org.droidtv.ui.strings.R.string.MAIN_NETWORK_MODE","context":"network_configuration","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MISC_DHCP"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_STATIC_IP"}]},"type":"LIST_NODE"},{"node_id":2131230729,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_IP_CONFIGURATION","context":"ip_configuration","data":{"nodes":[{"node_id":2131230730,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PANEL_IP_ADDRESS","context":"ip_address","data":{}},{"node_id":2131230731,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PANEL_NETMASK","context":"netmask","data":{}},{"node_id":2131230732,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PANEL_GATEWAY","context":"gateway","data":{}},{"node_id":2131230733,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PANEL_DNS_1","context":"dns_1","data":{}},{"node_id":2131230734,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PANEL_DNS_2","context":"dns_2","data":{}}]}},{"node_id":2131230735,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWITCH_ON_WITH_WIFI_WOWLAN","context":"switch_on_with_network","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230736,"string_id":"org.droidtv.ui.strings.R.string.MAIN_SWITCH_ON_WITH_CHROMECAST","context":"switch_on_with_network","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230737,"string_id":"org.droidtv.ui.strings.R.string.MAIN_RENDERER_ACCESS","context":"digital_media_renderer","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230738,"string_id":"org.droidtv.ui.strings.R.string.MAIN_WIFI_ON_OFF","context":"wifi_on_off","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230739,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_RECORDING_ON_THE_GO","context":"myremote_recording","data":{}},{"node_id":2131230740,"string_id":"org.droidtv.ui.strings.R.string.MAIN_TV_NAME","context":"tv_network_name","data":{},"type":"TEXT_ENTRY"},{"node_id":2131230741,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CLEAR_APPS_MEMORY","context":"clear_internet_memory","data":{}}]}},{"node_id":2131230742,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_BLUETOOTH","context":"bluetooth","data":{"nodes":[{"node_id":2131230743,"string_id":"org.droidtv.ui.strings.R.string.MAIN_BT_ON_OFF","context":"bluetooth_on_off","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230744,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_SEARCH_BT_DEVICE","context":"search_for_bt_devices","data":{}},{"node_id":2131230745,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_REMOVE_BT_DEVICE","context":"remove_bt_device","data":{}}]}},{"node_id":2131230746,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_REMOTE_CONTROL","context":"bt_remote_control","data":{"nodes":[{"node_id":2131230747,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PAIR_RC","context":"pair_remote_control","data":{}},{"node_id":2131230748,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CURRENT_SOFTWARE_INFO","context":"check_software_version","data":{}},{"node_id":2131230749,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CH_UPDATE_RC_SOFTWARE","context":"update_rc_software","data":{}}]}},{"node_id":2131230750,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CUBE_NAME","context":"cube_name","data":{"nodes":[{"node_id":2131230751,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_PAIR_CUBE_NAME","context":"pair_voice_cube","data":{}},{"node_id":2131230748,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CURRENT_SOFTWARE_INFO","context":"check_software_version","data":{}},{"node_id":2131230752,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_UPDATE_CUBE_NAME_SOFTWARE","context":"update_rc_software","data":{}}]}}]}},{"node_id":2131230801,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CHANNELS","context":"channels","data":{"nodes":[{"node_id":2131230802,"type":"PARENT_NODE","context":"channel_installation","data":{}},{"node_id":2131230803,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_SATELLITE_INSTALLATION","context":"satellite_installation","data":{}},{"node_id":2131230804,"type":"PARENT_NODE","context":"channel_list_copy","data":{"nodes":[{"node_id":2131230805,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_COPY_TO_USB","context":"channels_copy_to_usb","data":{}},{"node_id":2131230806,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_COPY_TO_TV","context":"channels_copy_to_tv","data":{}},{"node_id":2131230807,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CURRENT_VERSION","context":"channels_current_version","data":{}}]}}]}},{"node_id":2131230945,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_UPDATE_SOFTWARE","context":"update_software","data":{"nodes":[{"node_id":2131230946,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_SEARCH_FOR_UPDATES","context":"search_for_update","data":{"nodes":[{"node_id":2131230947,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_INTERNET_RECOMMENDED","context":"internet_updates","data":{}},{"node_id":2131230948,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_USB","context":"local_updates","data":{"nodes":[{"node_id":2131230949,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_LOCAL_UPDATES","context":"local_updates","data":{}},{"node_id":2131230950,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_IDENTIFY_TV","context":"local_updates","data":{}}]}},{"node_id":2131230951,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_LOOK_FOR_OAD_UPDATES","context":"look_for_oad_updates","data":{}}]}},{"node_id":2131230952,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_CURRENT_SOFTWARE_INFO","context":"current_software_info","data":{}},{"node_id":2131230953,"string_id":"org.droidtv.ui.strings.R.string.MAIN_AUTOMATIC_SOFTWARE_UPDATE","context":"automatic_update","data":{"enums":[{"enum_id":0,"string_id":"org.droidtv.ui.strings.R.string.MAIN_OFF"},{"enum_id":1,"string_id":"org.droidtv.ui.strings.R.string.MAIN_ON"}]},"type":"LIST_NODE"},{"node_id":2131230954,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_ANNOUNCEMENT","context":"announcement","data":{}},{"node_id":2131230955,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_VIEW_SOFTWARE_UPDATE_HISTORY","context":"view_software_update_history","data":{}}]}}]}}}
I figured
{"node_id":2131230816,"type":"PARENT_NODE","string_id":"org.droidtv.ui.strings.R.string.MAIN_MUTE_SCREEN","context":"screen_off","data":{}}
is what I was looking for.
A POST of {"nodes":[{"nodeid":2131230774}]} on https://ipaddress:1926/6/menuitems/settings/current returned:
{"values":[{"value":{"Nodeid":2131230816,"Controllable":"true","Available":"true","string_id":"Bild ausgeschaltet"}}]}
I tried I. E.
python pylips.py --command post --path menuitems/settings/update --body '{"values":[{"value":{"Nodeid":2131230816,"Controllable":"true","Available":"true","string_id":"Bild ausgeschaltet"}}]}'
and added
"screen_off": {
"path": "menuitems/settings/update",
"body": {
"values": [{
"value": {
"Nodeid": 2131230816,
"Controllable": "true",
"Available": "false",
"string_id": "Bild ausgeschaltet",
"data": {
}
}
}]
}
},
to the settings in order to try it that way. Everytime the TV returns {"response": "OK"} but nothing happens.
I must be missing something.
ambilight_color - Sets ambilight color. Requires a valid --body argument: {"hue": 360, "saturation": 100,
Can you check what is the body parameters for Saphi OS? This is one of the commands that don't work, because it have the wrong body. The method ambilight_color exists.
Many thanks for your work! I am currently using it for the IOT system ioBroker since there is a plugin which needs some enhancements and I guess your Python code is awesome and should be adopted.
See https://forum.iobroker.net/topic/8791/aufruf-philips-tv-v0-1-0-testen (in German).
I would wish to add some more examples for launching apps to the documentation. Finally, all does follow the same syntax and we just need to use "Activities current (GET)" to get the current application data and then change the template accordingly.
`Amazon Prime Video:
{"id":"com.amazon.amazonvideo.livingroom","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.amazon.amazonvideo.livingroom }","component":{"packageName":"com.amazon.amazonvideo.livingroom","className":"com.amazon.ignition.IgnitionActivity"}},"label":"Prime Video"}
Kodi
{"id":"org.xbmc.kodi","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=org.xbmc.kodi }","component":{"packageName":"org.xbmc.kodi","className":"org.xbmc.kodi.Splash"}},"label":"Kodi"}
Netflix
{"id":"com.netflix.ninja","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.netflix.ninja }","component":{"packageName":"com.netflix.ninja","className":"com.netflix.ninja.MainActivity"}},"label":"Netflix"}
YouTube
{"id":"com.google.android.apps.youtube.tv.activity.ShellActivity-com.google.android.youtube.tv","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.google.android.youtube.tv cmp=com.google.android.youtube.tv/com.google.android.apps.youtube.tv.activity.ShellActivity }","component":{"packageName":"com.google.android.youtube.tv","className":"com.google.android.apps.youtube.tv.activity.ShellActivity"}},"label":"YouTube"}`
I am trying to start netflix, youtube, kodi with pylips.
Sadly without luck.
Your examples doesnt also work for me.
I have tried to get the needed informations from this endpoint https://github.com/eslavnov/pylips/wiki/Applications-(GET)
but without luck on using it.
My TV has android pie on it, maybe thats the reason?
Here is the output of my applications:
{"version":2,"applications":[{"label":"Wie Sie...","intent":{"component":{"packageName":"org.droidtv.eum","className":"org.droidtv.eum.onehelp.HowToTutorials.HowToVideosActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.eum.onehelp.HowToTutorials.HowToVideosActivity-org.droidtv.eum","type":"app"},{"label":"Play Store","intent":{"component":{"packageName":"com.android.vending","className":"com.google.android.finsky.tvmainactivity.TvMainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.google.android.finsky.tvmainactivity.TvMainActivity-com.android.vending","type":"app"},{"label":"YouTube","intent":{"component":{"packageName":"com.google.android.youtube.tv","className":"com.google.android.apps.youtube.tv.activity.ShellActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.google.android.apps.youtube.tv.activity.ShellActivity-com.google.android.youtube.tv","type":"app"},{"label":"Prime Video","intent":{"component":{"packageName":"com.amazon.amazonvideo.livingroom","className":"com.amazon.ignition.IgnitionActivity"},"action":"empty"},"order":0,"id":"com.amazon.ignition.IgnitionActivity-com.amazon.amazonvideo.livingroom","type":"app"},{"label":"Play Musik","intent":{"component":{"packageName":"com.google.android.music","className":"com.google.android.music.tv.HomeActivity"},"action":"empty"},"order":0,"id":"com.google.android.music.tv.HomeActivity-com.google.android.music","type":"app"},{"label":"Play Spiele","intent":{"component":{"packageName":"com.google.android.play.games","className":"com.google.android.apps.play.games.app.atv.features.home.HomeActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.google.android.apps.play.games.app.atv.features.home.HomeActivity-com.google.android.play.games","type":"app"},{"label":"Play Filme & Serien","intent":{"component":{"packageName":"com.google.android.videos","className":"com.google.android.videos.tv.presenter.activity.TvLauncherActivity"},"action":"empty"},"order":0,"id":"com.google.android.videos.tv.presenter.activity.TvLauncherActivity-com.google.android.videos","type":"app"},{"label":"Netflix","intent":{"component":{"packageName":"com.netflix.ninja","className":"com.netflix.ninja.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.netflix.ninja.MainActivity-com.netflix.ninja","type":"app"},{"label":"Internet Browser","intent":{"component":{"packageName":"com.opera.sdk.example","className":"com.opera.sdk.example.OperaBrowserUiActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.opera.sdk.example.OperaBrowserUiActivity-com.opera.sdk.example","type":"app"},{"label":"Amazon Alexa","intent":{"component":{"packageName":"org.droidtv.amazonalexa","className":"org.droidtv.amazonalexa.wizard.AlexaWizardActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.amazonalexa.wizard.AlexaWizardActivity-org.droidtv.amazonalexa","type":"app"},{"label":"TV-Guide","intent":{"component":{"packageName":"org.droidtv.channels","className":"org.droidtv.channels.ChannelsActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.channels.ChannelsActivity-org.droidtv.channels","type":"app"},{"label":"Medien","intent":{"component":{"packageName":"org.droidtv.contentexplorer","className":"org.droidtv.contentexplorer.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.contentexplorer.MainActivity-org.droidtv.contentexplorer","type":"app"},{"label":"Demo-Menü","intent":{"component":{"packageName":"org.droidtv.demome","className":"org.droidtv.demome.DemoMeOptionsActivity"},"action":"empty"},"order":0,"id":"org.droidtv.demome.DemoMeOptionsActivity-org.droidtv.demome","type":"app"},{"label":"Sammlung von Philips TV","intent":{"component":{"packageName":"org.droidtv.nettv.market","className":"org.droidtv.nettv.market.MarketMainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.nettv.market.MarketMainActivity-org.droidtv.nettv.market","type":"app"},{"label":"Top Auswahl","intent":{"component":{"packageName":"org.droidtv.nettvrecommender","className":"org.droidtv.nettvrecommender.NetTvRecommenderMainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.nettvrecommender.NetTvRecommenderMainActivity-org.droidtv.nettvrecommender","type":"app"},{"label":"Fernsehen","intent":{"component":{"packageName":"org.droidtv.playtv","className":"org.droidtv.playtv.PlayTvActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.playtv.PlayTvActivity-org.droidtv.playtv","type":"app"},{"label":"Asphalt Nitro","intent":{"component":{"packageName":"com.gameloft.android.HEP.GloftANHP","className":"com.gameloft.android.HEP.GloftANHP.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.gameloft.android.HEP.GloftANHP.MainActivity-com.gameloft.android.HEP.GloftANHP","type":"game"},{"label":"ORF TVthek","intent":{"component":{"packageName":"com.nousguide.android.orftvthek","className":"com.nousguide.android.tvthek.fire.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.nousguide.android.tvthek.fire.MainActivity-com.nousguide.android.orftvthek","type":"app"},{"label":"ZDFmediathek","intent":{"component":{"packageName":"com.zdf.android.mediathek","className":"com.zdf.android.mediathek.ui.splash.SplashActivity"},"action":"empty"},"order":0,"id":"com.zdf.android.mediathek.ui.splash.SplashActivity-com.zdf.android.mediathek","type":"app"},{"label":"kabel eins Doku","intent":{"component":{"packageName":"de.prosiebensat1digital.kabeleinsdoku","className":"de.prosiebensat1digital.seventv.view.SplashScreenActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"de.prosiebensat1digital.seventv.view.SplashScreenActivity-de.prosiebensat1digital.kabeleinsdoku","type":"app"},{"label":"ProSieben MAXX","intent":{"component":{"packageName":"de.prosiebensat1digital.prosiebenmaxx","className":"de.prosiebensat1digital.seventv.view.SplashScreenActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"de.prosiebensat1digital.seventv.view.SplashScreenActivity-de.prosiebensat1digital.prosiebenmaxx","type":"app"},{"label":"ARTE","intent":{"component":{"packageName":"org.droidtv.nettvapp1814","className":"com.zeasn.app.linux.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.zeasn.app.linux.MainActivity-org.droidtv.nettvapp1814","type":"app"},{"label":"ARD Mediathek","intent":{"component":{"packageName":"org.droidtv.nettvapp3093","className":"com.zeasn.app.linux.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.zeasn.app.linux.MainActivity-org.droidtv.nettvapp3093","type":"app"},{"label":"Flimmit","intent":{"component":{"packageName":"org.droidtv.nettvapp4470","className":"com.zeasn.app.linux.MainActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"com.zeasn.app.linux.MainActivity-org.droidtv.nettvapp4470","type":"app"},{"label":"Flimmit","intent":{"component":{"packageName":"org.droidtv.nettvapp5194","className":"org.droidtv.nettvapplication.NetTVActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.nettvapplication.NetTVActivity-org.droidtv.nettvapp5194","type":"app"},{"label":"Kodi","intent":{"component":{"packageName":"org.xbmc.kodi","className":"org.xbmc.kodi.Splash"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.xbmc.kodi.Splash-org.xbmc.kodi","type":"app"},{"label":"Solid Explorer","intent":{"component":{"packageName":"pl.solidexplorer2","className":"pl.solidexplorer.SolidExplorer"},"action":"android.intent.action.MAIN"},"order":0,"id":"pl.solidexplorer.SolidExplorer-pl.solidexplorer2","type":"app"},{"label":"Emby","intent":{"component":{"packageName":"tv.emby.embyatv","className":"tv.emby.embyatv.startup.StartupActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"tv.emby.embyatv.startup.StartupActivity-tv.emby.embyatv","type":"app"},{"label":"Einstellungen","intent":{"component":{"packageName":"org.droidtv.settings","className":"org.droidtv.settings.setupmenu.SetupMenuActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.settings.setupmenu.SetupMenuActivity-org.droidtv.settings","type":"app"},{"label":"Sender installieren","intent":{"component":{"packageName":"org.droidtv.settings","className":"org.droidtv.settings.setupmenu.ChannelSettingActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.settings.setupmenu.ChannelSettingActivity-org.droidtv.settings","type":"app"},{"label":"Wie Sie...","intent":{"component":{"packageName":"org.droidtv.eum","className":"org.droidtv.eum.onehelp.menu.HowToLauncherActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.eum.onehelp.menu.HowToLauncherActivity-org.droidtv.eum","type":"app"},{"label":"Kabellos und Netzwerke","intent":{"component":{"packageName":"org.droidtv.settings","className":"org.droidtv.settings.setupmenu.WirelessAndNetworkSettingsActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.settings.setupmenu.WirelessAndNetworkSettingsActivity-org.droidtv.settings","type":"app"},{"label":"Apps verwalten","intent":{"component":{"packageName":"com.android.tv.settings","className":"com.android.tv.settings.device.apps.AppsActivity"},"action":"empty"},"order":0,"id":"com.android.tv.settings.device.apps.AppsActivity-com.android.tv.settings","type":"app"},{"label":"Hilfe","intent":{"component":{"packageName":"org.droidtv.eum","className":"org.droidtv.eum.onehelp.menu.OneHelpActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.eum.onehelp.menu.OneHelpActivity-org.droidtv.eum","type":"app"},{"label":"Software aktualisieren","intent":{"component":{"packageName":"org.droidtv.settings","className":"org.droidtv.settings.setupmenu.UpdateSWSettingsActivity"},"action":"android.intent.action.MAIN"},"order":0,"id":"org.droidtv.settings.setupmenu.UpdateSWSettingsActivity-org.droidtv.settings","type":"app"}]}
Thank you
On my philips I have an option to turn off the screen but keep the sound.
Used with audio applications like chromecast or spotify ...
Can this command be added? I did not find it in the api joint sapce: '(
Hi,
Initial communication has completed and has populated settings.ini however attempting to issue a command fails returning back a message that ‘The request requires authentication’.
I’ve also tried issuing the command while also adding the user and pass variables but with the same response back.
python3 ./pylips.py --command volume
Sending GET request to https://192.168.1.71:1926/6/audio/volume
Request sent!
Unauthorized
The request requires user authentication
You can get technical details here.
Please continue your visit at our home page.
Official Phillips app has the ability to set ambilight to "Follow Sound" and then pick a specific color to avoid the "rainbow effect".
I tried replicating this with custom commands without success, not even with CURL. Seems like the app does something different...
This is what I GET with this mode active:
GET /6/ambilight/currentconfiguration:
"styleName":"FOLLOW_AUDIO",
"isExpert":true,
"audioSettings":{
"color":{"hue":165,"saturation":251,"brightness":140},
"colorDelta":{"hue":0,"saturation":0,"brightness":140},
"tuning":2,"
algorithm":"ENERGY_ADAPTIVE_COLORS"}
Findings:
"algorithm": will show the name of the next algorithm on the list, and not the one currently active (weird). Trying to POST different algorithms will overlap the defined color for some reason
"color delta": seems to be an additional color you can pick and mix with the first color. Some algorithms will bounce back and forth between these 2, but it usually overlaps them together and creates a new color
"tuning": No matter what I POST here, it remains at 2 when I do a GET
I tried doing a MITM Proxy to understand what the app is POSTING to make the color stay put, but I'm stuck at app pairing. If I pair the app without the proxy, then it won't reach the TV once connected to the proxy again.
Having pylips include this command would be great, as I'm not really a fan of the "rainbow" approach.
I can't get the volume command to work over mqtt by using {{"command":"volume","body":{"value":10}}
Am I doing something wrong.
Describe the bug
Try to pair a Philips 55PUS7394-12 android-tv fails.
To Reproduce
Steps to reproduce the behavior:
paring faills with
´´´
Checking API version and port...
Trying http://ip.of.my.tv:1925/6/system
{'nettvversion': '8.2.0', 'serialnumber_encrypted': 'FF/uIq2oG7QNf1+D0dHzh4daNuM/nA7xfA9ACehFV4E=\n', 'name': '55PUS7394-12', 'country': 'Germany', 'menulanguage': 'German', 'featuring': {'jsonfeatures': {'applications': ['TV_Apps', 'TV_Games', 'TV_Settings'], 'mappings': ['server_mapping'], 'activities': ['intent'], 'ambilight': ['LoungeLight', 'Hue', 'Ambilight', 'HueStreaming'], 'recordings': ['List', 'Schedule', 'Manage'], 'inputkey': ['key'], 'editfavorites': ['TVChannels', 'SatChannels'], 'pointer': ['not_available'], 'menuitems': ['Setup_Menu'], 'channels': ['preset_string'], 'textentry': ['not_available']}, 'systemfeatures': {'tvsearch': 'intent', 'secured_transport': 'true', 'companion_screen': 'true', 'pairing_type': 'digest_auth_pairing', 'content': ['dmr', 'pvr'], 'tvtype': 'consumer'}}, 'epgsource': 'no_epg', 'softwareversion_encrypted': 'LgzCE7mnhZ//JRJPgUJIZaD3Y4/yKMxa8/dD/XnWAD74niOiUJUk8uK2/4K/ope6\n', 'notifyChange': 'http', 'os_type': 'MSAF_2019_P', 'api_version': {'Minor': 1, 'Major': 6, 'Patch': 0}, 'model_encrypted': 'E8Syb2W6Wwf9SIXSAJv6QNP7S7KRzTEYuNaUxz/5xkY=\n', 'deviceid_encrypted': '1+X/37SGxu+oXD+k5fy6jSncMGK65aAkWs/SOss/ExY=\n'}
No valid credentials found, starting pairing process...
Sending pairing request
{'scope': ['read', 'write', 'control'], 'device': {'type': 'native', 'device_os': 'Android', 'device_name': 'heliotrope', 'id': 'xMIp8wZyp7hkmirx', 'app_name': 'Pylips', 'app_id': 'app.id'}}
https://ip.of.my.tv:1926/6/pair/request
...
Traceback (most recent call last): File "pylips.py", line 453, in pylips = Pylips(os.path.dirname(os.path.realpath(file))+"/settings.ini") File "pylips.py", line 76, in init self.pair() File "pylips.py", line 186, in pair self.pair_request(data) File "pylips.py", line 193, in pair_request r = requests.post("https://" + str(self.config["TV"]["host"]) + ":1926/"+str(self.config["TV"]["apiv"]�)+"/pair/request", json=data, verify=False, timeout=2) File "/home/pi/.local/lib/python3.5/site-packages/requests/api.py", line 110, in post return request('post', url, data=data, json=json, **kwargs) File "/home/pi/.local/lib/python3.5/site-packages/requests/api.py", line 56, in request return session.request(method=method, url=url, **kwargs) File "/home/pi/.local/lib/python3.5/site-packages/requests/sessions.py", line 488, in request resp = self.send(prep, **send_kwargs) File "/home/pi/.local/lib/python3.5/site-packages/requests/sessions.py", line 609, in send r = adapter.send(request, **kwargs) File "/home/pi/.local/lib/python3.5/site-packages/requests/adapters.py", line 499, in send raise ReadTimeout(e, request=request)requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='ip.of.my.tv', port=1926): Read timed out. (�read timeout=2)
´´´
40PFT6550/12 stops responding to commands from pylips after a certain point. If the MQTT_update setting is on, it stops fairly quickly and on its own with no input necessary, but if it's disabled, it stops after a number of commands has been sent out and successfully received. The TV starts listening to commands again after it has been put on standby then woken up again.
As the official remote app works fine with any number of commands sent out and any length of time, this seems to be an issue in how the two connect and interact. I initially suspected that there was a missing protocol feature, like a reauthentification, rehandshaking or re-something after a number of commands, but it looks like Home Assistant users are on to something:
https://community.home-assistant.io/t/philips-android-tv-component/17749/14
h0bb3
I got this working on my 55pus727212, i.e. got the pairing code and could then use the component in home assistant (change volume worked fine).However, after maybe 5-10 volume adjustment tests, it suddenly stopped working and I have not been able to pair it any more (i.e. nothing happens when doing this). Tried restarting the TV etc, but nothing. Any ideas?
https://community.home-assistant.io/t/philips-android-tv-component/17749/15
martijnv
I experienced the same problem, after a minute or 10 the component stopped working because the television stopped responding to the requests. I ran some tests and found that after exactly 100 requests the REST API stopped working. I dug a little deeper with Wireshark and discovered that the problem was caused by the SSL-handshake. At request 101 the client send its SSL “client hello”, but the server did not give a “server hello” back anymore. My guess is that the webserver in the television caches SSL connections in an array of max 100 items.I’m creating a new version that reuses the SSL connection. The test version that I’m running now appears to be stable this way. I’ve also added channel information, a volume slider en rewind/pause/forward functions. It’s almost done and I will share it very soon.
Sure enough, the following lines of the Home Assistant Philips TV component code say the following:
The XTV app appears to have a bug that limits the nummber of SSL session to 100
The code below forces the control to keep re-using a single connection
After martijnv's post, the issue no longer seems to crop up in the HA component thread so it's safe to assume that the issue is fixed by the solution.
Is this feasible to implement in pylips for us stubborn MQTT and Node-RED users? Thanks in advance!
Describe the bug
When running in mqtt mode, the program never goes to the update loop, eventhough mqtt_update is set to true
To Reproduce
Steps to reproduce the behavior:
Expected behavior
To update the mqtt broker and display verbose info regarding this
Screenshots
Additional context
It seems like
Line 361 in 04ba4bc
Hi eslavnov,
I am trying to use your code to include in my home automation.
I have all the basic commands working, however, I can't seem to follow your instruction for launching apps.
In particular, I am trying Netflix to start with. Your example code for YouTube works perfectly, however, I can't seem to replicate it when I substitute the package and class name for Netflix that I retrieved using the API call.
{"component":{"packageName":"com.netflix.ninja","className":"com.netflix.ninja.MainActivity"}}
Are you able to explain this further for me?
Hi,
I've been using your wiki as a reference for creating an app that allows a Homey to control Philips TV's. It's been a great help and I might be able to shed some light on a few more features, but that's not what this is about.
In your readme you state that the main difference between regular Philips TV's and Philips Android TV's is the different port which they use. That seemed pretty clear and straightforward, but I've ran into some issues with the Jointspace api since.
Currently I've got a user of my app who has a 2016 Philips Android TV which doesn't listen on port 1926 at all. It does however require digest authentication and the use of https for private endpoints via port 1925.
My own Philips Android TV is from 2018 and listens on both port 1925 and 1926. But in my case only the public endpoints such as /6/system
and /6/notifychange
are accessible via de 1925 port (both http and https work on this port which feels a bit strange). Sending a pair request to my TV requires the use of port 1926 and confirming the pair request also needs to done on port 1926.
My question; do you know of a way to determine which of these ports should be used to fetch the public /6/system
endpoint and which port should be used for confirming the pairing process and accessing private endpoints?
Hello and many thanks for the tool.
I have discovered that it is also possible to call up the standard Lounge Light scenes via :
192.168.XXX.XX:1925/6/ambilight/currentconfiguration
Maybe you would like to record them as well?
Here are the bodies for it:
{
"styleName": "FOLLOW_COLOR",
"isExpert": false,
"menuSetting": "HOT_LAVA",
"stringValue": "Hot Lava"
}
{
"styleName": "FOLLOW_COLOR",
"isExpert": false,
"menuSetting": "ISF",
"stringValue": "Warm White"
}
{
"styleName": "FOLLOW_COLOR",
"isExpert": false,
"menuSetting": "PTA_LOUNGE",
"stringValue": "Cool White"
}
{
"styleName": "FOLLOW_COLOR",
"isExpert": false,
"menuSetting": "FRESH_NATURE",
"stringValue": "Fresh Nature"
}
{
"styleName": "FOLLOW_COLOR",
"isExpert": false,
"menuSetting": "DEEP_WATER",
"stringValue": "Deep Water"
}
Best Regards
Nastras
First, I'd like to thank you for this! Beautiful! 👍
I have a 49PUS8303 and I'm available for testing any new feature 😄
Looking forward to MQTT integration also - definitely big progress for home automation...
Hello
I have a SSL handshake time out that occurs very often. The only way I found to bypass is to restart the Android OS of the TV, but after a while it appears again, here is the log:
https://192.168.1.27:1926/6/pair/request
Traceback (most recent call last):
File "C:\Python35\lib\site-packages\urllib3\connectionpool.py", line 344, in _make_request
self._validate_conn(conn)
File "C:\Python35\lib\site-packages\urllib3\connectionpool.py", line 843, in validate_conn
conn.connect()
File "C:\Python35\lib\site-packages\urllib3\connection.py", line 370, in connect
ssl_context=context)
File "C:\Python35\lib\site-packages\urllib3\util\ssl.py", line 368, in ssl_wrap_socket
return context.wrap_socket(sock)
File "C:\Python35\lib\ssl.py", line 376, in wrap_socket
_context=self)
File "C:\Python35\lib\ssl.py", line 747, in init
self.do_handshake()
File "C:\Python35\lib\ssl.py", line 983, in do_handshake
self._sslobj.do_handshake()
File "C:\Python35\lib\ssl.py", line 628, in do_handshake
self._sslobj.do_handshake()
socket.timeout: _ssl.c:629: The handshake operation timed out
Do you know why and how to correct it ?
PS: I have the last firmware on the TV
Describe the bug
pylips with correct set apiv (6) is slow compared to bare metal curl.
See results meassured with time:
time curl -X POST --digest --insecure -v -u USER:PW -d '{"key":"VolumeUp"}' https://192.168.0.XXX:1926/6/input/key
Result:
real 0m0.278s
user 0m0.132s
sys 0m0.030s
and here pylips witzh teh same request:
time python3 pylips.py --command volume_up
Sending POST request to https://192.168.0.7:1926/6/input/key
Request sent!
{"response": "OK"}
real 0m1.082s
user 0m0.903s
sys 0m0.056s
To Reproduce
see above
Expected behavior
pylips is as fast as curl
Additional context
Maybe pathon3 is the overhead here?
Is there anything i can try to debug the issue?
Some Android TVs appear to support text input via the Jointspace api.
I'm not a 100% sure about this but the system response seems to suggest it:
{
"featuring": {
"jsonfeatures": {
"textentry": [
"context_based",
"initial_string_available",
"editor_info_available"
]
}
}
}
If you look at for example how the recordings feature is returned in the jsonfeatures object:
{
"featuring": {
"jsonfeatures": {
"recordings": [
"List",
"Schedule",
"Manage"
]
}
}
}
This references that the recordings
feature has a List
endpoint. And the recordings
feature does indeed have a /recordings/list
endpoint.
If the textentry
feature follows the same logic this should be available at /textentry
or something like /textentry/context_based
or /textentry/editor_info_available
. However I haven't been able to figure out which endpoints this feature uses or when its available, most likely only when an input field is selected.
As far as I know the Philips Remote App doesn't offer any text input options, even though my tv appears to support it, so its a tricky one to reverse engineer.
Any thoughts?
Describe the bug
Might be a new user error, when I try the example code to launch netflix, amazon prime etc I can't.
This is the message I get back when using it.
Traceback (most recent call last):
File "pylips.py", line 453, in
pylips = Pylips(os.path.dirname(os.path.realpath(file))+"/settings.ini")
File "pylips.py", line 109, in init
self.run_command(args.command,body, self.verbose)
File "pylips.py", line 311, in run_command
return self.post(self.available_commands["post"][command]["path"], body,verbose, callback)
File "pylips.py", line 265, in post
body = json.loads(body)
File "C:\Python34\lib\json_init_.py", line 318, in loads
return _default_decoder.decode(s)
File "C:\Python34\lib\json\decoder.py", line 343, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python34\lib\json\decoder.py", line 361, in raw_decode
raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)
To Reproduce
Use this in CMD:
python pylips.py --command launch_app --body '{"id":"com.amazon.amazonvideo.livingroom","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.amazon.amazonvideo.livingroom }","component":{"packageName":"com.amazon.amazonvideo.livingroom","className":"com.amazon.ignition.IgnitionActivity"}},"label":"Prime Video"}'
Expected behavior
Opens Amazon Prime
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Probably a new user error.
Is your feature request related to a problem? Please describe.
i have two Philips Android TVs and want to monitor them from my Docker Container
https://github.com/b2un0/pylips/blob/master/Dockerfile
but i can't define a absolute path of the settings.ini
, so i must mount them from outside.
Describe the solution you'd like
an new argument to define a path of the settings.ini
Describe alternatives you've considered
mount the settings.ini
file absolute like the following is not an option for me:
docker run -d \
--name pylips-70PUS7304 \
--restart=unless-stopped \
-v ~/pylips_70PUS7304.ini:/opt/pylips/settings.ini \
b2un0/pylips:latest
Additional context
i wish i could something like this where pylips_data
is an named docker volume which contained the following files:
$ pwd
/var/lib/docker/volumes/pylips_data
$ tree
└── _data
├── 55PUS6551.ini
└── 70PUS7304.ini
1 directory, 2 files
and i can run both container with the same volume:
docker run -d \
--name pylips-70PUS7304 \
--restart=unless-stopped \
-v pylips_data:/mnt/pylips_data/ \
--entrypoint "python /opt/pylips/pylips.py --ini /mnt/pylips_data/70PUS7304.ini" \
b2un0/pylips:latest
docker run -d \
--name pylips-55PUS6551 \
--restart=unless-stopped \
-v pylips_data:/mnt/pylips_data/ \
--entrypoint "python /opt/pylips/pylips.py --ini /mnt/pylips_data/55PUS6551.ini" \
b2un0/pylips:latest
We can control the TV, we can power off the TV but afaik no option today to power the TV on.
Goal here is to find out a way to power on the TV from the network. Here's my summary:
Discovered open port 49153/tcp on 192.168.178.94 << Linux2.6/0.0 UPnP/1.0 PhilipsIntelSDK/1.4 DLNADOC/1.50
Discovered open port 8443/tcp on 192.168.178.94 << HTTPS service, curl request returns empty reply, cert: issuer: C=US; ST=Washington; L=Kirkland; O=Google Inc; OU=Widevine; CN=TPVision TV PH9M_EA_5599 Mediatek MT5599 Cast ICA
Discovered open port 9000/tcp on 192.168.178.94 << unknown
Discovered open port 8009/tcp on 192.168.178.94 << HTTPS service (self signed certificate)
Discovered open port 8008/tcp on 192.168.178.94 << HTTP service, returns 404
so we have different options here to power the TV on:
someone knows more about those ports?
A user reports that running Pylips pairing process outside of the Pylips folder on Windows results in the credentials not being saved in the config file.
To-do:
Hi ,
It is supported Philips 49PUS7150 (late 2015) Android TV 5.1?
Because python not running.
ntb@ntb:~/Plocha/pylips-master$ python pylips.py
File "pylips.py", line 42
return print("Config file", ini_file, "not found")
^
SyntaxError: invalid syntax
Describe the bug
Pylips does not listen to MQTT packages because it exits right after the user invoked the script.
To Reproduce
Configure MQTT support:
[DEFAULT]
mqtt_listen = True
mqtt_update = False
[...]
[MQTT]
topic_pylips = pylips
topic_status = pylibs_status
python3.7 pylips.py
Expected behavior
Have pylips running in the foreground (or even better background) listening to mqtt packages and running the commands.
Screenshots
n/a
Additional context
n/a
Describe the bug
I am seeing the error below when I try to run a pylips command
File "pylips.py", line 48 return print('Error', r.json())
I notice that that in line 44 there is a request to an ip address (172.168.201.11) that is not responding. Shouldn't this be the ip address of your TV instead?
To Reproduce
Steps to reproduce the behavior:
run the following command:
python pylips.py --host <ip address> --user <user code> --pass <pass code> --command powerstate
Expected behavior
JSON reflecting the result of the powerstate command
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.