@@ -51,8 +51,9 @@ async def test_connection(self):
5151 self .connection = True
5252 logger ("Status from Tautulli: " + str (response .status ))
5353
54- except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ):
55- msg = "Can not load data from Tautulli: {}" .format (url )
54+ except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ,
55+ AttributeError ) as error :
56+ msg = "Can not load data from Tautulli: {} - {}" .format (url , error )
5657 logger (msg , 40 )
5758
5859 async def get_data (self ):
@@ -78,24 +79,46 @@ async def get_session_data(self):
7879 self .tautulli_session_data = await response .json ()
7980 logger (self .tautulli_session_data )
8081
81- except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ):
82- msg = "Can not load data from Tautulli: {}" .format (url )
82+ except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ,
83+ AttributeError ) as error :
84+ msg = "Can not load data from Tautulli: {} - {}" .format (url , error )
8385 logger (msg , 40 )
8486
8587 async def get_home_data (self ):
8688 """Get Tautulli home stats."""
8789 cmd = 'get_home_stats'
8890 url = self .base_url + cmd
91+ data = {}
8992 try :
9093 async with async_timeout .timeout (5 , loop = self ._loop ):
91- response = await self ._session .get (url )
92-
93- logger ("Status from Tautulli: " + str (response .status ))
94- self .tautulli_home_data = await response .json ()
94+ request = await self ._session .get (url )
95+ response = await request .json ()
96+ for stat in response .get ('response' , {}).get ('data' , {}):
97+ if stat .get ('stat_id' ) == 'top_movies' :
98+ try :
99+ row = stat .get ('rows' , {})[0 ]
100+ data ['movie' ] = row .get ('title' )
101+ except (IndexError , KeyError ):
102+ data ['movie' ] = None
103+ if stat .get ('stat_id' ) == 'top_tv' :
104+ try :
105+ row = stat .get ('rows' , {})[0 ]
106+ data ['tv' ] = row .get ('title' )
107+ except (IndexError , KeyError ):
108+ data ['tv' ] = None
109+ if stat .get ('stat_id' ) == 'top_users' :
110+ try :
111+ row = stat .get ('rows' , {})[0 ]
112+ data ['user' ] = row .get ('user' )
113+ except (IndexError , KeyError ):
114+ data ['user' ] = None
115+ logger ("Status from Tautulli: " + str (request .status ))
116+ self .tautulli_home_data = data
95117 logger (self .tautulli_home_data )
96118
97- except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ):
98- msg = "Can not load data from Tautulli: {}" .format (url )
119+ except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ,
120+ AttributeError ) as error :
121+ msg = "Can not load data from Tautulli: {} - {}" .format (url , error )
99122 logger (msg , 40 )
100123
101124 async def get_users (self ):
@@ -115,14 +138,15 @@ async def get_users(self):
115138 self .tautulli_users = users
116139 logger (self .tautulli_users )
117140
118- except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ):
119- msg = "Can not load data from Tautulli: {}" .format (url )
141+ except (asyncio .TimeoutError , aiohttp .ClientError , socket .gaierror ,
142+ AttributeError ) as error :
143+ msg = "Can not load data from Tautulli: {} - {}" .format (url , error )
120144 logger (msg , 40 )
121145
122146 async def get_user_data (self ):
123147 """Get Tautulli userdata."""
124148 userdata = {}
125- sessions = self .session_data [ 'sessions' ]
149+ sessions = self .session_data . get ( 'sessions' , {})
126150 try :
127151 async with async_timeout .timeout (5 , loop = self ._loop ):
128152 for username in self .tautulli_users :
@@ -149,7 +173,7 @@ def connection_status(self):
149173 @property
150174 def session_data (self ):
151175 """Return data from Tautulli."""
152- return self .tautulli_session_data [ 'response' ][ 'data' ]
176+ return self .tautulli_session_data . get ( 'response' , {}). get ( 'data' , {})
153177
154178 @property
155179 def users (self ):
@@ -164,7 +188,7 @@ def user_data(self):
164188 @property
165189 def home_data (self ):
166190 """Return data from Tautulli."""
167- return self .tautulli_home_data [ 'response' ][ 'data' ]
191+ return self .tautulli_home_data
168192
169193
170194def logger (message , level = 10 ):
0 commit comments