Skip to content

Commit c1d853d

Browse files
committed
Fix issues with home stats
1 parent cb0523c commit c1d853d

File tree

2 files changed

+40
-16
lines changed

2 files changed

+40
-16
lines changed

pytautulli/__init__.py

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

170194
def logger(message, level=10):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
LONG = fh.read()
66
setuptools.setup(
77
name="pytautulli",
8-
version='0.4.0',
8+
version='0.4.1',
99
author="Joakim Sorensen",
1010
author_email="[email protected]",
1111
description="",

0 commit comments

Comments
 (0)