예제 #1
0
파일: generatelogs.py 프로젝트: fabiux/wtol
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
예제 #2
0
파일: validateqsos.py 프로젝트: fabiux/wtol
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