#!/usr/bin/python
# coding: utf8
# Objectif du script: mettre en forme les données issues du fichier "wsjtx.log"
# Wsjtx ou JTDX
# pour les recharger dans une base de données supportant des requêtes Sql
# Fichier issu d'une copie du log de Wsjtx
# Sortie sur un fichier csv (pour Sqlite)
# nécessite une commande Sqlite (non incluse dans ce script)
# pour insert de nouveaux enregistrements dans la table Mes_qso
# Pierre Schuster F5BQV développement sous Windows en Python 3.11
from tkinter import * #Interface graphique
root = Tk()
my_entry = Entry(root,textvariable ="Choix",width=10,font =20, bg="aqua")
my_entry.pack()
root.geometry ("450x325")
root.title("Préparation ajout à ma DB ")
ctrid = IntVar()
def afficher():
global ctrid # variable globale
ctrid = 00000
ctrid =my_entry.get()
def Choix_Sql():
global Base_type
Base_type = 'Sql'
print(Base_type + ' Après')
def Choix_Acc():
global Base_type
Base_type = 'Acc'
def Continue():
print(Base_type + ' Après quit') # suit avancement
boutonA=Button(root, text= "Entrer ID de reprise dans DB puis clic ici",bg = "yellow",font =16,command=afficher)
boutonA.pack(padx=20, pady=10)
boutonB=Button(root, text= "Mise à jour vers Access",bg ="yellow",font =16, command=Choix_Acc)
boutonB.pack(padx=20, pady=15)
boutonS=Button(root, text="Mise à jour vers Sql", bg= "yellow",font =16,command=Choix_Sql)
boutonS.pack(padx=20, pady=20)
boutonR=Button(root, text= "Continuer Clic X barre du haut",bg = "yellow",font =16, command= Continue)
boutonR.pack(padx=20, pady=25)
root.mainloop()
Ctr_i = int(ctrid)
Ctr5 = Ctr_i # Id du futur record
#print (Ctr5) # pour test
part02 = ("")
ctrligne =0
erreur =""
from tkinter import filedialog # choisir fichier In
choix = filedialog.askopenfilename()
print ("Fichier in : " + choix)
input = open ( choix , "r", encoding = "utf-8")
output = open( "c:/temp/out_wsjtxlog.txt", "w" ) #fichier intermédiaire supprimé en fin
# Ecrire une ligne pour chaque ligne lue dans le fichier in
for line in input:
part02 =line
CtrA = ('%05d' % Ctr5) # Ctr string pour concatenation
# Insertion d'un champ bande en fonction du champ frequence(FT8 et FT4)
if ",1.8" in part02 :
part02 = line.replace (",1.8",",160m,1.8")
elif ",3.5" in part02 :
part02 = line.replace (",3.5",",80m,3.5")
elif ",5.3" in part02 :
part02 = line.replace (",5.3",",60m,5.3")
elif ",7.0" in part02 :
part02 = line.replace (",7.0",",40m,7.0")
elif ",10.1" in part02 :
part02 = line.replace (",10.1",",30m,14.0")
elif ",14.0" in part02 :
part02 = line.replace (",14.0",",20m,14.0")
elif ",18.1" in part02 :
part02 = line.replace (",18.1",",17m,18.1")
elif ",21." in part02 :
part02 = line.replace (",21.",",15m,21.")
elif ",24.9" in part02 :
part02 = line.replace (",24.9",",12m,24.9")
elif ",28." in part02 :
part02 = line.replace (",28." ,",10m,28.")
elif ",50." in part02 :
part02 = line.replace (",50." ,",6m,50.")
elif ",144." in part02 :
part02 = line.replace (",144.",",2m,144.")
pass
outputline = str (CtrA) + ',' + part02 # ajout compteur en début de ligne
output.writelines(outputline)
ctrligne = ctrligne +1
# print (ctrligne)
Ctr5 = Ctr5 +1 # +1 après écriture
input.close()
output.close()
print (Base_type)
input = open( "c:/temp/out_wsjtxlog.txt", "r" )
output = open( "c:/temp/Upd_log_FT8_" + Base_type +".csv", "w", encoding ="utf-8")
# Ecrire une ligne en-tete pour fichier CSV Access
if "Acc" in Base_type:
#écriture en-tête uniquement pour base access
Line_01 = "Id,Qso_date,Time_on,Date_off,Time_off,Call_c,Grid,Band,Freq,Mode,Rst_sent,Rst_rcvd,Tx_pwr,Country,Name,Note\n"
output.writelines(Line_01)
pass
# Ecrire une ligne pour chaque ligne lue dans le fichier in
for line in input:
output.writelines(line)
input.close()
output.close()
print ("Terminé fichier dispo dans /Temp/Upd_Log_FT8_" + Base_type + ".csv")
import os # suppression fichier temporaire
print (ctrligne)
path = "C:/temp/out_wsjtxlog.txt"
os.remove(path)