From 737ffb39d813231b76ca9742a145e1b520f915a1 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 24 Jan 2020 16:07:54 -0500 Subject: [PATCH] Add a Python script for converting all.txt to Cabrillo. --- all2cab.py | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 all2cab.py diff --git a/all2cab.py b/all2cab.py new file mode 100644 index 000000000..7c344c705 --- /dev/null +++ b/all2cab.py @@ -0,0 +1,125 @@ +import sys +from datetime import datetime +mycall="K1JT" +mygrid="FN20" + +# Keyed with hiscall: +Freq={} +T0={} +RcvdExch={} +Grid={} + +# Keyed with hiscall_band: +Staged={} +TimeLogged={} +QSOinProgress={} +# QSOinProgress bit values: +# 1 He called me +# 2 I called him +# 4 Received his exchange +# 8 Received his Roger +# 16 Sent Roger +# 32 Staged for logging + +def isGrid(g): + """Return True if g is a valid grid4 and not RR73""" + if len(g)!=4 or g=="RR73": return False + if ord(g[0:1])ord('R'): return False + if ord(g[1:2])ord('R'): return False + if ord(g[2:3])ord('9'): return False + if ord(g[3:4])ord('9'): return False + return True + +if len(sys.argv)!=4: + print "Usage: python all2cab.py " + print "Example: python all2cab.py K1JT FN20 all_wwdigi_2019.txt" + exit() + +f=open(sys.argv[3],mode='r') +ss=f.readlines() +f.close +dt0=datetime.strptime(ss[0][0:13],"%y%m%d_%H%M%S") +iz=len(ss) +nqso=0 +hiscall_band="" + +for i in range(iz): + s=ss[i][0:80].strip() + dt=datetime.strptime(s[0:13],"%y%m%d_%H%M%S") + tx=" Tx " in s #True if this is my transmission + w=s.split() + if len(w)<10: continue + if w[7]=="CQ": + cq=True + if w[8].isalpha(): + s=s.replace(" CQ "," CQ_") + w=s.split() + if len(w)<10: continue + c1=w[7] + c2=w[8] + c3=w[9] + roger = c3=="R" + if roger: c3=w[10] + cq = (c1=="CQ" or c1[0:3]=="CQ_") + if cq: + Grid[c2]=c3 + + hiscall="" + if tx and not cq: + hiscall=c1 + if c1==mycall: + freq=int(1000.0*float(s[13:23])) + int((int(s[42:47]))/1000) + hiscall=c2 + Freq[hiscall]=freq + MHz="%3d" % int(float(s[13:23])) + hiscall_band=hiscall+MHz + n=QSOinProgress.get(hiscall_band,0) + n = n | 1 #He called me + if roger or c3=="RR73" or c3=="RRR" or c3=="73": + n = n | 8 # Rcvd Roger + if isGrid(c3): + hisgrid=c3 + RcvdExch[hiscall]=hisgrid + n = n | 4 #Received his exchange + else: + g=Grid.get(hiscall,"") + if isGrid(g): + RcvdExch[hiscall]=g + n = n | 4 #Received his exchange + QSOinProgress[hiscall_band]=n + + if len(hiscall)>=3: + MHz="%3d" % int(float(s[13:23])) + hiscall_band=hiscall+MHz + if tx: + n=QSOinProgress.get(hiscall_band,0) + n = n | 2 #I called him + if roger or c3=="RR73" or c3=="RRR" or c3=="73": + n = n | 4 | 16 #Rcvd Exch, Sent Roger + if c3=="RR73" or c3=="RRR" or c3=="73": + n = n | 8 #Rcvd Exch, Sent Roger + QSOinProgress[hiscall_band]=n + T0[hiscall]=dt + + if len(hiscall_band)<5 or len(hiscall)<3: continue + + if QSOinProgress.get(hiscall_band,0)>=31: + n=QSOinProgress.get(hiscall_band,0) + n = n | 32 + QSOinProgress[hiscall_band]=n + t=str(T0[hiscall])[0:16] + t=t[0:13] + t[14:16] + buf="QSO: %5d DG %s %-10s %s %-10s %s" % (Freq[hiscall],t,\ + mycall,mygrid,hiscall,RcvdExch.get(hiscall," ")) + MHz="%3d" % int(float(s[13:23])) + hiscall_band=hiscall+MHz + t=Staged.get(hiscall_band,"") + time_diff=-1 + if TimeLogged.get(hiscall_band,0)!=0: + time_diff=(T0[hiscall] - TimeLogged[hiscall_band]).total_seconds() + if time_diff == -1 or time_diff > 180: #Log only once within 3 min + Staged[hiscall_band]=buf #Staged for logging + nqso=nqso+1 + TimeLogged[hiscall_band]=T0[hiscall] + print buf #For now, log anything staged + del QSOinProgress[hiscall_band]