Skip to content

Instantly share code, notes, and snippets.

@gmag11
Created December 3, 2024 19:11
Show Gist options
  • Save gmag11/0df9398cb8efb37cca2a6d6ca893fbe2 to your computer and use it in GitHub Desktop.
Save gmag11/0df9398cb8efb37cca2a6d6ca893fbe2 to your computer and use it in GitHub Desktop.
Migration to Lubelogger from Sprit Monitor
import csv
from datetime import datetime
import sys
# Función para convertir los datos
def convert_csv(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8', newline='') as outfile:
# Leer el archivo CSV de entrada
reader = csv.DictReader(infile, delimiter=';')
# Definir los encabezados del archivo de salida
fieldnames = ['Date', 'Odometer', 'FuelConsumed', 'Cost', 'IsFillToFull', 'MissedFuelUp', 'Notes', 'extrafield_BC-Consumption', 'extrafield_BC-Speed']
writer = csv.DictWriter(outfile, fieldnames=fieldnames, quoting=csv.QUOTE_MINIMAL, quotechar='"')
# Escribir el encabezado del archivo de salida
writer.writeheader()
for row in reader:
# Convertir la fecha al formato deseado (dd.mm.yyyy a dd/mm/yyyy)
date = datetime.strptime(row['Date'], '%d.%m.%Y').strftime('%d/%m/%Y')
# Odometer en el formato correcto (sin parte decimal)
odometer = int(float(row['Odometer'].replace(',', '.')))
# FuelConsumed con formato de coma para decimales y entre comillas si es necesario
fuel_consumed = row['Quantity'].replace(',', '.')
fuel_consumed = fuel_consumed.replace('.', ',') if '.' in fuel_consumed else fuel_consumed
# Cost con formato de coma para decimales y entre comillas si es necesario
cost = row['Total price'].replace(',', '.')
cost = cost.replace('.', ',') if '.' in cost else cost
# IsFillToFull: Asumimos que el tipo '1' representa un llenado completo
is_fill_to_full = True if row['Type'] == '1' else False
# MissedFuelUp: Siempre False, ya que no hay datos que indiquen lo contrario
missed_fuel_up = False
# Notes: Contenido de 'Company'
notes = row['Company']
# Consumo con formato de coma para decimales y entre comillas si es necesario
consumo = row['BC-Consumption'].replace(',', '.')
consumo = consumo.replace('.', ',') if '.' in consumo else consumo
# Velocidad con formato de coma para decimales y entre comillas si es necesario
velocidad = row['BC-Speed'].replace(',', '.')
velocidad = velocidad.replace('.', ',') if '.' in velocidad else velocidad
# Escribir la fila convertida
writer.writerow({
'Date': date,
'Odometer': odometer,
'FuelConsumed': fuel_consumed,
'Cost': cost,
'IsFillToFull': is_fill_to_full,
'MissedFuelUp': missed_fuel_up,
'Notes': notes,
'extrafield_BC-Consumption': consumo,
'extrafield_BC-Speed': velocidad
})
# Ejecutar solo si se llama desde la línea de comandos
if __name__ == "__main__":
if len(sys.argv) < 3:
print("Uso: python convert_csv.py <archivo_entrada> <archivo_salida>")
else:
input_file = sys.argv[1]
output_file = sys.argv[2]
convert_csv(input_file, output_file)
print(f"Conversión completa. Archivo guardado en {output_file}.")
@gmag11
Copy link
Author

gmag11 commented Dec 4, 2024

Script para exportar los datos de Sprit Monitor e importarlos en una instancia de LubeLogger, incluyendo campos personalizados

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment