diff --git a/ModemPool.py b/ModemPool.py index b1ae317..1739f91 100644 --- a/ModemPool.py +++ b/ModemPool.py @@ -5,18 +5,21 @@ import serial from serial import Serial from SIMError import SIMError +from logs.LogSender import LogSender, LOG_ERROR from utils.excel_reader import ExcelHelper class ModemPool: BAUDRATE = 115200 - my_phone = "my_phone" phone_number_position = 10 + TAG = "ModemPool" def __init__(self, port_list: list): self._port_list = port_list self._serial_list = [] self._excel_helper = ExcelHelper() + self._log_sender = LogSender() + for port in self._port_list: ser = serial.Serial(port, self.BAUDRATE, timeout=1) self._serial_list.append(ser) @@ -24,13 +27,14 @@ class ModemPool: def reset_all_modems(self): for ser in self._serial_list: self._send_command("AT+CFUN=1,1\r", ser) - # send_command("AT+RESET\r", ser) # wait for 20 second, so that the modem can init all the sims time.sleep(20) def _generate_error_msg(self, slot_position, index, error: SIMError): - return "error for slot({}) SIM({}), error:{}".format(slot_position, index + 1, - error.value) + msg = "slot({}) SIM({}), error:{}".format(slot_position, index + 1, + error.value) + self._log_sender.send_log(msg, subject=self.TAG, type=LOG_ERROR) + return msg def get_raw_phone_number(self, slot_position): for index, ser in enumerate(self._serial_list): @@ -72,7 +76,6 @@ class ModemPool: return True def _send_command(self, cmd: str, ser, wait_time_in_s: int = 0) -> bytes: - # print("send command {}".format(cmd)) ser.write(cmd.encode()) msg = ser.read(100) count = 0 diff --git a/card_pool.py b/card_pool.py index 2b0dd29..7a90882 100644 --- a/card_pool.py +++ b/card_pool.py @@ -2,7 +2,7 @@ import logging import serial -PORT = "/dev/tty.usbmodem11301" +PORT = "/dev/tty.usbmodem112101" BAUDRATE = 115200 diff --git a/check_results.py b/check_results.py index 147d339..b265448 100644 --- a/check_results.py +++ b/check_results.py @@ -1,19 +1,18 @@ -import time - -import playwright from playwright.sync_api import sync_playwright from db.DbManager import DataManager from pojo.ReserveResultPojo import ReserveResultPojo +SORRY_SENTENCE = "we are extremely sorry that we were not able to fulfill your request this time" + # check result with playright -def check_result_page(url): +def check_result_page(url) -> bool: with sync_playwright() as p: - run(p, url) + return run(p, url) -def run(playwright, url): +def run(playwright, url) -> bool: browser = playwright.webkit.launch(headless=False) page = browser.new_page( user_agent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Mobile Safari/537.36") @@ -21,15 +20,22 @@ def run(playwright, url): print(url_to_check) page.goto(url_to_check) print(page.title()) - print(page.content()) + content = page.content() browser.close() + if SORRY_SENTENCE in content: + print("refused") + return False + else: + print("accepted") + return True # need to start at 21h00 if __name__ == '__main__': # get the list db_manager = DataManager() - for appointment in db_manager.get_all_successful_items(): - result = ReserveResultPojo.from_firestore_dict(appointment.to_dict()) - check_result_page(result.url) - print(result) + collection = db_manager.get_all_successful_items() + for appointment in collection.stream(): + reserve_pojo = ReserveResultPojo.from_firestore_dict(appointment.to_dict()) + result = check_result_page(reserve_pojo.url) + collection.document(reserve_pojo.id).update({u'accepted': result}) diff --git a/commandor.py b/commandor.py index 7e73a8f..b88ac5a 100644 --- a/commandor.py +++ b/commandor.py @@ -32,6 +32,6 @@ class Commandor: if __name__ == '__main__': commandor = Commandor() - # contact = ContactPojo("0649614591", "E24183897", "LIU", "Yusi", "AZEER", "lei-pan@outlook.com") - # commandor.start_page(contact) - commandor.send_otp("262353") + contact = ContactPojo("0649614591", "E24183897", "LIU", "Yusi", "AZEER", "lei-pan@outlook.com") + commandor.start_page(contact) + # commandor.send_otp("262353") diff --git a/db/DbManager.py b/db/DbManager.py index 529912f..da56216 100644 --- a/db/DbManager.py +++ b/db/DbManager.py @@ -22,7 +22,7 @@ class DataManager: def get_all_successful_items(self): doc_ref = self._db.collection(u'2022-02-25') - return doc_ref.stream() + return doc_ref def save(self, result: ReserveResultPojo): if result.type == PublishType.SUCCESS: diff --git a/utils/AppLogging.py b/logs/AppLogging.py similarity index 100% rename from utils/AppLogging.py rename to logs/AppLogging.py diff --git a/utils/LogSender.py b/logs/LogSender.py similarity index 95% rename from utils/LogSender.py rename to logs/LogSender.py index 7fe885d..1ef6988 100644 --- a/utils/LogSender.py +++ b/logs/LogSender.py @@ -6,7 +6,10 @@ import oci from oci.loggingingestion import LoggingClient from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry -from utils.AppLogging import init_logger +from logs.AppLogging import init_logger + +LOG_ERROR = "ERROR" +LOG_INFO = "INFO" class LogSender: diff --git a/logs/__init__.py b/logs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/main.py b/main.py index b8defff..0386d0b 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,4 @@ import datetime -import json import logging import re import sys @@ -8,13 +7,13 @@ import time from gsmmodem import GsmModem from ModemPool import ModemPool -from card_pool import CardPool +from card_pool import CardPool, PORT from commandor import Commandor from db.DbManager import DataManager -from pojo.ReserveResultPojo import ReserveResultPojo, PublishType +from pojo.ReserveResultPojo import ReserveResultPojo from utils.excel_reader import ExcelHelper from pojo.serial_modem import SerialModem -from utils.AppLogging import init_logger +from logs.AppLogging import init_logger from utils.message_receiver import MessageReceiver BAUDRATE = 115200 @@ -22,7 +21,6 @@ OTP_TIMEOUT = 60 is_finished = False commandor = Commandor() timeout_contact_list = [] -PORT = "/dev/tty.usbmodem1301" # ser = serial.Serial(PORT, BAUDRATE, timeout=1) @@ -31,22 +29,22 @@ db_manager = DataManager() def get_devices_ports() -> list: return [ - "/dev/tty.usbmodem1121101", - "/dev/tty.usbmodem1121103", - "/dev/tty.usbmodem1121105", - "/dev/tty.usbmodem1121107", - "/dev/tty.usbmodem1121201", - "/dev/tty.usbmodem1121203", - "/dev/tty.usbmodem1121205", - "/dev/tty.usbmodem1121207", - "/dev/tty.usbmodem1121301", - ## "/dev/tty.usbmodem1121303", - "/dev/tty.usbmodem1121305", - "/dev/tty.usbmodem1121307", - "/dev/tty.usbmodem1121401", - "/dev/tty.usbmodem1121403", - "/dev/tty.usbmodem1121405", - "/dev/tty.usbmodem1121407" + "/dev/tty.usbmodem111101", + "/dev/tty.usbmodem111103", + "/dev/tty.usbmodem111105", + "/dev/tty.usbmodem111107", + "/dev/tty.usbmodem111201", + "/dev/tty.usbmodem111203", + "/dev/tty.usbmodem111205", + "/dev/tty.usbmodem111207", + "/dev/tty.usbmodem111301", + ## "/dev/tty.usbmodem111303", + "/dev/tty.usbmodem111305", + "/dev/tty.usbmodem111307", + "/dev/tty.usbmodem111401", + "/dev/tty.usbmodem111403", + "/dev/tty.usbmodem111405", + "/dev/tty.usbmodem111407" ] @@ -171,26 +169,26 @@ def start_listen(): def read_all_the_phone_number(): - card_pool = CardPool("/dev/tty.usbmodem11301") + card_pool = CardPool(PORT) slot_number = 1 - slot_sum = 32 - card_pool.switch_to_slot(15) + slot_sum = 28 + # card_pool.switch_to_slot(10) - # for i in range(10, slot_sum + 1): - # card_pool.reset() - # print("will switch to " + str(i)) - # card_pool.switch_to_slot(i) - # modem_pool = ModemPool(get_devices_ports()) - # modem_pool.reset_all_modems() - # modem_pool.get_raw_phone_number(i) + for i in range(1, slot_sum + 1): + card_pool.reset() + print("will switch to " + str(i)) + card_pool.switch_to_slot(i) + modem_pool = ModemPool(get_devices_ports()) + modem_pool.reset_all_modems() + modem_pool.get_raw_phone_number(i) if __name__ == '__main__': init_logger() logger = logging.getLogger() logger.addHandler(logging.StreamHandler(stream=sys.stdout)) - # read_all_the_phone_number() - start_listen() + read_all_the_phone_number() + # start_listen() # reset the sim card pool # send_command("AT+SWIT01-0001\r", ser) diff --git a/utils/excel_reader.py b/utils/excel_reader.py index 16e30cc..e26fdfb 100644 --- a/utils/excel_reader.py +++ b/utils/excel_reader.py @@ -12,6 +12,9 @@ class ExcelHelper: def write_phone(self, phone_number): new_df = pandas.Series([phone_number]) + f = open("phone_list.txt", "a") + f.write("{},".format(phone_number)) + f.close() self._df = pandas.concat([self._df, new_df]) self._df.to_excel("phone_list.xlsx") @@ -37,3 +40,7 @@ class ExcelHelper: if __name__ == '__main__': helper = ExcelHelper() helper.write_phone("88649614591") + helper.write_phone("88649614591") + helper.write_phone("88649614591") + helper.write_phone("8864961591") + helper.write_phone("88649614591") diff --git a/utils/phone_list.txt b/utils/phone_list.txt new file mode 100644 index 0000000..e64acc5 --- /dev/null +++ b/utils/phone_list.txt @@ -0,0 +1 @@ +88649614591,88649614591,88649614591,8864961591,88649614591, \ No newline at end of file diff --git a/utils/phone_list.xlsx b/utils/phone_list.xlsx index 02f318f..96d24c4 100644 Binary files a/utils/phone_list.xlsx and b/utils/phone_list.xlsx differ