import re, csv
import pandas as pd
class OTPAnalysis:
def init(self) → None:
self.total_otp =
self.count = 0
self.df = None
self.sender_count = {}
self.senders_above_5 = set()
def read_excel_file(self):
try:
self.df = pd.read_excel("100-contacts.xlsx")
self.otp_filtration(self.df)
except pd.errors.ParserError as e:
print(f"Error parsing CSV file: {e}")
exit(1)
def otp_filtration(self, data):
for index, row in data.iterrows():
send = str(row["sender"])
preview = str(row["Content"])
try:
pattern = (r"\b\d{4,8}\b")
pattern_match = re.search(pattern, preview)
if pattern_match:
otp_found_value = pattern_match.group()
if otp_found_value:
get_content = re.findall(r"[A-Za-z]", preview)
if get_content:
unique_count_sender = self.unique_sender_count(row)
self.total_otp.append(preview)
print(f"Code : {otp_found_value} and preview : {preview} and sender : {send}")
except Exception as e:
print(f"Error processing row: {e}")
def unique_sender_count(self, row_sender):
sender = row_sender["sender"]
if sender not in self.sender_count:
self.sender_count[sender] = 1
else:
self.sender_count[sender] += 1
if self.sender_count[sender] >= 5:
self.senders_above_5.add(sender)
else:
pass
if name == “main”:
otp_filter = OTPAnalysis()
otp_filter.read_excel_file()
print(f"Total number of OTP : {len(otp_filter.total_otp)}")