check black list before send request

This commit is contained in:
Lei PAN
2022-07-06 18:08:00 +02:00
parent d495308a1f
commit 2a339be86e
4 changed files with 47 additions and 7 deletions
+4 -1
View File
@@ -7,6 +7,7 @@ from src.logs.AppLogging import init_logger
from src.pojo.ModeEnum import ModeEnum from src.pojo.ModeEnum import ModeEnum
from src.pojo.contact_pojo import ContactPojo from src.pojo.contact_pojo import ContactPojo
from src.proxy.proxy_type import ProxyType from src.proxy.proxy_type import ProxyType
from src.utils.black_list_checker import can_send_request
from src.utils.excel_reader import ExcelHelper from src.utils.excel_reader import ExcelHelper
from src.workers.commandor_page import CommandorPage from src.workers.commandor_page import CommandorPage
@@ -24,14 +25,16 @@ def start_book(start_number, end_number, store_choose_state=0, max_workers=10, p
if len(all_contacts) <= end_number: if len(all_contacts) <= end_number:
end_number = len(all_contacts) end_number = len(all_contacts)
contacts = all_contacts[start_number - 1: end_number] contacts = all_contacts[start_number - 1: end_number]
logger.info(contacts)
with ThreadPoolExecutor(max_workers=max_workers) as executor: with ThreadPoolExecutor(max_workers=max_workers) as executor:
for contact in contacts: for contact in contacts:
proxy = get_proxy(proxy_type) proxy = get_proxy(proxy_type)
# start the task in thread # start the task in thread
if can_send_request(contact):
executor.submit( executor.submit(
CommandorPage(contact, store_type=store_choose_state, proxy_type=proxy_type, mode=mode).start_page, CommandorPage(contact, store_type=store_choose_state, proxy_type=proxy_type, mode=mode).start_page,
proxy) proxy)
else:
logger.info("do not send request --> skip")
def recheck_the_captcha_error_contacts(on_no_contact_found, store_type=0, mode: ModeEnum = ModeEnum.MANUAL, def recheck_the_captcha_error_contacts(on_no_contact_found, store_type=0, mode: ModeEnum = ModeEnum.MANUAL,
+23 -3
View File
@@ -52,6 +52,17 @@ class MongoDbManager:
except Exception as error: except Exception as error:
self.logger.info(error) self.logger.info(error)
def get_blacklist_contacts(self) -> list:
collection_name = BLACK_LIST
black_list_contacts = []
try:
collection_to_use = self.db[collection_name]
for document in collection_to_use.find():
black_list_contacts.append(BlackContactPojo.from_firestore_dict(document))
except Exception as error:
self.logger.info(error)
return black_list_contacts
def get_captcha_error_contacts_for_current_day(self) -> list: def get_captcha_error_contacts_for_current_day(self) -> list:
day = str(datetime.date.today()) day = str(datetime.date.today())
collection_name = CAPTCHA_ERROR_COLLECTION_PREFIX + day collection_name = CAPTCHA_ERROR_COLLECTION_PREFIX + day
@@ -71,9 +82,18 @@ class MongoDbManager:
except Exception as error: except Exception as error:
self.logger.info(error) self.logger.info(error)
def remove_contact_from_black_list(self, contact: ContactPojo):
collection_name = BLACK_LIST
collection = self.db[collection_name]
to_delete = {'_id': contact.mail}
try:
collection.delete_one(to_delete)
except Exception as error:
self.logger.info(error)
if __name__ == '__main__': if __name__ == '__main__':
db_manager = MongoDbManager() db_manager = MongoDbManager()
contact = ContactPojo(phone_number='0755667750', passport_number='123456789', last_name='PAN', first_name='Lei', black_list = db_manager.get_blacklist_contacts()
mail='panleicim@gmail.com') for contact in black_list:
print(db_manager.insert_blacklist_contact(contact)) print(contact)
+16
View File
@@ -0,0 +1,16 @@
import time
from src import params
from src.pojo.contact_pojo import ContactPojo
SEVEN_DAYS_IN_S = 7 * 24 * 3600
def can_send_request(contact: ContactPojo) -> bool:
black_list = params.mongo_store_manager.get_blacklist_contacts()
for black_contact in black_list:
if contact.mail == black_contact.mail:
# check date
return black_contact.update_at_in_s + SEVEN_DAYS_IN_S < time.time()
return True
+1
View File
@@ -332,6 +332,7 @@ class CommandorPage:
params.firebase_store_manager.save(result) params.firebase_store_manager.save(result)
params.local_db_manager.handle_success(result) params.local_db_manager.handle_success(result)
params.mongo_store_manager.delete_captcha_error_contact_for_current_day(self.contact) params.mongo_store_manager.delete_captcha_error_contact_for_current_day(self.contact)
params.mongo_store_manager.remove_contact_from_black_list(self.contact)
if status is PublishType.SUCCESS: if status is PublishType.SUCCESS:
self.on_success(result) self.on_success(result)
time.sleep(2) time.sleep(2)