Búsqueda de sitios web

Cree una GUI para extraer información del número VIN usando Python


Un número de identificación del vehículo (VIN) es un código único de 17 dígitos asignado a cada vehículo fabricado después de 1981. Contiene información sobre la marca, modelo, año de fabricación, país de origen y otros detalles relevantes del vehículo. En este manual de instrucciones, aprenderemos cómo crear una interfaz gráfica de usuario (GUI) utilizando el lenguaje de programación Python para extraer información del vehículo a partir de un número VIN.

Requisitos previos

Antes de profundizar en los detalles de la creación de una GUI, debe tener un conocimiento básico de la programación Python, los conceptos de programación orientada a objetos (OOP) y cómo trabajar con el módulo Tkinter.

Lista de configuraciones recomendadas

  • pip install tkinter, pandas, solicitudes

  • Se espera que el usuario tenga acceso a cualquier IDE independiente como VS-Code, PyCharm, Atom o Sublime Text.

  • Incluso se pueden utilizar compiladores de Python en línea, como Kaggle.com, la plataforma Google Cloud o cualquier otro.

  • Versión actualizada de Python. Al momento de escribir el artículo he usado la versión 3.10.9.

  • Conocimiento del uso del cuaderno Jupyter.

  • El conocimiento y la aplicación del entorno virtual serían beneficiosos, pero no necesarios; también sería útil el uso de API en algún contexto.

Pasos necesarios para realizar la tarea.

Paso 1: Importe los módulos necesarios

from tkinter import*
import requests

A continuación, necesitamos importar las bibliotecas necesarias en su script Python. En este caso, necesitamos la biblioteca de solicitudes para realizar solicitudes de API y la biblioteca tkinter para crear la interfaz GUI. Aquí está la declaración de importación:

Paso 2: cree una función para obtener datos VIN

Ahora, necesita crear una función que obtenga la información del vehículo a partir del número VIN mediante una API. En este ejemplo, utilizamos la API del decodificador VIN de la NHTSA (Administración Nacional de Seguridad del Tráfico en las Carreteras) para obtener la información del vehículo. Aquí está la función:

def get_vin_data(vin):
   url = f'https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{vin}?format=json'
   response = requests.get(url)
   if response.status_code == 200:
      return response.json()['Results']
   else:
      return None

Esta función toma un número VIN como entrada y devuelve la información del vehículo como un objeto JSON.

Paso 3: cree una interfaz GUI para ingresar el VIN y mostrar la información del vehículo:

A continuación, debe crear una interfaz GUI que permita al usuario ingresar el número VIN y muestre la información del vehículo como salida. En este ejemplo, utilizamos la biblioteca tkinter para crear los elementos de la GUI. Aquí está el código:

def display_vin_data():
   vin = vin_entry.get()
   data = get_vin_data(vin)
   if data:
      for d in data:
         info_text.insert(END, f"{d['Variable']} : {d['Value']}\n")
   else:
      info_text.insert(END, "No data found for the VIN provided.\n")

root = Tk()
root.title("VIN Decoder")

vin_label = Label(root, text="Enter VIN: ")
vin_label.pack()

vin_entry = Entry(root)
vin_entry.pack()

submit_button = Button(root, text="Decode", command=display_vin_data)
submit_button.pack()

info_text = Text(root)
info_text.pack()

root.mainloop()

Este código crea una ventana con una etiqueta, un cuadro de texto, un botón y otro cuadro de texto. El usuario puede ingresar el número VIN en el cuadro de texto y hacer clic en el botón "Decodificar" para mostrar la información del vehículo en el segundo cuadro de texto.

Paso 4: Muestre los resultados como un documento técnico:

Si desea mostrar la información del vehículo como un documento técnico, puede modificar la función display_vin_data para generar el documento en el formato deseado. Aquí está el código actualizado.

def display_vin_data():
   vin = vin_entry.get()
   data = get_vin_data(vin)
   if data:
      doc_text = f"Vehicle Information\n{'='*20}\n"
      for d in data:
         doc_text += f"{d['Variable']} : {d['Value']}\n"
      info_text.insert(END, doc_text)
   else:
      info_text.insert(END, "No data found for the VIN provided.\n")

Este código genera un documento técnico en el siguiente formato

Vehicle Information
====================
<Variable 1> : <Value 1>
<Variable 2> : <Value 2>
...
<Variable n> : <Value n>

Código final, programa.

import requests
from tkinter import *

def get_vin_data(vin):
   url = f'https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{vin}?format=json'
   response = requests.get(url)
   if response.status_code == 200:
      return response.json()['Results']
   else:
      return None

def display_vin_data():
   vin = vin_entry.get()
   data = get_vin_data(vin)
   if data:
      doc_text = f"Vehicle Information\n{'='*20}\n"
      for d in data:
         doc_text += f"{d['Variable']} : {d['Value']}\n"
      info_text.insert(END, doc_text)
   else:
      info_text.insert(END, "No data found for the VIN provided.\n")

root = Tk()
root.title("VIN Decoder")

vin_label = Label(root, text="Enter VIN: ")
vin_label.pack()

vin_entry = Entry(root)
vin_entry.pack()

submit_button = Button(root, text="Decode", command=display_vin_data)
submit_button.pack()

info_text = Text(root)
info_text.pack()

root.mainloop() 

Producción

Ejemplos del mundo real

Ejemplo 1: Recuperar información del vehículo a partir de un número VIN

  • El usuario ingresa un número VIN en el campo de entrada (por ejemplo, 1HGCM82633A004352)

  • El usuario ingresa una clave API válida en el campo de entrada

  • El usuario hace clic en el botón "Enviar"

  • La GUI muestra la información del vehículo recuperada de la API (por ejemplo, Honda Accord 2003)

Producción

La pantalla solicita la entrada de VIN del usuario.

Ahora podemos ver la salida del VIN como deseamos, por lo que esto demuestra que nuestra aplicación está funcionando.

Ejemplo 2: Manejo de errores para un número VIN no válido

  • El usuario ingresa un número VIN no válido en el campo de entrada (por ejemplo, 1234567890)

  • El usuario ingresa una clave API válida en el campo de entrada

  • El usuario hace clic en el botón "Enviar"

  • La GUI muestra un mensaje de error que indica que el número VIN no es válido e identifica el error.

En el segundo escenario, lo estamos probando para verificar errores, ya que este es un paso de control de calidad que nos permitirá verificar la validez de nuestra salida.

Ejemplo 3: Manejo de errores para una clave API incorrecta

  • El usuario ingresa un número VIN válido en el campo de entrada (por ejemplo, JM1BK123451234567)

  • El usuario ingresa una clave API incorrecta o no válida en el campo de entrada

  • El usuario hace clic en el botón "Enviar"

  • La GUI muestra un mensaje de error que indica que hay algún problema con algunos de los dígitos del VIN, pero hace todo lo posible para encontrar el resultado más cercano posible y así demuestra que esto también se puede usar para verificar valores faltantes y análisis de predicción.

Conclusión

Para usar este script, guárdelo como un archivo Python con una extensión .py y ejecútelo usando el intérprete de Python. Una vez que se abra la ventana GUI, ingrese el número VIN en el cuadro de texto y haga clic en el botón "Decodificar" para buscar y mostrar la información del vehículo como un documento técnico.

Crear una GUI para extraer información del vehículo a partir de un número VIN usando Python es una habilidad útil para cualquier persona interesada en la industria automotriz o la historia de los vehículos. Si sigue los pasos descritos en este manual de instrucciones, podrá integrar fácilmente esta funcionalidad en sus propios programas y aplicaciones Python. Si es un entusiasta de los automóviles, un mecánico o un historiador de vehículos, esta herramienta puede ayudarle a obtener información valiosa sobre los vehículos que le interesan.

Nota: Este ejemplo utiliza la API del decodificador VIN de NHTSA, que tiene un límite de 25 solicitudes por día para usuarios no registrados. Si necesita realizar más solicitudes, puede registrarse para obtener una clave API y utilizarla en la URL.

Artículos relacionados: