58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
import logging
|
|
import settings
|
|
import os
|
|
|
|
|
|
def read_priorities_transmitters(filename):
|
|
# Priorities and favorite transmitters
|
|
# read the following format
|
|
# 43017 1. KgazZMKEa74VnquqXLwAvD
|
|
if filename is not None and os.path.exists(filename):
|
|
with open(filename, "r") as fp:
|
|
satprio = {}
|
|
sattrans = {}
|
|
lines = fp.readlines()
|
|
for line in lines:
|
|
if line[0]=="#":
|
|
continue
|
|
parts = line.strip().split(" ")
|
|
sat = parts[0]
|
|
prio = parts[1]
|
|
transmitter = parts[2]
|
|
satprio[sat] = float(prio)
|
|
sattrans[sat] = transmitter
|
|
return (satprio, sattrans)
|
|
else:
|
|
return ({}, {})
|
|
|
|
|
|
def get_priority_passes(passes, priorities, favorite_transmitters, only_priority, min_priority):
|
|
priority = []
|
|
normal = []
|
|
for satpass in passes:
|
|
# Is this satellite a priority satellite?
|
|
if satpass['id'] in priorities:
|
|
# Is this transmitter a priority transmitter?
|
|
if satpass['uuid'] == favorite_transmitters[satpass['id']]:
|
|
satpass['priority'] = priorities[satpass['id']]
|
|
satpass['uuid'] = favorite_transmitters[satpass['id']]
|
|
|
|
# Add if priority is high enough
|
|
if satpass['priority'] >= min_priority:
|
|
priority.append(satpass)
|
|
elif only_priority:
|
|
# Find satellite transmitter with highest number of good observations
|
|
max_good_count = max([s['good_count'] for s in passes if s["id"] == satpass["id"]])
|
|
if max_good_count > 0:
|
|
satpass['priority'] = \
|
|
(float(satpass['altt']) / 90.0) \
|
|
* satpass['success_rate'] \
|
|
* float(satpass['good_count']) / max_good_count
|
|
else:
|
|
satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['success_rate']
|
|
|
|
# Add if priority is high enough
|
|
if satpass['priority'] >= min_priority:
|
|
normal.append(satpass)
|
|
return (priority, normal)
|