Created
December 3, 2024 19:11
-
-
Save gmag11/0df9398cb8efb37cca2a6d6ca893fbe2 to your computer and use it in GitHub Desktop.
Migration to Lubelogger from Sprit Monitor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Script para exportar los datos de Sprit Monitor e importarlos en una instancia de LubeLogger, incluyendo campos personalizados