adif.py

  1. import re
  2. import datetime
  3. import time
  4.  
  5. ADIF_REC_RE = re.compile(r'<(.*?):(\d+).*?>([^<\t\f\v]+)')
  6.  
  7. def parse(fn):
  8.     raw = re.split('<eor>|<eoh>(?i)', open(fn).read() )
  9.     logbook =[]
  10.     for record in raw[1:-1]:
  11.         qso = {}
  12.         tags = ADIF_REC_RE.findall(record)
  13.         for tag in tags:
  14.                 qso[tag[0].lower()] = tag[2][:int(tag[1])]
  15.         logbook.append(qso)    
  16.     return logbook
  17.  
  18. def save(fn, data):
  19.     fh=open(fn,'w')
  20.     fh.write('ADIF.PY by OK4BX\nhttp://web.bxhome.org\n<EOH>\n')
  21.     for qso in data:
  22.         for key in sorted(qso):
  23.             value = qso[key]
  24.             fh.write('<%s:%i>%s  ' % (key.upper(), len(value), value))
  25.         fh.write('<EOR>\n')
  26.     fh.close()
  27.  
  28. def conv_datetime(adi_date, adi_time):
  29.     return datetime.datetime.strptime(adi_date+adi_time.ljust(6,"0"), "%Y%m%d%H%M%S")
  30.  
  31.