Merge branch 'master' into feature/gmx_with_proxy
# Conflicts: # src/person_name/contact_manager.py
This commit is contained in:
@@ -16,7 +16,7 @@ DEFAULT_SERIAL_TO_IGNORE = ["47e7e36b", "bitbrowser"]
|
||||
|
||||
|
||||
def upload_contacts_list():
|
||||
_contacts_to_book = read_contacts(str(Path.home()) + "/Desktop/contact_list_2025-05-20.xlsx")
|
||||
_contacts_to_book = read_contacts(str(Path.home()) + "/Desktop/contact_list_2026-04-11_FIXED.xlsx")
|
||||
return _contacts_to_book
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ def write_new_contacts_to_excel(valid_contacts: list, file_name=str(datetime.dat
|
||||
|
||||
|
||||
def generate_valid_contact_list_for_day(segment_number=1):
|
||||
_collection_name = "2026-03-28"
|
||||
_collection_name = "2026-04-11"
|
||||
_valid_contact_list = MONGO_STORE_MANAGER.get_all_successful_items_for_one_day(_collection_name)
|
||||
_all_contacts = MONGO_STORE_MANAGER.get_all_contacts_to_book()
|
||||
_contact_to_save = []
|
||||
@@ -131,9 +131,11 @@ def generate_valid_contact_list_for_day(segment_number=1):
|
||||
if _true_contact.mail == _contact.mail:
|
||||
_contact.last_name = _true_contact.last_name
|
||||
_contact.phone = _true_contact.phone
|
||||
_contact.passport = str(_true_contact.resident_card_number)[:9]
|
||||
_contact.passport = str(_true_contact.passport)[:9]
|
||||
_contact.first_name = _true_contact.first_name
|
||||
_contact.resident_card_number = str(_true_contact.resident_card_number)[:9]
|
||||
_contact.resident_card_number = str(_true_contact.passport)[:9]
|
||||
if _contact.mail == "angielovato14903@yahoo.com":
|
||||
print("no resident card number for " + _contact.mail)
|
||||
print("{}:{}".format(_true_contact.mail, _true_contact.source_from))
|
||||
if isinstance(_true_contact.source_from, str) and _true_contact.source_from is not None and len(_true_contact.source_from) > 0:
|
||||
print(_true_contact.source_from)
|
||||
@@ -285,14 +287,80 @@ def write_resident_card_number_to_contact_list(file_to_read, file_name="contact_
|
||||
write_list_with_segment_number(file_name, _contacts_to_book, 1)
|
||||
|
||||
|
||||
def check_resident_card_number(file_path):
|
||||
"""读取 contact_list Excel 文件,检查 resident_card_number 是否为 9 位纯数字字符串。
|
||||
若不是则输出该联系人信息,并调用 generate_single_titre_sejour_number() 生成新值进行修复。
|
||||
最终将所有联系人(含修复结果)写入原文件名+_FIXED 的新文件,保持原有列格式。"""
|
||||
_contact_list = read_contacts(file_path)
|
||||
_has_invalid = False
|
||||
for _contact in _contact_list:
|
||||
rcn = str(_contact.resident_card_number) if _contact.resident_card_number is not None else ""
|
||||
if not (len(rcn) == 9 and rcn.isdigit()):
|
||||
print(_contact)
|
||||
_contact.resident_card_number = generate_single_titre_sejour_number()
|
||||
_has_invalid = True
|
||||
|
||||
if not _has_invalid:
|
||||
print("[OK] Tous les resident_card_number sont valides (9 chiffres). Aucun fichier créé.")
|
||||
return
|
||||
|
||||
# Construire le chemin du fichier de sortie : même dossier, nom + _FIXED + extension
|
||||
p = Path(file_path)
|
||||
output_file = str(p.parent / (p.stem + "_FIXED" + p.suffix))
|
||||
|
||||
# Écriture dans le même format que write_new_contacts_to_excel
|
||||
row = 0
|
||||
col = 0
|
||||
workbook = xlsxwriter.Workbook(output_file, {'nan_inf_to_errors': True})
|
||||
header_data = ['name', 'phone', 'passport', 'email', 'store', 'serial', 'ip_country', 'ua',
|
||||
'resident_card_number', 'source_from']
|
||||
worksheet = workbook.add_worksheet()
|
||||
header_format = workbook.add_format({'bold': True})
|
||||
for col_num, data in enumerate(header_data):
|
||||
worksheet.write(row, col_num, data, header_format)
|
||||
row = 1
|
||||
|
||||
def safe_write_val(row_num, col_num, value):
|
||||
try:
|
||||
if isinstance(value, str):
|
||||
if value.lower() in ['nan', 'inf', '-inf']:
|
||||
worksheet.write(row_num, col_num, "")
|
||||
else:
|
||||
worksheet.write(row_num, col_num, value)
|
||||
elif isinstance(value, (int, float)):
|
||||
if math.isnan(value) or math.isinf(value):
|
||||
worksheet.write(row_num, col_num, "")
|
||||
else:
|
||||
worksheet.write(row_num, col_num, value)
|
||||
else:
|
||||
worksheet.write(row_num, col_num, value if value is not None else "")
|
||||
except (TypeError, ValueError):
|
||||
worksheet.write(row_num, col_num, "")
|
||||
|
||||
for info in _contact_list:
|
||||
worksheet.write(row, col, "{} {}".format(info.last_name, info.first_name))
|
||||
worksheet.write(row, col + 1, info.phone)
|
||||
worksheet.write(row, col + 2, info.passport)
|
||||
worksheet.write(row, col + 3, info.mail)
|
||||
worksheet.write(row, col + 4, info.store)
|
||||
worksheet.write(row, col + 5, info.serial)
|
||||
worksheet.write(row, col + 6, info.ip_country)
|
||||
safe_write_val(row, col + 7, info.ua)
|
||||
worksheet.write(row, col + 8, info.resident_card_number)
|
||||
worksheet.write(row, col + 9, info.source_from)
|
||||
row += 1
|
||||
workbook.close()
|
||||
print("Fichier corrigé écrit dans : " + output_file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# write_resident_card_number_to_contact_list(file_to_read=str(Path.home()) + "/Desktop/contact_list_all_13.xlsx",
|
||||
# file_name="contact_list_all_13")
|
||||
# contacts_to_book = upload_contacts_list()
|
||||
# MONGO_STORE_MANAGER.upload_contact_list(contacts_to_book)
|
||||
contacts_to_book = upload_contacts_list()
|
||||
MONGO_STORE_MANAGER.upload_contact_list(contacts_to_book)
|
||||
# print("start at {}".format(datetime.datetime.now()))
|
||||
generate_valid_contact_list_for_day(segment_number=2)
|
||||
# generate_contact_from_mail_list("/Users/lpan/Downloads/邮箱及密码_23_03_25_yahoo.xlsx")
|
||||
# generate_valid_contact_list_for_day(segment_number=2)
|
||||
# generate_contact_from_mail_list("/Users/panlei/Downloads/100_yahoo_11_04.xlsx")
|
||||
# print("end at {}".format(datetime.datetime.now()))
|
||||
# update_contact_list_not_received_mail()
|
||||
# get_old_validated_contact_list()
|
||||
@@ -301,4 +369,5 @@ if __name__ == '__main__':
|
||||
# merge_contact_list_files(
|
||||
# "/Users/lpan/Desktop/contact_list_2024-11-06.xlsx"
|
||||
# ])
|
||||
# check_resident_card_number(str(Path.home()) + "/Desktop/contact_list_2026-04-11_FIXED.xlsx")
|
||||
# fix_phone_number_format(str(Path.home()) + "/Desktop/gmx_ch_100_2024-06-13.xlsx")
|
||||
|
||||
Reference in New Issue
Block a user