Card-checker / app.py
Muhammad Nur Arasy
Update app.py
9f58923
import gradio as gr
def check_credit_card(card_number: str):
card_number = card_number.replace(" ", "") # remove spaces
if not card_number.isdigit(): # check if the input is numeric
return "Invalid input. Please enter a numeric credit card number."
card_number = int(card_number)
# convert card number to string to easily calculate its length
card_number_str = str(card_number)
digit = len(card_number_str)
# check if the card number has a valid length
if digit != 13 and digit != 16 and digit != 15:
return "INVALID"
# split the card number into individual digits and store them in a list
number = [int(x) for x in card_number_str[::-1]]
original_number = number.copy() # create a copy of the number list
# apply Luhn's algorithm
for i in range(1, digit, 2):
original_number[i] *= 2
# sum the digits of the numbers in original_number
v = sum(sum(divmod(x, 10)) for x in original_number)
# check if the card is a Visa, MasterCard, or American Express card
if digit == 13:
if number[-1] == 4 and v % 10 == 0:
return "VISA"
elif digit == 15:
if number[-1] == 3 and v % 10 == 0 and number[-2] in [4, 7]:
return "AMEX"
elif digit == 16:
if number[-1] == 4 and v % 10 == 0:
return "VISA"
elif number[-1] == 5 and v % 10 == 0 and number[-2] in [1, 2, 3, 4, 5]:
return "MASTERCARD"
return "INVALID"
iface = gr.Interface(fn=check_credit_card,
inputs=gr.inputs.Textbox(label="Credit Card Number"),
outputs="text",
layout="vertical",
title="Arasy's credit/debit card checker"
)
iface.launch()