From 9c7aa6dc844b92c93734fd62bb0cde561998012a Mon Sep 17 00:00:00 2001 From: Arturs Artamonovs Date: Wed, 15 Mar 2023 22:45:41 +0000 Subject: Implementing station time handling routing in airtspyhf_shedule --- airspyhf_shedule.py | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++-- number.ini | 38 +++++++++++++++++ 2 files changed, 151 insertions(+), 3 deletions(-) mode change 100644 => 100755 airspyhf_shedule.py create mode 100644 number.ini diff --git a/airspyhf_shedule.py b/airspyhf_shedule.py old mode 100644 new mode 100755 index ad23e3d..03139bc --- a/airspyhf_shedule.py +++ b/airspyhf_shedule.py @@ -1,8 +1,118 @@ +#!/usr/bin/python3 + import os from airspyhf import * from ctypes import * import time import sys -import wave -import struct -import argparse \ No newline at end of file +import argparse +import configparser +import re + +class Station: + name = "NoName" + frequency = 4000000 + time = 0 + duration = 300 #in seconds + day = [] + month = [] + def __init__(self): + pass + + def readConfig(self,config): + if "name" in config: + self.name = config["name"] + + if "frequency" in config: + self.frequency = int(config["frequency"]) + + if "time" in config: + m = re.match(r"(?P[0-9]{1,2}):(?P[0-9]{1,2})",config["time"]).groupdict() + m_hour = int(m["hour"]) + m_minute = int(m["minute"]) + #what format should be time + self.time = m_hour*3600+m_minute*60 + + if "duration" in config: + s_duration = str(config["duration"]) + # Supported + # 6m + # 1h30m + # 1m30s + # 0m1s + # 0h5m10s + m = re.match(r"((?P[0-9]{1,2})h)?((?P[0-9]{1,2})m)?((?P[0-9]{1,2})s)?",s_duration).groupdict() + print(m) + time_in_sec = 0 + if m["hour"]: + time_in_sec += int(m["hour"])*3600 + if m["minute"]: + time_in_sec += int(m["minute"])*60 + if m["second"]: + time_in_sec += int(m["second"]) + self.duration = time_in_sec + + if "day" in config: + self.day = config["day"] + + if "month" in config: + self.month = config["month"] + + +class StationCollection: + stations = [] + def __init__(self): + pass + + def addStation(self,station:Station): + self.stations.append(station) + + def listall(self): + print("List of stations") + for s in self.stations: + print(s) + + def listToday(self): + print("Today will broadcast") + +class RadioConfig: + samplerate = 192000 + def __init__(self): + pass + + def readConfig(self, config): + if "samplerate" in config: + self.samplerate = int(config["samplerate"]) + +parser = argparse.ArgumentParser() +parser.add_argument("-c","--configfile") +parser.add_argument("-d","--debug",help="Output extra logs to see whats happening") +args = parser.parse_args() + +debug = False +if args.debug: + debug = True +config = configparser.ConfigParser() +if args.configfile: + config.read(args.configfile) +else: + config.read("number.ini") + +print(config.sections()) +radio_config = RadioConfig() +station_config = StationCollection() + +for section in config.sections(): + #print(section) + if section == "radio": + radio_config.readConfig(config[section]) + elif section[0:7] == "station": + station = Station() + station.readConfig(config[section]) + station_config.addStation(station) + +#print list of all stations +station_config.listall() + +#print list of todays stations to record +station_config.listToday() diff --git a/number.ini b/number.ini new file mode 100644 index 0000000..47dc936 --- /dev/null +++ b/number.ini @@ -0,0 +1,38 @@ +[radio] +samplerate=192000 + +[station0] +name=F03j +frequency=4181 +bw=1k +time=1:35 +duration=5m +day=every +month=mar,apr + +[station1] +name=F03j +frequency=10641 +bw=1k +time=7:35 +duration=6m +day=every +month=mar,apr + +[station2] +name=F03l +frequency=10641 +bw=1k +time=13:35 +duration=7m +day=every +month=mar,apr + +[station3] +name=P03 +frequency=6940 +bw=1k +time=19:35 +duration=8m +day=every +month=mar,apr \ No newline at end of file -- cgit v1.2.3