utils: Improve transmitter priority file reader

Add a warning when the priority file can't be read.
Use csv module for parsing.
Skip malformed lines.

Signed-off-by: Fabian P. Schmidt <kerel@mailbox.org>
merge-requests/57/head
Fabian P. Schmidt 2019-11-12 16:01:45 +01:00
parent 0ae102d19b
commit 425c5eb8dc
1 changed files with 19 additions and 17 deletions

View File

@ -1,30 +1,32 @@
import csv
import logging
import settings
import os
import settings
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:
if not filename or not os.path.exists(filename):
# No priorites file found, return empty objects
logging.warning('Could not read priority file {}.'.format(filename))
return ({}, {})
satprio = {}
sattrans = {}
with open(filename, "r") as fp:
reader = csv.reader(filter(lambda row: row[0]!='#', fp),
delimiter=' ')
for row in reader:
if len(row) != 3:
# Skip malformed lines
continue
sat, prio, transmitter = row
satprio[sat] = float(prio)
sattrans[sat] = transmitter
return (satprio, sattrans)
def get_priority_passes(passes, priorities, favorite_transmitters, only_priority, min_priority):
priority = []