Added new fields. Better error handling of geoip

This commit is contained in:
samwiseg0 2018-08-06 04:08:49 -04:00
parent 4c1b771909
commit addb7c1a6d

View file

@ -30,12 +30,12 @@ def GeoLite2db(ipaddress):
tempfullpath = os.path.join(tempfolder, dbfile) tempfullpath = os.path.join(tempfolder, dbfile)
os.rename(tempfullpath, dbfile) os.rename(tempfullpath, dbfile)
shutil.rmtree(tempfolder) shutil.rmtree(tempfolder)
reader = geoip2.database.Reader(dbfile) reader = geoip2.database.Reader(dbfile)
geodata = reader.city(ipaddress) geodata = reader.city(ipaddress)
return geodata return geodata
influx_payload = [ influx_payload = [
{ {
@ -51,10 +51,18 @@ influx_payload = [
] ]
for session in sessions.keys(): for session in sessions.keys():
geodata = GeoLite2db(sessions[session]['ip_address_public']) try:
geodata = GeoLite2db(sessions[session]['ip_address_public'])
except ValueError:
if configuration.tautulli_failback_ip:
geodata =GeoLite2db(configuration.tautulli_failback_ip)
else:
geodata = GeoLite2db(requests.get('http://ip.42.pl/raw').text)
decision = sessions[session]['transcode_decision'] decision = sessions[session]['transcode_decision']
if decision == 'copy': if decision == 'copy':
decision = 'direct stream' decision = 'direct stream'
influx_payload.append( influx_payload.append(
{ {
"measurement": "Tautulli", "measurement": "Tautulli",
@ -68,13 +76,15 @@ for session in sessions.keys():
"name": sessions[session]['friendly_name'], "name": sessions[session]['friendly_name'],
"title": sessions[session]['full_title'], "title": sessions[session]['full_title'],
"quality": '{}p'.format(sessions[session]['video_resolution']), "quality": '{}p'.format(sessions[session]['video_resolution']),
"video_decision": sessions[session]['stream_video_decision'],
"transcode_decision": decision.title(), "transcode_decision": decision.title(),
"product_version": sessions[session]['product_version'],
"quality_profile": sessions[session]['quality_profile'], "quality_profile": sessions[session]['quality_profile'],
"location": geodata.city.name, "location": geodata.city.name,
} }
} }
) )
influx = InfluxDBClient(configuration.grafana_url, configuration.grafana_port, configuration.grafana_username, influx = InfluxDBClient(configuration.influxdb_url, configuration.influxdb_port, configuration.influxdb_username,
configuration.grafana_password, configuration.tautulli_grafana_db_name) configuration.influxdb_password, configuration.tautulli_influxdb_db_name)
influx.write_points(influx_payload) influx.write_points(influx_payload)