Migrate to Google Analytics 4

This commit is contained in:
JonnyWong16 2023-02-26 15:09:51 -08:00
parent 42eeb90532
commit af3e5574f5
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
2 changed files with 42 additions and 32 deletions

View file

@ -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):

View file

@ -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,