From 425c5eb8dc979e0cc963f916a6c3ceb7f7103ae3 Mon Sep 17 00:00:00 2001 From: "Fabian P. Schmidt" Date: Tue, 12 Nov 2019 16:01:45 +0100 Subject: [PATCH] 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 --- utils.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/utils.py b/utils.py index 7259fdf..a5fe491 100644 --- a/utils.py +++ b/utils.py @@ -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 = []