#!/usr/bin/python3 import os from airspyhf import * from ctypes import * import time import sys 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 = [] if config["day"] == "every": self.day = [1,2,3,4,5,6,7] else: #Supported # lowercase mon,tue,wen,thu,fri,sat,sun days = config["day"].lower().split(",") if "mon" in days: self.day.append(1) if "tur" in days: self.day.append(2) if "wen" in days: self.day.append(3) if "thu" in days: self.day.append(4) if "fri" in days: self.day.append(5) if "sat" in days: self.day.append(6) if "sun" in days: self.day.append(7) if "month" in config: self.month = [] #Supported #jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec month = config["month"].lower().split(",") if "jan" in month: self.month.append(1) if "feb" in month: self.month.append(2) if "mar" in month: self.month.append(3) if "apr" in month: self.month.append(4) if "may" in month: self.month.append(5) if "jun" in month: self.month.append(6) if "jul" in month: self.month.append(7) if "aug" in month: self.month.append(8) if "sep" in month: self.month.append(9) if "oct" in month: self.month.append(10) if "nov" in month: self.month.append(11) if "dec" in month: self.month.append(12) def __str__(self): return f"{self.name} freq:{self.frequency} time:{self.time} day:{self.day} month:{self.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()