import datetime import random import xlsxwriter from src.db.mongo_manager import MONGO_STORE_MANAGER from src.utils.excel_reader import read_contacts, fr_phone_number_prefix, get_random_fr_phone_numbers, ExcelHelper def upload_contacts_list(): _contacts_to_book = read_contacts("/Users/lpan/Desktop/contact_list_2024-04-15.xlsx") return _contacts_to_book def fix_phone_number_format(file_path): _contact_list = read_contacts(file_path) for _contact in _contact_list: if _contact.phone.startswith('7'): if _contact.phone[0:2] not in fr_phone_number_prefix: print(_contact) _contact.phone = get_random_fr_phone_numbers() write_new_contacts_to_excel(_contact_list, file_name="09_04_to_test") def write_new_contacts_to_excel(valid_contacts: list, file_name=str(datetime.date.today())): row = 0 col = 0 # Create a workbook and add a worksheet. workbook = xlsxwriter.Workbook('contact_list_{}.xlsx'.format(file_name)) header_data = ['name', 'phone', 'passport', 'email', 'store', 'ip_country'] 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 = row + 1 for info in valid_contacts: # Iterate over the data and write it out row by row. 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.ip_country) row += 1 workbook.close() def generate_valid_contact_list_for_day(sement_number = 1): _valid_contact_list = MONGO_STORE_MANAGER.get_all_successful_items_for_day() _all_contacts = MONGO_STORE_MANAGER.get_all_contacts_to_book() _contact_to_save = [] for _contact in _valid_contact_list: # _contact.store = "faubourg" _contact.store = "random" if _contact.last_name is None or len(_contact.last_name) == 0: for _true_contact in _all_contacts: if _true_contact.mail == _contact.mail: _contact.last_name = _true_contact.last_name _contact.phone = _true_contact.phone _contact.passport = _true_contact.passport _contact.first_name = _true_contact.first_name if _contact.url_validated: if _contact.last_name is not None and len(_contact.last_name) > 0: _contact_to_save.append(_contact) write_new_contacts_to_excel(_contact_to_save) for i in range(0, sement_number): _step = int(len(_contact_to_save) / sement_number) _sublist = _contact_to_save[i * _step:_step * (i + 1)] _file_name = str(datetime.date.today()) +"_"+ str(i+1) write_new_contacts_to_excel(_sublist,file_name=_file_name) def merge_contact_list_files(file_list: list, final_file_name="merged_contact_list"): _all_contact_list = [] for file in file_list: _all_contact_list.extend(read_contacts(file)) for _con in _all_contact_list: _con.store = "random" print(len(_all_contact_list)) _list_without_duplicate = list(set(_all_contact_list)) print(len(_list_without_duplicate)) write_new_contacts_to_excel(_list_without_duplicate, file_name=final_file_name) def generate_all_contact_list(): _all_contacts = MONGO_STORE_MANAGER.get_all_contacts_to_book() random.shuffle(_all_contacts) for _contact in _all_contacts: _contact.store = "random" write_new_contacts_to_excel(_all_contacts, file_name="all") # 把新的联系人存到网上 if __name__ == '__main__': # contacts_to_book = upload_contacts_list() # MONGO_STORE_MANAGER.upload_contact_list(contacts_to_book) generate_valid_contact_list_for_day(sement_number=3) # generate_all_contact_list() # merge_contact_list_files( # ["/Users/lpan/Desktop/contact_list_2024-04-10.xlsx", # "/Users/lpan/Desktop/contact_list_2024-04-09.xlsx", # "/Users/lpan/Desktop/contact_list_2024-04-06.xlsx", # "/Users/lpan/Desktop/contact_list_2024-04-04.xlsx"]) # fix_phone_number_format("/Users/lpan/Desktop/09_04_to_test.xlsx")