kdschlosser / samsungctl

Remote control Samsung televisions via a TCP/IP connection
MIT License
148 stars 34 forks source link

getting appdata TypeError: string indices must be integers #25

Open xxKeoxx opened 5 years ago

xxKeoxx commented 5 years ago

I was trying to pull back data for my apps and I kept getting:

Traceback (most recent call last):
  File "./samsung-test.py", line 17, in <module>
    for app in remote.applications:
  File "/usr/lib/python2.7/site-packages/samsungctl-0.8.0b-py2.7.egg/samsungctl/remote_websocket.py", line 227, in applications
    if app_1['appId'] == app_2['appId']:
TypeError: string indices must be integers

So I updated the code to resolve that issue:

for app_1 in app_data[1]['data']:
            for app_2 in app_data[0]:
                if str(app_1['appId']) == str(app_2['appId']):
                    app_1.update(app_2)

        res = []
        for app in app_data[1]:
            res += [application.Application(self, **app)]

but now I am getting this error:

Traceback (most recent call last):
  File "./samsung-test.py", line 17, in <module>
    for app in remote.applications:
  File "/usr/lib/python2.7/site-packages/samsungctl-0.8.0b-py2.7.egg/samsungctl/remote_websocket.py", line 232, in applications
    res += [application.Application(self, **app)]
TypeError: type object argument after ** must be a mapping, not unicode

NOTE: The line number is wrong in my error message because I added so many print statements to troubleshoot this.

I will admit that I am a bit of a hack when it comes to code, so I am not sure what the last error means or how to correct it. Any advice?

kdschlosser commented 5 years ago

the error doesn't make any sense.

        for app_1 in app_data[1]:
            for app_2 in app_data[0]:
                if app_1['appId'] == app_2['appId']:
                    app_1.update(app_2)

        res = []
        for app in app_data[1]:
            res += [application.Application(self, **app)]

look at thee code.. the objects in app_data[0] and app_data[1] are dicts

you can see that here

if app_1['appId'] == app_2['appId']:

why it is stating it's unicode is beyond me, It should have thrown an error when accessing the data in the line above. but it didn't

I bet the problem is not where this code is. it is further upstream.

kdschlosser commented 5 years ago

do me a favor. add this right after you import samsungctl

samsungctl.logger.setLevel(samsungctl.logging.DEBUG)

That should enable debug logging

then run your script again. paste the output here..

when you paste the code place this ```python on the line before

and ``` on the line after

those are 3 back ticks key right above the tab key on a 101 US enhanced keyboard.

kdschlosser commented 5 years ago

ok so here use this branch. I did a wee bit of an overhaul on the logging system

https://github.com/kdschlosser/samsungctl/tree/updates_logging

example code to enable debugging

import samsungctl

config = {
    "name": "samsungctl",
    "description": "PC",
    "id": "",
    "host": "192.168.0.10",
    "port": 55000,
    "method": "legacy",
    "timeout": 0,
}

with samsungctl.Remote(config, samsungctl.LOG_LEVEL_DEBUG) as remote:
        remote.control("KEY_MENU")

I made some function decorators that will log all function calls with arguments keywords and values passed. as well as returned data if any.

kdschlosser commented 5 years ago

you will get a better appreciation of exactly what I have been adding and the complexity of it once you see the debugging data come flying by.

xxKeoxx commented 5 years ago

the error doesn't make any sense.

Crap dude. It was late and I noticed I didn't paste the correct error before I modified the code. I have updated the original post with correct error. The original error was TypeError: string indices must be integers

NOTE: I have not tried your suggestion yet, I will try that tonight after work.

I did print the json data that was being returned and it looked like the structure of the json returned was one dict level deeper. ( sorry if the wording is wrong )

It looked like all of the information needed was found here app_data[1]['data'] not here app_data[1]. This app_data[1] only returned the key "data". After changing the code to app_data[1]['data'] the unicode error started, but I was returning all of the information I would have expected to see.

I'll run the script with the extra logging and see if I can get a resolution tonight. Thanks for your help.

I also read in another post that you were getting a bit overwhelmed with the number of issues posted. Please allow me to look into this and I'll send a pull request when I get it working. I know enough python to understand what you are doing, and have a very good understanding of json.

kdschlosser commented 5 years ago

@xxKeoxx

the issue is going to be in the returned data. I could be parsing or grabbing the information from the wrong place.

if you are going to add print statements. be sure to wrap the value you are printing with repr() this is because the TV will send a JSON object and in that JSON object will be string of other JSON objects that need to be converted into a python dict. and the only way you will be able to tell that it needs to be converted is if you wrap it in repr() then it will show all of the escaped characters. otherwise it will look like a dict unless you can locate a None or a Boolean value. in a JSON string these will be all lowercase.

xxKeoxx commented 5 years ago

Changes have been submitted for a pull request. Once they are approved this issue should be resolved.

kdschlosser commented 5 years ago

I do not think what you gave for a PR is going to fix the issue.

reason why is I set up the containers that hold the application data as a list. and it is a list that get sent back from the TV. by placing the ['data'] where you did is trying to access a list as a dictionary. I need to see the exact data that gets returned by the TV so we know what thee structure looks like exactly.

xxKeoxx commented 5 years ago

I do not think what you gave for a PR is going to fix the issue.

reason why is I set up the containers that hold the application data as a list. and it is a list that get sent back from the TV. by placing the ['data'] where you did is trying to access a list as a dictionary. I need to see the exact data that gets returned by the TV so we know what thee structure looks like exactly.

When I ran the script it pulled back and reported the information I expected to see. Here is the data before the change. In order for the loop to work I had to start the loop with data under the "data" key so it new where to get the "data".

Here is what it returns:

    "data": [
        {
            "appId": "3201512006963", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201512006963/250x250.png", 
            "name": "Plex"
        }, 
        {
            "appId": "111012010001", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/111012010001/250x250.png", 
            "name": "VUDU"
        }, 
        {
            "appId": "111299001912", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/111299001912/250x250.png", 
            "name": "YouTube"
        }, 
        {
            "appId": "111199000417", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/111199000417/250x250.png", 
            "name": "HBO GO"
        }, 
        {
            "appId": "3201608010239", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201608010239/250x250.png", 
            "name": "TV Plus"
        }, 
        {
            "appId": "11101200001", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/11101200001/250x250.png", 
            "name": "Netflix"
        }, 
        {
            "appId": "3201606009872", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201606009872/250x250.png", 
            "name": "Emby"
        }, 
        {
            "appId": "3201601007625", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201601007625/250x250.png", 
            "name": "Hulu"
        }, 
        {
            "appId": "111399000031", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/111399000031/250x250.png", 
            "name": "FandangoNOW"
        }, 
        {
            "appId": "20162100005", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/20162100005/250x250.png", 
            "name": "e-Manual"
        }, 
        {
            "appId": "org.tizen.browser", 
            "app_type": 4, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/webbrowser/250x250.png", 
            "name": "Web Browser"
        }, 
        {
            "appId": "3201601007250", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201601007250/250x250.png", 
            "name": "Google Play Movies \uff06 TV"
        }, 
        {
            "appId": "11091000000", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/11091000000/250x250.png", 
            "name": "Facebook Watch"
        }, 
        {
            "appId": "3201512006785", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201512006785/250x250.png", 
            "name": "Amazon Video"
        }, 
        {
            "appId": "11101000410", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/11101000410/250x250.png", 
            "name": "Vimeo"
        }, 
        {
            "appId": "3201504002064", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201504002064/250x250.png", 
            "name": "GameFly Streaming"
        }, 
        {
            "appId": "3201606009840", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201606009840/250x250.png", 
            "name": "NBC"
        }, 
        {
            "appId": "3201611010963", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201611010963/250x250.png", 
            "name": "SHOWTIME"
        }, 
        {
            "appId": "3201608010450", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201608010450/250x250.png", 
            "name": "HGTV"
        }, 
        {
            "appId": "3201704012161", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201704012161/250x250.png", 
            "name": "CNNgo"
        }, 
        {
            "appId": "3201707014448", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201707014448/250x250.png", 
            "name": "Sling TV"
        }, 
        {
            "appId": "3201502001363", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201502001363/250x250.png", 
            "name": "iHeartRadio"
        }, 
        {
            "appId": "3201707014489", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201707014489/250x250.png", 
            "name": "YouTube TV"
        }, 
        {
            "appId": "3201708014637", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201708014637/250x250.png", 
            "name": "Freeform"
        }, 
        {
            "appId": "3201710014981", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201710014981/250x250.png", 
            "name": "CBS All Access"
        }, 
        {
            "appId": "3201711015155", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201711015155/250x250.png", 
            "name": "CBS News: Live Breaking News"
        }, 
        {
            "appId": "3201710014874", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201710014874/250x250.png", 
            "name": "Amazon Music"
        }, 
        {
            "appId": "3201608010313", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201608010313/250x250.png", 
            "name": "Food Network"
        }, 
        {
            "appId": "3201608010451", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201608010451/250x250.png", 
            "name": "Travel Channel"
        }, 
        {
            "appId": "3201506003227", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201506003227/250x250.png", 
            "name": "STARZ"
        }, 
        {
            "appId": "111199000333", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/111199000333/250x250.png", 
            "name": "UFC.TV"
        }, 
        {
            "appId": "3201608010191", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201608010191/250x250.png", 
            "name": "Deezer"
        }, 
        {
            "appId": "3201709014781", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201709014781/250x250.png", 
            "name": "Pantaya"
        }, 
        {
            "appId": "11091300004", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/11091300004/250x250.png", 
            "name": "Pandora"
        }, 
        {
            "appId": "3201702011851", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201702011851/250x250.png", 
            "name": "Steam Link"
        }, 
        {
            "appId": "121299000101", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/121299000101/250x250.png", 
            "name": "TuneIn"
        }, 
        {
            "appId": "3201801015541", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201801015541/250x250.png", 
            "name": "Discovery GO"
        }, 
        {
            "appId": "3201605009473", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201605009473/250x250.png", 
            "name": "NBC Sports"
        }, 
        {
            "appId": "3201608010240", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201608010240/250x250.png", 
            "name": "NFL SUNDAY TICKET"
        }, 
        {
            "appId": "3201806016508", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201806016508/250x250.png", 
            "name": "ABC"
        }, 
        {
            "appId": "3201806016390", 
            "app_type": 2, 
            "icon": "/opt/down/webappservice/apps_icon/FirstScreen/3201806016390/250x250.png", 
            "name": "DAZN"
        }
    ]
}
kdschlosser commented 5 years ago

that is not what the TV returns. that is what have been processed by the json library.

I need to see the RAW message. before it has been processed by anything. I need to see the whole thing. including any keys that are on the same level of the dictionary as 'data'

every response/event from the TV's have a key 'event' what you gave as returned data is not complete. copy and paste it into a python script and run it. it will fail. it is missing punctuation.

xxKeoxx commented 5 years ago

that is not what the TV returns. that is what have been processed by the json library.

I hope this is what you are looking for. If not, I guess I can't find the variable I need to print out.

{u'from': u'host', u'data': {u'data': [{u'name': u'VUDU', u'appType': u'web_app', u'appId': u'111012010001', u'accelerators': [{u'appDatas': [{u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Venom', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"928296"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559862, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559862'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Night School - Extended Cut', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1020566"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559863, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559863'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'A Simple Favor', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"996684"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559864, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559864'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The House With a Clock in Its Walls', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"941231"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559865, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559865'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Predator', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"955139"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559866, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559866'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'White Boy Rick', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"989452"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559867, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559867'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Incredibles 2', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"913461"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559868, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559868'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Bao', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1026696"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559869, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559869'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Smallfoot', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"913449"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559870, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559870'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Sgt. Stubby: An American Hero', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1015835"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559871, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559871'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Peppermint', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"967745"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559872, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559872'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Mission: Impossible Fallout', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"928404"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559873, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559873'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Equalizer 2', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"966225"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559874, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559874'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Along With the Gods: The Last 49 Days', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1015881"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559875, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559875'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Predator 4-Film Collection (Bundle)', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1010563"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559876, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559876'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Home Alone', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"7713"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559877, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559877'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Original Christmas Classics (Bundle)', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"829222"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559878, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559878'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Elf', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"42157"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559879, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559879'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'A Boy. A Girl. A Dream.', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"989005"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559880, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559880'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Nun', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"989436"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559881, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559881'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Mission: Impossible - 6 Movie Collection (Bundle)', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"965735"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559882, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559882'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Ant-Man and the Wasp', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"926890"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559883, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559883'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Leprechaun Returns', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"997941"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559884, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559884'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Night School', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"943490"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559885, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559885'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Santa Clause', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"13316"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559886, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559886'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Happytime Murders', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"967748"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559887, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559887'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u"National Lampoon's Christmas Vacation", u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"9092"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559888, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559888'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Hal', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1000351"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559889, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559889'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Kin', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"1001921"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559890, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559890'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'BlacKkKlansman', u'liveLauncherType': u'', u'action_play_url': u'{"contentId":"955145"}', u'serviceId': u'', u'action_type': u'APP_LAUNCH', u'appId': u'kk8MbItQ0H.VUDU', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559891, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/kk8MbItQ0H/1559891'}], u'title': None}], u'position': 0, u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/111012010001/167x94.png'}, {u'name': u'Amazon Video', u'appType': u'web_app', u'appId': u'3201512006785', u'accelerators': [{u'appDatas': [{u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Big Trouble In Little China', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#movie/B009EEQHVE ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559675, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559675'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Dodgeball: A True Underdog Story Unrated', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#movie/B00A8OVFF2 ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559676, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559676'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Clip: Paw Patrol On a Roll - Game Playthrough', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#season/B07K7YKMKG ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559677, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559677'}], u'title': u'Watch Next'}, {u'appDatas': [{u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Die Hard', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#movie/B009EEQO08 ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559679, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559678'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u"Marvel's Avengers: Infinity War (4K UHD)", u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#movie/B07FYXNDGN ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559680, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559679'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Ant-Man and the Wasp (4K UHD)', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#movie/B07HNJZ8QG ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559681, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559680'}], u'title': u'Recommended Movies'}, {u'appDatas': [{u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Marvelous Mrs. Maisel - Season 2', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#season/B07G9PHJJH ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559683, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559681'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Homecoming - Season 1', u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#season/B07FP11SZN ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559684, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559682'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': u"Tom Clancy's Jack Ryan - Season 1", u'liveLauncherType': u'', u'action_play_url': u' --deepLinkParameter=#season/B073RQ7KP4 ', u'serviceId': u'', u'action_type': u'AMAZON_LAUNCH', u'appId': u'evKhCgZelL.AmazonIgnitionLauncher2', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1559685, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/evKhCgZelL/1559683'}], u'title': u'Original Series'}], u'position': 1, u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/3201512006785/167x94.png'}, {u'name': u'DIRECTV', u'appType': u'live', u'appId': u'livetv', u'accelerators': [{u'appDatas': [{u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Jessie', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'290', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547026200, u'subtitle2': u'', u'id': 1566637, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566637'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Jessie', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'290', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547026200, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566638, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566638'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Kick Buttowski: Suburban Daredevil', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'292', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547026200, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566639, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566639'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Gravity Falls', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'292', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566640, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566640'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Robot Chicken', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'296', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547022600, u'display_until': 1547023500, u'subtitle2': u'', u'id': 1566641, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566641'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Kick Buttowski: Suburban Daredevil', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'292', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547026200, u'subtitle2': u'', u'id': 1566642, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566642'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Robot Chicken', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'296', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547023500, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566643, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566643'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'CBS Overnight News', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'390', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547021220, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566644, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566644'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Kingsman: The Golden Circle: HBO First Look', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'502', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547023800, u'display_until': 1547024700, u'subtitle2': u'', u'id': 1566645, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566645'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Good Day Wake Up', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'398', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547031600, u'subtitle2': u'', u'id': 1566646, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566646'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Good Day Wake Up', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'398', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547026200, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566647, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566647'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'TMZ', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'398', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547026200, u'subtitle2': u'', u'id': 1566648, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566648'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'House Flipping 101', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'398', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566649, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566649'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Mickey Mouse Clubhouse', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'290', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566650, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566650'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Jessie', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'290', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547022600, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566651, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566651'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The Making Of: Three Billboards Outside Ebbing, Missouri', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'506', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028900, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566652, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566652'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'CBS 2 News This Morning', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'390', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547026200, u'display_until': 1547035200, u'subtitle2': u'', u'id': 1566653, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566653'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'CBS Morning News', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'390', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547026200, u'subtitle2': u'', u'id': 1566654, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566654'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'NCIS: New Orleans', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'245', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547031600, u'subtitle2': u'', u'id': 1566655, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566655'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'NCIS: New Orleans', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'245', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566656, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566656'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'NCIS: New Orleans', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'245', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566657, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566657'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Fox News at Night With Shannon Bream', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'360', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566658, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566658'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'FOX and Friends First', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'360', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566659, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566659'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'FOX and Friends First', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'360', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547031600, u'subtitle2': u'', u'id': 1566660, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566660'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'All In With Chris Hayes', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'356', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566661, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566661'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'The 11th Hour With Brian Williams', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'356', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566662, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566662'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'First Look', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'356', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547031600, u'subtitle2': u'', u'id': 1566663, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566663'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'SportsCenter', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'206', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566664, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566664'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'SportsCenter', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'206', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566665, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566665'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'SportsCenter', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'206', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547031600, u'subtitle2': u'', u'id': 1566666, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566666'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'ABC World News Now', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'012', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020920, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566667, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566667'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'America This Morning', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'012', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566668, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566668'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'CNN Tonight', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'202', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566669, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566669'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Early Start With Christine Romans and Dave Briggs', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'202', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566670, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566670'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Early Start With Christine Romans and Dave Briggs', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'202', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547031540, u'subtitle2': u'', u'id': 1566671, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566671'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Today With Kathie Lee & Hoda', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'004', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547021220, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566672, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566672'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'RightThisMinute', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'004', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547026200, u'subtitle2': u'', u'id': 1566673, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566673'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Larry King Special Report', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'004', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547026200, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566674, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566674'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Early Today', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'004', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566675, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566675'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Chopped', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'231', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547020800, u'display_until': 1547024400, u'subtitle2': u'', u'id': 1566676, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566676'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'Chopped Junior', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'231', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024400, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566677, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566677'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u"New! Get Cindy Crawford's anti-aging discovery", u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'231', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566678, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566678'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u"New! Get Cindy Crawford's anti-aging discovery", u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'252', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024520, u'display_until': 1547026320, u'subtitle2': u'', u'id': 1566679, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566679'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'CBS Overnight News', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'058', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547024820, u'display_until': 1547028000, u'subtitle2': u'', u'id': 1566680, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566680'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'pxdb_app', u'title': u'CBS Morning News', u'liveLauncherType': u'PXDB_CH', u'action_play_url': u'058', u'serviceId': u'', u'action_type': u'MBR_REQUEST', u'appId': u'PXDB', u'display_from': 1547028000, u'display_until': 1547029800, u'subtitle2': u'', u'id': 1566681, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/livetv_mbr_3/1566681'}], u'title': u'On Now'}], u'position': 2, u'icon': u'/opt/home/app/.canalysis/Icon/Launcher/launcher_directtv_n.png'}, {u'name': u'Netflix', u'appType': u'web_app', u'appId': u'11101200001', u'accelerators': [{u'appDatas': [{u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'showProfilesGate=true&source_type_payload=groupIndex%3D0%26tileIndex%3D0%26action%3DshowProfilesGate', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566492, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566492'}], u'title': u'Joe'}, {u'appDatas': [{u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80050008&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D0%26action%3Dmdp%26movieId%3D80050008%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566494, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566493'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80196789&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D1%26action%3Dmdp%26movieId%3D80196789%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566495, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566494'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80219127&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D2%26action%3Dmdp%26movieId%3D80219127%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566496, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566495'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80209379&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D3%26action%3Dmdp%26movieId%3D80209379%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566497, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566496'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80057918&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D4%26action%3Dmdp%26movieId%3D80057918%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566498, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566497'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80211991&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D5%26action%3Dmdp%26movieId%3D80211991%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566499, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566498'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80036427&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D6%26action%3Dmdp%26movieId%3D80036427%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566500, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566499'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80105699&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D7%26action%3Dmdp%26movieId%3D80105699%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566501, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566500'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80179556&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D8%26action%3Dmdp%26movieId%3D80179556%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566502, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566501'}, {u'isPlayable': 0, u'subtitle': None, u'appType': u'pxdb_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': u'm=80220085&trackId=254080000&&source_type_payload=groupIndex%3D2%26tileIndex%3D9%26action%3Dmdp%26movieId%3D80220085%26trackId%3D254080000', u'serviceId': u'', u'action_type': u'NETFLIX_LAUNCH', u'appId': u'RN1MCdNq8t.Netflix', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': 1566503, u'subtitle3': u'', u'icon': u'/opt/usr/apps/DownloadManager/data/RN1MCdNq8t/1566502'}], u'title': u'Trending Now'}], u'position': 3, u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/11101200001/167x94.png'}, {u'name': u'Emby', u'appType': u'web_app', u'appId': u'3201606009872', u'accelerators': [], u'position': 4, u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/3201606009872/167x94.png'}, {u'name': u'Plex', u'appType': u'web_app', u'appId': u'3201512006963', u'accelerators': [], u'position': 5, u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/3201512006963/167x94.png'}, {u'name': u'APPS', u'appType': u'volt_app', u'appId': u'org.volt.apps', u'accelerators': [{u'appDatas': [{u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'111299001912', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'111299001912', u'subtitle3': u'', u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/111299001912/167x94.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'111199000417', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'111199000417', u'subtitle3': u'', u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/111199000417/167x94.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'111399000031', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'111399000031', u'subtitle3': u'', u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/111399000031/167x94.png'}], u'title': u'Recent'}, {u'appDatas': [{u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201608010239', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201608010239', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201608010239/icon_167x94_20160926002910000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201601007625', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201601007625', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201601007625/icon_167x94_20171128175422000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201601007250', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201601007250', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201601007250/icon_167x94_20160627233435000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': u'', u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201806016508', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201806016508', u'subtitle3': u'', u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/3201806016508/167x94.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201606009840', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201606009840', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201606009840/icon_167x94_20160909011106000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': u'', u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201605009473', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201605009473', u'subtitle3': u'', u'icon': u'/opt/down/webappservice/apps_icon/FirstScreen/3201605009473/167x94.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201707014448', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201707014448', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201707014448/icon_167x94_20170718185953000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201711015155', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201711015155', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201711015155/icon_167x94_20180126222328000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201710014981', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201710014981', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201710014981/icon_167x94_20171211233422000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201611010963', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201611010963', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201611010963/icon_167x94_20180719190440000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201704012161', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201704012161', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201704012161/icon_167x94_20170413145018000.png'}, {u'isPlayable': None, u'subtitle': None, u'appType': u'web_app', u'title': None, u'liveLauncherType': u'', u'action_play_url': None, u'serviceId': u'', u'action_type': None, u'appId': u'3201710014874', u'display_from': None, u'display_until': None, u'subtitle2': u'', u'id': u'3201710014874', u'subtitle3': u'', u'icon': u'http://d1oxlq5h9kq8q5.cloudfront.net/tvstore/contents/3201710014874/icon_167x94_20180914222430000.png'}], u'title': u'Recommended Apps'}], u'position': 7, u'icon': u'/usr/apps/org.volt.firstscreen/bin/src_original/new_resource/apps/apps/normal.png'}]}, u'event': u'ed.edenApp.get'}

kdschlosser commented 5 years ago

ok that is one of the 2. the other is for the installed applications

you can see the u'event': u'ed.edenApp.get' that was for the ed.edenApp.get we need to see the one for ed.installedApp.get as well

kdschlosser commented 5 years ago

ok the application property of the code 2 commands get sent to the TV, ed.installedApp.get and ed.edenApp.get there should be 2 responses from the TV.

since I still have not nailed down why the debugging is not working you can modify the on_message method. add the line print(message) at the very top of that method. this is going to print out all information received form the TV.

kdschlosser commented 5 years ago

basically all the program does is send JSON structures to the TV. these would be the "commands" they needs to have specific information in them in order for the TV to do whatever it is you want it to do. the command structure will look like this

{
    "method":"ms.remote.control",
    "params":{
        "Cmd":"Click",
        "DataOfCmd":"KEY_POWERON",
        "Option":"false",
        "TypeOfRemote":"SendRemoteKey"
   }
}

that one is for sending a remote key.

for the applications it is for ed.edenApp.get

{   
    "method":"ms.channel.emit",
    "params": {
        "data":"",
        "event":"ed.edenApp.get",
        "to":"host"
    }
}

for ed.installedApp.get

{   
    "method":"ms.channel.emit",
    "params": {
        "data":"",
        "event":"ed.installedApp.get",
        "to":"host"
    }
}

I have found that if the TV is going to respond it will contain the same value that is supplied in the command under ['params']['event']

that event will be placed in root of the returned JSON object under ['event']

How the returned data (if any) depends on the command issued.

as you can see from your above pasted information that the data we are looking for it under ['data']['data'] which is a list of each application and each application is a JSON object it's self. hence the ['data']['data'] in the applications property of the code. I am copying that list of applications to app_data. so what is stored in app_data[0] and app_data[1] should be lists. and those lists need to be iterated over not using a key of any kind. Now if I am not grabbing the data properly when i try to iterate over the list it is going to do it incorrectly and grab a list of keys instead which are strings or unicode objects and will throw an error.

I am thinking the issue is in the installedApps response. because from your output above I am going the eeden apps properly. ['data']['data']. I never had the complete information form the installApps. I have the exact same information you posted a few posts back.

['data'] and that is what I used. but if the returned data is like your last output post then it should be ['data]['data'] and it would then explain the error. because instead of copying a list I am copying a dict and the iteration over it is going to return a key instead of a JSON object that represents an application.

if you run the code below you will see what I am talking about.


edenApp = {
    "data":{
        "data":[
            {
                "isLock": False,
                "name": "Deezer",
                "appType": "web_app",
                "position": 13,
                "appId": 3201608010191,
                "launcherType": "launcher",
                "action_type": None,
                "mbrIndex": None,
                "accelerators": [
                    {
                        "appDatas": [
                            {
                                "isPlayable": 1,
                                "icon": "/opt/usr/home/owner/share/DownloadManager/cexr1qp97S/140696",
                                "subtitle": None,
                                "appType": "pxdb_app",
                                "title": "Rap Bangers",
                                "appId": "cexr1qp97S.Deezer",
                                "display_from": None,
                                "action_play_url": {
                                    "picture": "http://api.deezer.com/playlist/1996494362/image",
                                    "md5_image": "882ef931a7a428e7a2b503f530df4ed2",
                                    "picture_medium": "http://cdn-images.deezer.com/images/playlist/882ef931a7a428e7a2b503f530df4ed2/250x250-000000-80-0-0.jpg",
                                    "nb_tracks": 60,
                                    "title": "Rap Bangers",
                                    "checksum": "cad64684448e832c67aa7d103fafb63c",
                                    "tracklist": "http://api.deezer.com/playlist/1996494362/tracks",
                                    "creation_date": "2016-07-05 14:34:42",
                                    "public": True,
                                    "link": "http://www.deezer.com/playlist/1996494362",
                                    "user": {
                                        "tracklist": "http://api.deezer.com/user/917475151/flow",
                                        "type": "user",
                                        "id": 917475151,
                                        "name": "Mehdi Rap Editor"
                                    },
                                    "picture_small": "http://cdn-images.deezer.com/images/playlist/882ef931a7a428e7a2b503f530df4ed2/56x56-000000-80-0-0.jpg",
                                    "picture_xl": "http://cdn-images.deezer.com/images/playlist/882ef931a7a428e7a2b503f530df4ed2/1000x1000-000000-80-0-0.jpg",
                                    "type": "playlist",
                                    "id": 1996494362,
                                    "picture_big": "http://cdn-images.deezer.com/images/playlist/882ef931a7a428e7a2b503f530df4ed2/500x500-000000-80-0-0.jpg"
                                },
                                "liveLauncherType": "",
                                "serviceId": "",
                                "launcherType": "launcher",
                                "action_type": "APP_LAUNCH",
                                "mbrIndex": -2,
                                "sourceTypeNum": 0,
                                "display_until": None,
                                "mbrSource": 0,
                                "id": 140696,
                                "subtitle3": "",
                                "subtitle2": ""
                            },
                            {
                                "isPlayable": 1,
                                "icon": "/opt/usr/home/owner/share/DownloadManager/cexr1qp97S/140692",
                                "subtitle": None,
                                "appType": "pxdb_app",
                                "title": "Best Of Rap Bangers 2018",
                                "appId": "cexr1qp97S.Deezer",
                                "display_from": None,
                                "action_play_url": {
                                    "picture": "http://api.deezer.com/playlist/5171651864/image",
                                    "md5_image": "de9dee5f90f4ebf0c9c5ba2e69f42691",
                                    "picture_medium": "http://cdn-images.deezer.com/images/playlist/de9dee5f90f4ebf0c9c5ba2e69f42691/250x250-000000-80-0-0.jpg",
                                    "nb_tracks": 52,
                                    "title": "Best Of Rap Bangers 2018",
                                    "checksum": "e7120c1c76d9dfa4fa7a4a3de4693dc3",
                                    "tracklist": "http://api.deezer.com/playlist/5171651864/tracks",
                                    "creation_date": "2018-12-02 16:53:54",
                                    "public": True,
                                    "link": "http://www.deezer.com/playlist/5171651864",
                                    "user": {
                                        "tracklist": "http://api.deezer.com/user/917475151/flow",
                                        "type": "user",
                                        "id": 917475151,
                                        "name": "Mehdi Rap Editor"
                                    },
                                    "picture_small": "http://cdn-images.deezer.com/images/playlist/de9dee5f90f4ebf0c9c5ba2e69f42691/56x56-000000-80-0-0.jpg",
                                    "picture_xl": "http://cdn-images.deezer.com/images/playlist/de9dee5f90f4ebf0c9c5ba2e69f42691/1000x1000-000000-80-0-0.jpg",
                                    "type": "playlist",
                                    "id": 5171651864,
                                    "picture_big": "http://cdn-images.deezer.com/images/playlist/de9dee5f90f4ebf0c9c5ba2e69f42691/500x500-000000-80-0-0.jpg"
                                },
                                "liveLauncherType": "",
                                "serviceId": "",
                                "launcherType": "launcher",
                                "action_type": "APP_LAUNCH",
                                "mbrIndex": -2,
                                "sourceTypeNum": 0,
                                "display_until": None,
                                "mbrSource": 0,
                                "id": 140692,
                                "subtitle3": "",
                                "subtitle2": ""
                            },
                            {
                                "isPlayable": 1,
                                "icon": "/opt/usr/home/owner/share/DownloadManager/cexr1qp97S/140693",
                                "subtitle": None,
                                "appType": "pxdb_app",
                                "title": "Christmas Pop",
                                "appId": "cexr1qp97S.Deezer",
                                "display_from": None,
                                "action_play_url": {
                                    "picture": "http://api.deezer.com/playlist/3833591862/image",
                                    "md5_image": "9c27b60ecdd08c224218610126a86453",
                                    "picture_medium": "http://cdn-images.deezer.com/images/playlist/9c27b60ecdd08c224218610126a86453/250x250-000000-80-0-0.jpg",
                                    "nb_tracks": 60,
                                    "title": "Christmas Pop",
                                    "checksum": "03ba236386f9474a0227414e4f48d73c",
                                    "tracklist": "http://api.deezer.com/playlist/3833591862/tracks",
                                    "creation_date": "2017-11-23 15:40:17",
                                    "public": True,
                                    "link": "http://www.deezer.com/playlist/3833591862",
                                    "user": {
                                        "tracklist": "http://api.deezer.com/user/753546365/flow",
                                        "type": "user",
                                        "id": 753546365,
                                        "name": "Dom - Pop Music Editor"
                                    },
                                    "picture_small": "http://cdn-images.deezer.com/images/playlist/9c27b60ecdd08c224218610126a86453/56x56-000000-80-0-0.jpg",
                                    "picture_xl": "http://cdn-images.deezer.com/images/playlist/9c27b60ecdd08c224218610126a86453/1000x1000-000000-80-0-0.jpg",
                                    "type": "playlist",
                                    "id": 3833591862,
                                    "picture_big": "http://cdn-images.deezer.com/images/playlist/9c27b60ecdd08c224218610126a86453/500x500-000000-80-0-0.jpg"
                                },
                                "liveLauncherType": "",
                                "serviceId": "",
                                "launcherType": "launcher",
                                "action_type": "APP_LAUNCH",
                                "mbrIndex": -2,
                                "sourceTypeNum": 0,
                                "display_until": None,
                                "mbrSource": 0,
                                "id": 140693,
                                "subtitle3": "",
                                "subtitle2": ""
                            },
                            {
                                "isPlayable": 1,
                                "icon": "/opt/usr/home/owner/share/DownloadManager/cexr1qp97S/140694",
                                "subtitle": None,
                                "appType": "pxdb_app",
                                "title": "2018's Biggest Hits",
                                "appId": "cexr1qp97S.Deezer",
                                "display_from": None,
                                "action_play_url": {
                                    "picture": "http://api.deezer.com/playlist/1283499335/image",
                                    "md5_image": "33688a8b06bf539cb5d1d07be5816fa0",
                                    "picture_medium": "http://cdn-images.deezer.com/images/playlist/33688a8b06bf539cb5d1d07be5816fa0/250x250-000000-80-0-0.jpg",
                                    "nb_tracks": 60,
                                    "title": "2018's Biggest Hits",
                                    "checksum": "8dfeeddf33931c5a66cc89931bf57f55",
                                    "tracklist": "http://api.deezer.com/playlist/1283499335/tracks",
                                    "creation_date": "2015-06-26 15:27:47",
                                    "public": True,
                                    "link": "http://www.deezer.com/playlist/1283499335",
                                    "user": {
                                        "tracklist": "http://api.deezer.com/user/753546365/flow",
                                        "type": "user",
                                        "id": 753546365,
                                        "name": "Dom - Pop Music Editor"
                                    },
                                    "picture_small": "http://cdn-images.deezer.com/images/playlist/33688a8b06bf539cb5d1d07be5816fa0/56x56-000000-80-0-0.jpg",
                                    "picture_xl": "http://cdn-images.deezer.com/images/playlist/33688a8b06bf539cb5d1d07be5816fa0/1000x1000-000000-80-0-0.jpg",
                                    "type": "playlist",
                                    "id": 1283499335,
                                    "picture_big": "http://cdn-images.deezer.com/images/playlist/33688a8b06bf539cb5d1d07be5816fa0/500x500-000000-80-0-0.jpg"
                                },
                                "liveLauncherType": "",
                                "serviceId": "",
                                "launcherType": "launcher",
                                "action_type": "APP_LAUNCH",
                                "mbrIndex": -2,
                                "sourceTypeNum": 0,
                                "display_until": None,
                                "mbrSource": 0,
                                "id": 140694,
                                "subtitle3": "",
                                "subtitle2": ""
                            },
                            {
                                "isPlayable": 1,
                                "icon": "/opt/usr/home/owner/share/DownloadManager/cexr1qp97S/140695",
                                "subtitle": None,
                                "appType": "pxdb_app",
                                "title": "Hits of the Moment",
                                "appId": "cexr1qp97S.Deezer",
                                "display_from": None,
                                "action_play_url": {
                                    "picture": "http://api.deezer.com/playlist/2098157264/image",
                                    "md5_image": "b3924470ee53c1180913e06d3cfd006b",
                                    "picture_medium": "http://cdn-images.deezer.com/images/playlist/b3924470ee53c1180913e06d3cfd006b/250x250-000000-80-0-0.jpg",
                                    "nb_tracks": 60,
                                    "title": "Hits of the Moment",
                                    "checksum": "8dfe26c3e3a7f6ec8257b46901fa3a28",
                                    "tracklist": "http://api.deezer.com/playlist/2098157264/tracks",
                                    "creation_date": "2016-08-04 15:42:22",
                                    "public": True,
                                    "link": "http://www.deezer.com/playlist/2098157264",
                                    "user": {
                                        "tracklist": "http://api.deezer.com/user/753546365/flow",
                                        "type": "user",
                                        "id": 753546365,
                                        "name": "Dom - Pop Music Editor"
                                    },
                                    "picture_small": "http://cdn-images.deezer.com/images/playlist/b3924470ee53c1180913e06d3cfd006b/56x56-000000-80-0-0.jpg",
                                    "picture_xl": "http://cdn-images.deezer.com/images/playlist/b3924470ee53c1180913e06d3cfd006b/1000x1000-000000-80-0-0.jpg",
                                    "type": "playlist",
                                    "id": 2098157264,
                                    "picture_big": "http://cdn-images.deezer.com/images/playlist/b3924470ee53c1180913e06d3cfd006b/500x500-000000-80-0-0.jpg"
                                },
                                "liveLauncherType": "",
                                "serviceId": "",
                                "launcherType": "launcher",
                                "action_type": "APP_LAUNCH",
                                "mbrIndex": -2,
                                "sourceTypeNum": 0,
                                "display_until": None,
                                "mbrSource": 0,
                                "id": 140695,
                                "subtitle3": "",
                                "subtitle2": ""
                            }
                        ],
                        "title": "featured"
                    }
                ]
            }
        ]
    }
}

installedApp = {
    "data":[
        {
            "is_lock": 0,
            "icon": "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
            "app_type": 2,
            "name": "Deezer",
            "appId": 3201608010191
        },
        {
            "is_lock": 0,
            "icon": "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
            "app_type": 2,
            "name": "Vudu",
            "appId": "111299001913"
        },
        {
            "is_lock": 0,
            "icon": "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
            "app_type": 2,
            "name": "Netflix",
            "appId": "111299001914"
        },
    ]
}

app_data = [[], []]

def eden_app_get(data):
    if 'data' in data:
        app_data[0] = data['data']['data']

def installed_app_get(data):
    if 'data' in data:
        app_data[1] = data['data']

eden_app_get(edenApp)
installed_app_get(installedApp)

for app_1 in app_data[1]:
    for app_2 in app_data[0]:
        if app_1['appId'] == app_2['appId']:
            app_1.update(app_2)

res = []
for app in app_data[1]:
    res += [app]

for item in res:
    print(item)

# so in this example if the alignment was correct it would work.

# and here it is if it is not correect

app_data = [[], []]

installedApp = {
    "data":{
        "data":[
            {
                "is_lock": 0,
                "icon": "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
                "app_type": 2,
                "name": "Deezer",
                "appId": 3201608010191
            },
            {
                "is_lock": 0,
                "icon": "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
                "app_type": 2,
                "name": "Vudu",
                "appId": "111299001913"
            },
            {
                "is_lock": 0,
                "icon": "/opt/share/webappservice/apps_icon/FirstScreen/111299001912/250x250.png",
                "app_type": 2,
                "name": "Netflix",
                "appId": "111299001914"
            },
        ]
    }
}

eden_app_get(edenApp)
installed_app_get(installedApp)

for app_1 in app_data[1]:
    for app_2 in app_data[0]:
        if app_1['appId'] == app_2['appId']:
            app_1.update(app_2)

res = []
for app in app_data[1]:
    res += [app]

for item in res:
    print(item)

I did however discover the possibility of a bug. I am not sure as to why but the 2 response examples I have show the appId in the installedApp response as a string and in the edenApp response they are an integer. we may need to look into this bit a little more when we fix this if the output is not correct.

kdschlosser commented 5 years ago

I am thinking if you change this block of code.

def installed_app_get(data):
    if 'data' in data:
        app_data[1] = data['data']
    installed_event.set()

to this

def installed_app_get(data):
    if 'data' in data:
        app_data[1] = data['data']['data']
    installed_event.set()

is all that is going to need to be done.

I would also change

 self.register_receive_callback(installed_app_get, 'data', None)

to this

self.register_receive_callback(installed_app_get, 'event', 'ed.installedApp.get')
xxKeoxx commented 5 years ago

Ok. That seems to have resolved the error, but the following code doesn't work to launch the movie:

import samsungctl

config = {
    "name": "samsungctl",
    "description": "PC",
    "id": "",
    "host": "[REDACTED]",
    "port": 8002,
    "method": "websocket",
    "timeout": 0
}

with samsungctl.Remote(config) as remote:
    vudu = remote.get_application('VUDU')
    # or vudu.run()
    for group in vudu:
        print(group.title)
        for content in group:
            print('   ', content.title)
            if content.title == 'Ant-Man and the Wasp':
               content.run()

Here is what it returns:

None

Venom
Night School - Extended Cut
A Simple Favor
The House With a Clock in Its Walls
The Predator
White Boy Rick
Incredibles 2
Bao
Smallfoot
Sgt. Stubby: An American Hero
Peppermint
Mission: Impossible Fallout
The Equalizer 2
Along With the Gods: The Last 49 Days
Predator 4-Film Collection  (Bundle)
Home Alone
The Original Christmas Classics (Bundle)
Elf
A Boy. A Girl. A Dream.
The Nun
Mission: Impossible - 6 Movie Collection (Bundle)
Ant-Man and the Wasp
Leprechaun Returns
Night School
The Santa Clause
The Happytime Murders
National Lampoon's Christmas Vacation
Hal
Kin
BlacKkKlansman
kdschlosser commented 5 years ago

ok sweet, so we have a solution for getting the applications.. that's a plus.

Now onto the next error.... LOL

kdschlosser commented 5 years ago

ok i updated the master branch. it includes the fix for loading the applications. I also made 2 changes for running the content. see if those changes work. can you also check to see if the launching of an app works as well.

I also updated the callbacks for the icons since I believe we have an API for the responses over the websocket.

xxKeoxx commented 5 years ago

ok i updated the master branch. it includes the fix for loading the applications. I also made 2 changes for running the content. see if those changes work. can you also check to see if the launching of an app works as well.

I also updated the callbacks for the icons since I believe we have an API for the responses over the websocket.

Quick update, now when I run my script there is no response returned at all. The error is gone though.

I haven't been able to troubleshoot it much, so I will get you more details this weekend. Thanks for your help!

kdschlosser commented 5 years ago

never heard back from ya on this issue. can we close it?

xxKeoxx commented 5 years ago

I've been busy with stuff and hadn't had time to get back to it. If you want to close it go ahead. I don't know when I will be able to try it again.

kdschlosser commented 5 years ago

Oh man.... Your killing me... I'm playin.

It cool I will leave it open. Tho I think a lot of the information in this issue are going to be irreverent. I had someone else test pulling of application data along with the running of an application and it checked out OK. I finally broke down and set up unittests to mimic the communications between TV and library.. and i worked out most of the kinks that way.