From d910ec65a3a0fee5286472ec9824a593927eadc4 Mon Sep 17 00:00:00 2001 From: PAN Lei Date: Sun, 27 Feb 2022 18:09:01 +0100 Subject: [PATCH] add log support --- ModemPool.py | 13 ++++--- card_pool.py | 2 +- check_results.py | 28 +++++++++------ commandor.py | 6 ++-- db/DbManager.py | 2 +- {utils => logs}/AppLogging.py | 0 {utils => logs}/LogSender.py | 5 ++- logs/__init__.py | 0 main.py | 64 ++++++++++++++++------------------ utils/excel_reader.py | 7 ++++ utils/phone_list.txt | 1 + utils/phone_list.xlsx | Bin 4926 -> 4972 bytes 12 files changed, 73 insertions(+), 55 deletions(-) rename {utils => logs}/AppLogging.py (100%) rename {utils => logs}/LogSender.py (95%) create mode 100644 logs/__init__.py create mode 100644 utils/phone_list.txt 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 02f318fc0ca40c27b78365f2d1f5a96c29077b7b..96d24c445d613cb5a4b04edaec878432fc05c201 100644 GIT binary patch delta 954 zcmdm|_C}32z?+#xgn@y9gJEYt)I{Dj96%~$)`#P%6AvoXXB{@+X^&6+G4Dj-b|>Fi z-lzSfdBSeoIC~>2Tk8M8YaYM8d2cdH&Eem$c*1P=?^AM30#uEB37ujX_;BntClXO zT@QNaef(&=RrpNC0WsP7s#5_|MK`3)kvLx)eVEta5Xa=x_gPJh3s?Q?oNIMJ@1)&r z%d4faH+7fY+2G9j{=EPC%ez{?&YW`H;?JqDOO}sj#j5YuHM@ORIh#d%(St<-r)A?k z|0%o=mtXvvfB)6F0i#|Avd_j`R{pK;mjWT`Ue8tcB@?T$Bh+}?a!qj#q4^PH_WYkyC^ zbX9~+H-}$wlFr}yNgHGP&h2mGW0-87{VSl8uW-j?qa5oET6cCZRz+pb-OhFLtF z|Eif?YbJg+(OnX{OT5(b=(T-%cjbEDCBB`!VSCumdToQeHAm`w<}mqJT~}mJiRH^; zKi{yweXF{^+f=vc7tLk0j~1>y^7l<%Xu-cJAKVX1oO{!ve$(RnsdMX>32B-i=^LZZ4~ijUVBTrrs%PM#eDUC z-n#G=uP*I2{AiONn|Cw9u)g{h$Ejzw)>kq$`H$SaeN2hx^} z*P@?)c=F+6f4{?Dd6bCTypHoC6EiT*CO7ds1JRqad7~J?0w?$$fd$s`dqM<$3RuIF z`(ztIbFiv1K|Ay)KO|@Ymij9w&3JyYq>zjaC{0Z7+AVVcm~(`g7#O&LGz>H_F6Loi zh%ZXbDc08mkpbR}Od`ziOg6btNSd){a<7ma*wA%A-pk3Sgf!(rhNe!aoFoZMXy=)M V2E$AQ(hZE~CJPCxu}KJm1OcrrpYZ?y delta 949 zcmaE(woi>Wz?+#xgn@y9gQ2!5Vj}Mv4j>iM`smloi3b(x{SF)Ow8yhPy|?SE8B5@F z?hN$_6K1eH5>ve=w)W@ZBP;ISzC3NMa1;9jiQm)D&sR0K;*u5Gw?x2j;?bJRyRW4$ zd^}6GV-drNUk!dwi#&cT+{t}XQ)*r&f8fi-x0FAu+Qr(wq(_NWc|(Ws#FNJ|77A-| zz3efsI(Gd06+eT;jL{|aFEpKFuN`<|VL0#CwnpuQ7D2V?`?)jH9)1^C#+vI3e@tDwAoz&sZlAhn8=E|HpHE$%7d>K)&wD*} z#rvbL-X)j(eONA9cJRjBzsHY>JKj97e)oiUl#mFS88b(D^L<83Ha<{*6nA#>#4<84 zWHL=w2$bjeXR1NtJTSN^Ua#a&%Z9A;Oa;uDQ?QJ&|-{}&&{{DT$B)eR8 z)s4RUpR4mO-P^S|pJ76+^xa=Q<{fu~IO0tbmeg;M-STkRrgI)VD_6I^mpM_yAgMb^ zV-}}!=;_ZTD{^D!-4f2adgz*Ay^-6l`KB4S(`}w@Kje3nH>lq6Nv3-C4d#92(c(si zo2Hy{cs(_DX0z7g)fGGaR@7(w2)OWj_l${?o42}q#hvbPSK%-b@!&C%Nx#u>%|#@o zCf4$&#iWMsAAA2+evsQEv!uQE>iktl)E*a~^IGx5^YOWF`UPK&Wm)Y!r&PYmIWP0` z%;lyg)3b77g1a))pWApHt+za*dq{kjyGK#;no0Ev;+Il(1ncV7_UnCFu|V$g&lbCM|f&rpVr%aaO?Wp>D(C zwu1P`?(Hq#toE(@BaRvq58eg1uVi9i5aVWG;031Cik!{wIrlL!1LI}#2A*didh<-) zC`PcrH@-(;f!q9^5CL^TYj~2LoF!-uR<%UX4n0~w2wH%pw1uQ27jlAZ(JwBk%t@MdHZVTNaukm+5!WexzHA`EmE&{c5Iz*x$|zz|=Qnp3Q=2O`llPM$9$%@{X% xw~!pzt~)^9?#VxdH042QEOkQVBuQWzJI@R>7;Yp3Lj&W2$qvG5Y_9}Bf&i`