#!/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

         

     outputlinestr (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