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.triggers.interval import IntervalTrigger
from UniversalAnalytics import Tracker
from ga4mp import GtagMP
import pytz
PYTHON2 = sys.version_info[0] == 2
@ -578,12 +578,12 @@ def start():
# Send system analytics events
if not CONFIG.FIRST_RUN_COMPLETE:
analytics_event(category='system', action='install')
analytics_event(name='install')
elif _UPDATE:
analytics_event(category='system', action='update')
analytics_event(name='update')
analytics_event(category='system', action='start')
analytics_event(name='start')
_STARTED = True
@ -2843,44 +2843,46 @@ def generate_uuid():
def initialize_tracker():
data = {
'dataSource': 'server',
'appName': common.PRODUCT,
'appVersion': common.RELEASE,
'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)
tracker = GtagMP(
api_secret='Cl_LjAKUT26AS22YZwqaPw',
measurement_id='G-NH1M4BYM2P',
client_id=CONFIG.PMS_UUID
)
return tracker
def analytics_event(category, action, label=None, value=None, **kwargs):
data = {'category': category, 'action': action}
def analytics_event(name, **kwargs):
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:
data['label'] = label
for key, value in kwargs.items():
event.set_event_param(key, value)
if value is not None:
data['value'] = value
plex_tv = plextv.PlexTV()
ip_address = plex_tv.get_public_ip(output_format='text')
geolocation = plex_tv.get_geoip_lookup(ip_address) or {}
if kwargs:
data.update(kwargs)
event.set_event_param('country', geolocation.get('country', 'Unknown'))
event.set_event_param('countryCode', geolocation.get('code', 'Unknown'))
if TRACKER:
try:
TRACKER.send('event', data)
TRACKER.send(events=[event])
pass
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):

View file

@ -331,6 +331,14 @@ class PlexTV(object):
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=''):
uri = '/api/v2/geoip?ip_address=%s' % ip_address
request = self.request_handler.make_request(uri=uri,