Last active
October 13, 2023 03:12
-
-
Save CarlosRA97/12b95d0d524e8bb52cb54feccbb91774 to your computer and use it in GitHub Desktop.
Revisions
-
CarlosRA97 revised this gist
Oct 13, 2023 . 1 changed file with 8 additions and 3 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -104,8 +104,13 @@ def writer_format(info: list): new_info.insert(i, ".") return new_info def activate(title: str, maximize = False): w = pygetwindow.getWindowsWithTitle(title)[0] if not w.isActive: w.activate() if maximize: w.maximize() def write_to_active_window(info: list): @@ -148,7 +153,7 @@ def save(info): save(info) activate("K-HOTEL for Windows", maximize=True) time.sleep(1) write_to_active_window(info) pyautogui.click(x=add_line_x, y=add_line_y, clicks=1, interval=0, button='left') -
CarlosRA97 revised this gist
Oct 13, 2023 . 1 changed file with 128 additions and 32 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -1,64 +1,160 @@ #!/usr/local/bin/python3 from datetime import datetime from mrz.checker.td1 import TD1CodeChecker from mrz.checker.td2 import TD2CodeChecker from mrz.checker.td3 import TD3CodeChecker import pyautogui import pygetwindow import time from getpass import getpass def parse_date(date: datetime): return datetime.strptime(date, "%y%m%d") def add_year(date: datetime, year: int): return datetime(date.year+year, date.month, date.day, date.hour, date.minute, date.second, date.microsecond, date.tzinfo) def print_relevant_info(relevant_info: list): print(str.join(" ",relevant_info)) def validity_years(birth_date: datetime): now = datetime.now() yo = now.year-birth_date.year years = 0 if (5 <= yo < 30): years = 5 elif (30 <= yo < 70): years = 10 return years def document_type_parse(document_type, country): if document_type == "ID" and country == "ESP": document_type = "D" elif document_type == "ID" and country != "ESP": document_type = "I" return document_type def relevant_info(fields): document_type = document_type_parse(fields.document_type, fields.country) birth_date = parse_date(fields.birth_date) expiry_date = parse_date(fields.expiry_date) validity_year = validity_years(birth_date) expiry_date = add_year(expiry_date, -validity_year) document_number = fields.document_number if fields.optional_data != "": document_number = fields.optional_data surname = fields.surname.split(" ") return [ document_type, document_number, expiry_date.strftime("%d%m%Y") ] + surname + [ fields.name, fields.sex, birth_date.strftime("%d%m%Y"), fields.nationality ] def clean_mrz_input(mrz: str): mrz = mrz.replace(";", "<") mrz = mrz.replace("\n", "") return mrz def mrz_parser(mrz: str): mrz = clean_mrz_input(mrz) if (len(mrz) == 3*30): # TD1 ID Cards mrz = mrz[0:30] + "\n" + mrz[30:60] + "\n" + mrz[60:90] check = TD1CodeChecker(mrz) if bool(check): fields = check.fields() return relevant_info(fields) elif (len(mrz) == 2*36): # TD2 mrz = mrz[0:36] + "\n" + mrz[36:36*2] check = TD2CodeChecker(mrz) if bool(check): fields = check.fields() return relevant_info(fields) elif (len(mrz) == 2*44): # TD3: Passports mrz = mrz[0:44] + "\n" + mrz[44:44*2] check = TD3CodeChecker(mrz) if bool(check): fields = check.fields() print(fields) return relevant_info(fields) else: print("Formato erroneo") return None return None def writer_format(info: list): new_info = info inserts = [2,5,-4,-3] for i in inserts: new_info.insert(i, ".") return new_info def activate(title: str): pygetwindow.getWindowsWithTitle(title)[0].activate() def write_to_active_window(info: list): info = writer_format(info) info = str.join("",info) info = info.split(".") for d in info: pyautogui.write(d) pyautogui.press('tab') def save(info): today = str(datetime.now().strftime("%d%m%Y")) fileName = "C:/Users/torre/Desktop/FICHEROS POLICIA/DNIESCANEADO/Clientes-{}.txt".format(today) output = "{}\n{}\n{}".format( "\n----- Check-In: " + str(datetime.now().strftime("[%d/%m/%Y, %H:%M:%S]")) + " ------ ", str.join(" ",info), "-------------------------------------------\n" ) f = open(fileName, "a") f.write(output) f.close() add_line_x = 880 add_line_y = 620 print("Use el lector para escanear los documentos de identidad\n\n") print("Formato:\nTipo Doc. -- NºDoc -- Fec. Expiracion -- Apell. -- Nom. -- Sexo -- Fec. Nac. -- Nac") while True: mrz = getpass("") if (mrz == "q"): activate("K-HOTEL for Windows") exit() info = mrz_parser(mrz) if (info == None): continue save(info) activate("K-HOTEL for Windows") time.sleep(1) write_to_active_window(info) pyautogui.click(x=add_line_x, y=add_line_y, clicks=1, interval=0, button='left') time.sleep(1) activate("Lector Doc. Identidad") print("\n------ Cliente -----") print_relevant_info(info) print("--------------------") -
CarlosRA97 revised this gist
Oct 4, 2023 . 1 changed file with 25 additions and 33 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -3,19 +3,13 @@ from mrz.checker.td2 import TD2CodeChecker from mrz.checker.td3 import TD3CodeChecker from getpass import getpass def parse_date(date): return datetime.strptime(date, "%y%m%d").strftime("%d/%m/%Y") def print_relevant_info(fields): print(fields.document_type, fields.optional_data, parse_date(fields.expiry_date), fields.surname, @@ -24,48 +18,46 @@ def mrz_parser(mrz): parse_date(fields.birth_date), fields.nationality ) def mrz_parser(mrz): mrz = mrz.replace(";", "<") mrz = mrz.replace("\n", "") if (len(mrz) == 3*30): # TD1 ID Cards mrz = mrz[0:30] + "\n" + mrz[30:60] + "\n" + mrz[60:90] check = TD1CodeChecker(mrz) if bool(check): fields = check.fields() print_relevant_info(fields) return elif (len(mrz) == 2*36): # TD2 mrz = mrz[0:36] + "\n" + mrz[36:36*2] check = TD2CodeChecker(mrz) if bool(check): fields = check.fields() print_relevant_info(fields) return elif (len(mrz) == 2*44): mrz = mrz[0:44] + "\n" + mrz[44:44*2] check = TD3CodeChecker(mrz) if bool(check): fields = check.fields() print_relevant_info(fields) return else: print("") #print(mrz) while True: mrz = getpass("") if (mrz == "q"): exit() print("\n------ Cliente -----") mrz_parser(mrz) print("--------------------") -
CarlosRA97 created this gist
Oct 4, 2023 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,72 @@ from datetime import datetime from mrz.checker.td1 import TD1CodeChecker from mrz.checker.td2 import TD2CodeChecker from mrz.checker.td3 import TD3CodeChecker def parse_date(date): return datetime.strptime(date, "%y%m%d").strftime("%d/%m/%Y") def mrz_parser(mrz): mrz = mrz.replace(";", "<") mrz = mrz.replace("\n", "") if (len(mrz) == 3*30): # TD1 ID Cards mrz = mrz[0:30] + "\n" + mrz[30:60] + "\n" + mrz[60:90] check = TD1CodeChecker(mrz) if bool(check): fields = check.fields() print(fields.document_type, fields.optional_data, parse_date(fields.expiry_date), fields.surname, fields.name, fields.sex, parse_date(fields.birth_date), fields.nationality ) return elif (len(mrz) == 2*36): # TD2 mrz = mrz[0:36] + "\n" + mrz[36:36*2] check = TD2CodeChecker(mrz) if bool(check): fields = check.fields() print(fields.document_type, fields.optional_data, parse_date(fields.expiry_date), fields.surname, fields.name, fields.sex, parse_date(fields.birth_date), fields.nationality ) return elif (len(mrz) == 2*44): mrz = mrz[0:44] + "\n" + mrz[44:44*2] check = TD3CodeChecker(mrz) if bool(check): fields = check.fields() print(fields.document_type, fields.optional_data, parse_date(fields.expiry_date), fields.surname, fields.name, fields.sex, parse_date(fields.birth_date), fields.nationality ) return else: print(mrz) with open("Clientes.txt", "r") as clientes: for mrz in clientes: print("------ Cliente -----") mrz_parser(mrz) print("--------------------")