anaf_spv_refresh.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # from selenium.webdriver.common.alert import Alert
  2. import os
  3. import sys
  4. import traceback
  5. from time import sleep
  6. from collections import deque
  7. from threading import Thread, Event
  8. import keyboard as kb
  9. import pywinctl as gw
  10. from selenium import webdriver
  11. from selenium.webdriver import ChromeOptions
  12. from selenium.webdriver.support import ui
  13. from selenium.webdriver.common.by import By
  14. from selenium.common.exceptions import (
  15. NoSuchElementException,
  16. ElementClickInterceptedException,
  17. StaleElementReferenceException,
  18. TimeoutException,
  19. WebDriverException
  20. )
  21. import yagmail
  22. # from envelopes import Envelope
  23. def pretty_exc():
  24. exc_type, exc_obj, exc_tb = sys.exc_info()
  25. for tb in list(traceback.format_exception(exc_type, exc_obj, exc_tb)):
  26. print(tb)
  27. def accept_cert():
  28. # brave_ready.wait()
  29. sleep(3)
  30. kb.press_and_release('enter')
  31. sleep(1)
  32. try:
  33. sleep(4)
  34. kb.write(os.getenv('PKCS11PIN'), 0.05)
  35. sleep(1)
  36. kb.press_and_release('enter')
  37. except Exception:
  38. pass
  39. brave_ready = Event()
  40. last_ = deque(maxlen=500)
  41. env2 = yagmail.SMTP(user='claudia.conta.ab@gmail.com', password='abconsult')
  42. subject = 'new message in SPV'
  43. all_element_exceptions = (
  44. NoSuchElementException,
  45. ElementClickInterceptedException,
  46. StaleElementReferenceException,
  47. WebDriverException, TimeoutException
  48. )
  49. chrome_options = ChromeOptions()
  50. chrome_options.add_argument('--disable-dev-shm-usage')
  51. chrome_options.add_argument('--no-sandbox')
  52. chrome_options.add_argument('--disable-gpu')
  53. chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
  54. chrome_options.add_argument('user-data-dir=d:/py_scripts/__anaf__')
  55. # chrome_options.binary_location = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe'
  56. m_url = 'https://www.anaf.ro/auth_status.html'
  57. m_url2 = 'https://www.anaf.ro/anaf/myinternet/SPV/mesaje'
  58. driver = webdriver.Chrome(options=chrome_options)
  59. thread = Thread(target=accept_cert, args=())
  60. thread.start()
  61. driver.switch_to.window(driver.current_window_handle)
  62. driver.get(m_url)
  63. while True:
  64. sleep(0.5)
  65. # try:
  66. # pup = ui.WebDriverWait(driver, 5).until(lambda driver: driver.find_element(By.XPATH, '/html/body/div[4]/div[3]/div/button/span'))
  67. # pup.click()
  68. # except (NoSuchElementException, TimeoutException) as exc:
  69. # pretty_exc()
  70. try:
  71. driver.switch_to.default_content()
  72. except TimeoutException:
  73. pass
  74. # t2 = 10
  75. # while t2 >= 0:
  76. # print(f'refreshing in {t2}', end='\r', flush=True)
  77. # sleep(1)
  78. # t2 -= 1
  79. t = 210
  80. try:
  81. driver.get(m_url2)
  82. # driver.switch_to.default_content()
  83. print(f'connecting to {m_url}')
  84. try:
  85. _frame = driver.find_elements(By.TAG_NAME, 'iframe')[0]; sleep(1)
  86. driver.switch_to.frame(_frame); sleep(1)
  87. except IndexError:
  88. pretty_exc()
  89. # table_ = browser.find_element(By.ID, 'form:MesajeTable_data')
  90. # print(table_.text)
  91. first_row = driver.find_element(By.XPATH, '//*[@id="form:MesajeTable_data"]/tr[1]') # '//*[@id="form:MesajeTable_data"]/tr[1]'
  92. message = first_row.text
  93. last_.appendleft(message)
  94. print(message)
  95. if 'recipisa' not in message and 'RASPUNS SOLICITARE' not in message:
  96. if message not in last_:
  97. body = message
  98. # env2.send(to='claudia.conta.ab@gmail.com', subject=subject, contents=body)
  99. while t >= 0:
  100. mins, secs = divmod(t, 60)
  101. timeformat = '{:02d}:{:02d}'.format(mins, secs)
  102. print('...refreshing', timeformat, end='\r', flush=True)
  103. sleep(1)
  104. t -= 1
  105. except all_element_exceptions:
  106. pretty_exc()
  107. print(f'redirecting to {m_url}')
  108. thread = Thread(target=accept_cert, args=())
  109. thread.start()
  110. driver.switch_to.window(driver.current_window_handle)
  111. try:
  112. token_logon = gw.getWindowsWithTitle('Token Logon')[0]
  113. token_logon.activate()
  114. except IndexError:
  115. pass
  116. try:
  117. driver.get(m_url) # get https://www.anaf.ro/auth_status.htmls
  118. except Exception as exc:
  119. print(str(exc))
  120. # browser.refresh()
  121. # browser.find_element(By.XPATH, '/html/body/div/header/div[2]/ul/li[1]/a').click(); sleep(1)
  122. # t3 = 60
  123. # while t3 >= 0:
  124. # print(f'sleeping for {t3}', end='\r', flush=True)
  125. # sleep(1)
  126. # t3 -= 1
  127. # browser.get('https://www.anaf.ro/auth_status.html') # browser.find_element(By.XPATH, '/html/body/table[2]/tbody/tr[1]/td/b[2]/a').click()
  128. # '/html/body/div[1]/div[4]/div/div[3]/ul/li[3]/span/a/span'