mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-16 02:02:58 -07:00
Migrate to Google Analytics 4
This commit is contained in:
parent
42eeb90532
commit
af3e5574f5
2 changed files with 42 additions and 32 deletions
|
@ -36,7 +36,7 @@ except ImportError:
|
||||||
|
|
||||||
from apscheduler.schedulers.background import BackgroundScheduler
|
from apscheduler.schedulers.background import BackgroundScheduler
|
||||||
from apscheduler.triggers.interval import IntervalTrigger
|
from apscheduler.triggers.interval import IntervalTrigger
|
||||||
from UniversalAnalytics import Tracker
|
from ga4mp import GtagMP
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
PYTHON2 = sys.version_info[0] == 2
|
PYTHON2 = sys.version_info[0] == 2
|
||||||
|
@ -578,12 +578,12 @@ def start():
|
||||||
|
|
||||||
# Send system analytics events
|
# Send system analytics events
|
||||||
if not CONFIG.FIRST_RUN_COMPLETE:
|
if not CONFIG.FIRST_RUN_COMPLETE:
|
||||||
analytics_event(category='system', action='install')
|
analytics_event(name='install')
|
||||||
|
|
||||||
elif _UPDATE:
|
elif _UPDATE:
|
||||||
analytics_event(category='system', action='update')
|
analytics_event(name='update')
|
||||||
|
|
||||||
analytics_event(category='system', action='start')
|
analytics_event(name='start')
|
||||||
|
|
||||||
_STARTED = True
|
_STARTED = True
|
||||||
|
|
||||||
|
@ -2843,44 +2843,46 @@ def generate_uuid():
|
||||||
|
|
||||||
|
|
||||||
def initialize_tracker():
|
def initialize_tracker():
|
||||||
data = {
|
tracker = GtagMP(
|
||||||
'dataSource': 'server',
|
api_secret='Cl_LjAKUT26AS22YZwqaPw',
|
||||||
'appName': common.PRODUCT,
|
measurement_id='G-NH1M4BYM2P',
|
||||||
'appVersion': common.RELEASE,
|
client_id=CONFIG.PMS_UUID
|
||||||
'appId': INSTALL_TYPE,
|
)
|
||||||
'appInstallerId': CONFIG.GIT_BRANCH,
|
|
||||||
'dimension1': '{} {}'.format(common.PLATFORM, common.PLATFORM_RELEASE), # App Platform
|
|
||||||
'dimension2': common.PLATFORM_LINUX_DISTRO, # Linux Distro
|
|
||||||
'dimension3': common.PYTHON_VERSION,
|
|
||||||
'userLanguage': SYS_LANGUAGE,
|
|
||||||
'documentEncoding': SYS_ENCODING,
|
|
||||||
'noninteractive': True
|
|
||||||
}
|
|
||||||
|
|
||||||
tracker = Tracker.create('UA-111522699-2', client_id=CONFIG.PMS_UUID, hash_client_id=True,
|
|
||||||
user_agent=common.USER_AGENT)
|
|
||||||
tracker.set(data)
|
|
||||||
|
|
||||||
return tracker
|
return tracker
|
||||||
|
|
||||||
|
|
||||||
def analytics_event(category, action, label=None, value=None, **kwargs):
|
def analytics_event(name, **kwargs):
|
||||||
data = {'category': category, 'action': action}
|
event = TRACKER.create_new_event(name=name)
|
||||||
|
event.set_event_param('name', common.PRODUCT)
|
||||||
|
event.set_event_param('version', common.RELEASE)
|
||||||
|
event.set_event_param('install', INSTALL_TYPE)
|
||||||
|
event.set_event_param('branch', CONFIG.GIT_BRANCH)
|
||||||
|
event.set_event_param('platform', common.PLATFORM)
|
||||||
|
event.set_event_param('platformRelease', common.PLATFORM_RELEASE)
|
||||||
|
event.set_event_param('platformVersion', common.PLATFORM_VERSION)
|
||||||
|
event.set_event_param('linuxDistro', common.PLATFORM_LINUX_DISTRO)
|
||||||
|
event.set_event_param('pythonVersion', common.PYTHON_VERSION)
|
||||||
|
event.set_event_param('language', SYS_LANGUAGE)
|
||||||
|
event.set_event_param('encoding', SYS_ENCODING)
|
||||||
|
event.set_event_param('timezone', str(SYS_TIMEZONE))
|
||||||
|
event.set_event_param('timezoneUTCOffset', f'UTC{SYS_UTC_OFFSET}')
|
||||||
|
|
||||||
if label is not None:
|
for key, value in kwargs.items():
|
||||||
data['label'] = label
|
event.set_event_param(key, value)
|
||||||
|
|
||||||
if value is not None:
|
plex_tv = plextv.PlexTV()
|
||||||
data['value'] = value
|
ip_address = plex_tv.get_public_ip(output_format='text')
|
||||||
|
geolocation = plex_tv.get_geoip_lookup(ip_address) or {}
|
||||||
|
|
||||||
if kwargs:
|
event.set_event_param('country', geolocation.get('country', 'Unknown'))
|
||||||
data.update(kwargs)
|
event.set_event_param('countryCode', geolocation.get('code', 'Unknown'))
|
||||||
|
|
||||||
if TRACKER:
|
if TRACKER:
|
||||||
try:
|
try:
|
||||||
TRACKER.send('event', data)
|
TRACKER.send(events=[event])
|
||||||
|
pass
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warn("Failed to send analytics event for category '%s', action '%s': %s" % (category, action, e))
|
logger.warn("Failed to send analytics event for name '%s': %s" % (name, e))
|
||||||
|
|
||||||
|
|
||||||
def check_folder_writable(folder, fallback, name):
|
def check_folder_writable(folder, fallback, name):
|
||||||
|
|
|
@ -331,6 +331,14 @@ class PlexTV(object):
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
|
def get_public_ip(self, output_format=''):
|
||||||
|
uri = '/:/ip'
|
||||||
|
request = self.request_handler.make_request(uri=uri,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
|
return request
|
||||||
|
|
||||||
def get_plextv_geoip(self, ip_address='', output_format=''):
|
def get_plextv_geoip(self, ip_address='', output_format=''):
|
||||||
uri = '/api/v2/geoip?ip_address=%s' % ip_address
|
uri = '/api/v2/geoip?ip_address=%s' % ip_address
|
||||||
request = self.request_handler.make_request(uri=uri,
|
request = self.request_handler.make_request(uri=uri,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue