def main(): # number of minutes in the QSO period MIN_QSO_UNIXTIME = toUnixTime(u.MIN_QSO_DATE) QSO_MINUTES = (int)(toUnixTime(u.MAX_QSO_DATE) - MIN_QSO_UNIXTIME) / 60 # check log directories checkDirs() # delete old logs deleteLogs() # init callsigns list callsigns = [] for i in range(0, u.CALLSIGN_NUM): uid = uuid.uuid4() callsigns.append(uid.hex) # generate log for each callsign qsocount = 0 qslcount = 0 for callsign in callsigns: f = openLog(callsign) qso_num = random.randint(u.MIN_QSO_NUM, u.MAX_QSO_NUM) for i in range(0, qso_num): qsocount += 1 othercallsign = callsigns[random.randint(0, u.CALLSIGN_NUM - 1)] minutes = random.randint(0, QSO_MINUTES) timestamp = toTimeStamp(MIN_QSO_UNIXTIME + (minutes * 60)) frequency = random.randint(u.MIN_QSO_FREQ + u.QSO_FREQ_VARIANCE, u.MAX_QSO_FREQ - u.QSO_FREQ_VARIANCE) mode = u.modes[random.randint(0, 3)] if callsign <> othercallsign: f.write(logLine(othercallsign, timestamp, frequency, mode)) if random.randint(1, 100) <= u.QSL_QSO_RATE: qslcount += 1 t = toUnixTime(timestamp) minutes = random.randint(-u.QSO_TIME_VARIANCE, u.QSO_TIME_VARIANCE) t += minutes * 60 timestamp2 = toTimeStamp(t) frequency2 = frequency + random.randint(-u.QSO_FREQ_VARIANCE, u.QSO_FREQ_VARIANCE) f2 = openLog(othercallsign) f2.write(logLine(callsign, timestamp2, frequency2, mode)) f2.close() f.close() print 'QSO: ' + str(qsocount) print 'QSL: ' + str(qslcount) return
def main(): starttime = time.time() db = _mysql.connect('localhost', 'wtol', 'wtol', 'wtol') db.query('DELETE FROM qso') for i in range(0, 16): for j in range(0, 16): logpath = getLogPath(i, j) print 'scanning ' + logpath filelist = [ f for f in os.listdir(logpath) if f.endswith(".log") ] for filename in filelist: callsign = filename.split('.') callsign = callsign[0] for line in open(logpath + '/' + filename, 'r'): line = line.split('|') callsign_dx = line[0] qso_timestamp = line[1] qso_frequency = line[2] qso_mode = line[3] qso_timestamp_min = toTimeStamp(toUnixTime(qso_timestamp) - (60 * u.QSO_TIME_VARIANCE)) qso_timestamp_max = toTimeStamp(toUnixTime(qso_timestamp) + (60 * u.QSO_TIME_VARIANCE)) qso_frequency_min = str(int(qso_frequency) - u.QSO_FREQ_VARIANCE) qso_frequency_max = str(int(qso_frequency) + u.QSO_FREQ_VARIANCE) sql = "SELECT COUNT(callsign) AS tot FROM qso WHERE (callsign = '" + callsign_dx + "') AND (callsign_dx = '" + callsign + "') AND (datestart BETWEEN '" + qso_timestamp_min + "' AND '" + qso_timestamp_max + "') AND (frequency BETWEEN '" + qso_frequency_min + "' AND '" + qso_frequency_max + "') AND (mode = '" + qso_mode + "') AND (qsl = 0)" result = getQueryResult(db, sql) if result[0][0] == '0': qsl = '0' else: qsl = '1' sql = "UPDATE qso SET qsl = 1 WHERE (callsign = '" + callsign_dx + "') AND (callsign_dx = '" + callsign + "') AND (datestart BETWEEN '" + qso_timestamp_min + "' AND '" + qso_timestamp_max + "') AND (frequency BETWEEN '" + qso_frequency_min + "' AND '" + qso_frequency_max + "') AND (qsl = 0)" db.query(sql) sql = "INSERT INTO qso VALUES ('" + callsign + "', '" + callsign_dx + "', '" + qso_timestamp + "', '" + qso_frequency + "', '" + qso_mode + "', " + qsl + ")" try: db.query(sql) except: pass print 'Elapsed time: ' + str(time.time() - starttime) + ' seconds' return