From d9b9901a04e4e8c1d7679eba13ea61ba29fd5b1b Mon Sep 17 00:00:00 2001 From: sfaulds Date: Thu, 13 Oct 2016 11:47:43 +1100 Subject: [PATCH] ping GA server to keep analytic sessions alive --- resources/lib/ga_client.py | 20 +++++++++++++------- resources/lib/service_entry.py | 12 ++++++++++-- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/resources/lib/ga_client.py b/resources/lib/ga_client.py index 4a267727..10b664da 100644 --- a/resources/lib/ga_client.py +++ b/resources/lib/ga_client.py @@ -9,6 +9,9 @@ from utils import window, settings, language as lang log = logging.getLogger("EMBY."+__name__) +# for info on the metrics that can be sent to Google Analytics +# https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events + class GoogleAnalytics(): testing = False @@ -51,13 +54,7 @@ class GoogleAnalytics(): return errorType, errorFile def sendEventData(self, eventCategory, eventAction, eventLabel=None): - - if(settings('metricLogging') == "false"): - return - - # for info on the metrics that can be sent to Google Analytics - # https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events - + # all the data we can send to Google Analytics data = {} data['v'] = '1' @@ -82,8 +79,15 @@ class GoogleAnalytics(): if(eventLabel != None): data['el'] = eventLabel # Event Label + self.sendData(data) + + def sendData(self, data): + log.info("GA: " + str(data)) + if(settings('metricLogging') == "false"): + return + if(self.testing): url = "https://www.google-analytics.com/debug/collect" # test URL else: @@ -96,4 +100,6 @@ class GoogleAnalytics(): if(self.testing): log.info("GA: " + r.text.encode('utf-8')) + + \ No newline at end of file diff --git a/resources/lib/service_entry.py b/resources/lib/service_entry.py index d3f1fe76..ad6ae247 100644 --- a/resources/lib/service_entry.py +++ b/resources/lib/service_entry.py @@ -4,6 +4,7 @@ import logging import sys +import time import _strptime # Workaround for threads using datetime: _striptime is locked from datetime import datetime @@ -41,7 +42,7 @@ class Service(object): library_thread = None last_progress = datetime.today() - + lastMetricPing = time.time() def __init__(self): @@ -139,7 +140,14 @@ class Service(object): # or Kodi is shut down. self._server_online_check() - + # ping metrics server to keep sessions alive + # ping every 3 min + timeSinceLastPing = time.time() - self.lastMetricPing + if(timeSinceLastPing > 180): + self.lastMetricPing = time.time() + ga = GoogleAnalytics() + ga.sendEventData("Application", "Ping") + if self.monitor.waitForAbort(1): # Abort was requested while waiting. We should exit break