Advertisement
AntonioVillanueva

csv to adif

Feb 28th, 2025
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.69 KB | None | 0 0
  1. """
  2. Récupère un fichier CSV et le convertit en fichier ADIF
  3. F4LEC Antonio Villanueva Segura
  4.  
  5. Example CSV
  6. date,heure,call,freq,mode,RST_RX,points,RST_TX,my_call,
  7.  
  8. 2025-02-23,16:52,F4JEC,14.207,USB,59,58
  9. 2025-02-23,16:46,F6AXN,14.118,USB,57,59
  10. """
  11.  
  12. import csv
  13. from datetime import datetime
  14.  
  15. def bande(freq_mhz):
  16.     """ Renvoie la bande radioamateur selon la fréquence utilisée """
  17.     if freq_mhz:
  18.             #freq_mhz = float(freq)
  19.            
  20.             if 0.1357 <= freq_mhz <= 0.1378:
  21.                 band = "2200m" 
  22.  
  23.             if 0.472 <= freq_mhz <= 0.479:
  24.                 band = "630m"  
  25.            
  26.             if 1.8 <= freq_mhz <= 1.850:
  27.                 band = "160m"  
  28.                
  29.             if 3.5 <= freq_mhz <= 3.8:
  30.                 band = "80m"   
  31.                
  32.             if 5.3515 <= freq_mhz <= 5.3665:
  33.                 band = "60m"                   
  34.                                            
  35.             if 7.0 <= freq_mhz <= 7.2:
  36.                 band = "40m"
  37.  
  38.             if 10.100 <= freq_mhz <= 10.150:
  39.                 band = "30m"
  40.                
  41.             if 14.0 <= freq_mhz <= 14.350:
  42.                 band = "20m"   
  43.                
  44.             if 18.068 <= freq_mhz <= 18.168:
  45.                 band = "17m"               
  46.                
  47.             if 21.000 <= freq_mhz <= 21.450:
  48.                 band = "15m"   
  49.                
  50.             if 24.890 <= freq_mhz <= 24.990:
  51.                 band = "12m"                                                       
  52.                
  53.             if 28.000 <= freq_mhz <= 29.700:
  54.                 band = "10m"                   
  55.            
  56.             if 50.000 <= freq_mhz <= 52.000:
  57.                 band = "6m"
  58.                
  59.             if 144.000 <= freq_mhz <= 146.000:
  60.                 band = "2m"
  61.                
  62.             if 430.000 <= freq_mhz <= 440.000:
  63.                 band = "70cm"                                      
  64.                            
  65.             if 1240 <= freq_mhz <= 1300:
  66.                 band = "23cm"
  67.                
  68.             if 2300 <= freq_mhz <= 2450:
  69.                 band = "13cm"  
  70.                
  71.             return band    
  72.    
  73.  
  74. def csv_to_adif(csv_file, adif_file):
  75.     header = """<PROGRAMID:10>F4LEC_soft
  76. <ADIF_Ver:5>3.1.0
  77. <EOH>
  78. """
  79.  
  80.     with open(csv_file, 'r') as csvfile, open(adif_file, 'w') as adiffile:
  81.         reader = csv.reader(csvfile)
  82.         adiffile.write(header)
  83.  
  84.         for row in reader:
  85.             date, time, callsign, freq, mode, rst_rx, rst_tx =row
  86.            
  87.             # Convertir la fréquence en MHz en bande
  88.             if freq:
  89.                 freq_mhz = float(freq)
  90.                
  91.                 band = bande(freq_mhz );   
  92.                                                
  93.                 # Formater la date et l'heure
  94.                 qso_date = datetime.strptime(date, "%Y-%m-%d").strftime("%Y%m%d")
  95.                 time_on = datetime.strptime(time, "%H:%M").strftime("%H%M")
  96.                
  97.                 # Créer l'entrée ADIF
  98.                 adif_entry = f"""<CALL:{len(callsign)}>{callsign}<QSO_DATE:8>{qso_date}<TIME_ON:4>{time_on}<BAND:{len(band)}>{band}<FREQ:{len(freq)}>{freq}<MODE:{len(mode)}>LSB<RST_SENT:{len(rst_tx)}>{rst_tx}<RST_RCVD:{len(rst_rx)}>{rst_rx}<QSL_SENT:1>N<QSL_SENT_VIA:1>e<QSLMSG:11>TNX QSO 73s<APP_EQSL_AG:0><GRIDSQUARE:0><EQSL_QSL_RCVD:0><EQSL_QSLRDATE:0><EOR>"""
  99.                 adif_entry +='\n'
  100.                
  101.                 print ("DEBUG :" ,adif_entry)
  102.                
  103.                 adiffile.write(adif_entry)
  104.  
  105. # Utilisation
  106. csv_file = "log.csv"
  107. adif_file = "adif.adi"
  108. csv_to_adif(csv_file, adif_file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement