Selaa lähdekoodia

added API alert

marton levente 1 vuosi sitten
vanhempi
commit
60199658bf
2 muutettua tiedostoa jossa 52 lisäystä ja 2 poistoa
  1. 43 1
      mail_alert.py
  2. 9 1
      start_mail_alert.py

+ 43 - 1
mail_alert.py

@@ -24,6 +24,7 @@ bot = telegram.Bot(token=config['AUTH']['token'])
 bot2 = telegram.Bot(token=config['AUTH']['bank'])
 mailbox = MailBox(host=config['email']['host'], ssl_context=context)
 mailbox2 = MailBox(host=config['email']['host'], ssl_context=context)
+mailbox3 = MailBox(host=config['email']['host'], ssl_context=context)
 
 def pretty_exc():
     exc_type, _exc_obj, exc_tb = sys.exc_info()
@@ -48,7 +49,6 @@ def mask2(msg, to_):
 def mail_alert(event):
     '''mail alert Inbox'''
     container = deque(maxlen=500)
-    bot = telegram.Bot(token=config['AUTH']['token'])
     mailbox.login(config['email']['user'], keyring.get_password('yagmail', 'levente.marton@mzk.ro'), initial_folder='Inbox')
     while not event.is_set():
         try:
@@ -129,6 +129,48 @@ def mail_alert2(event):
             mailbox2.logout()
             break
 
+def mail_alert3(event):
+    '''mail alert Inbox'''
+    container = deque(maxlen=500)
+    mailbox3.login(config['email']['user'], keyring.get_password('yagmail', 'levente.marton@mzk.ro'), initial_folder='API')
+    while not event.is_set():
+        try:
+            sleep(15)
+            msgs = [msgs for msgs in mailbox3.fetch(AND(seen=False), mark_seen=True)]
+            for msg in msgs:
+                chk = mask(msg, 'Ciel_notifier@mzk.ro')
+                if chk:
+                    msg_text = msg.text
+                    # if 'end of day extras/intraday' in msg.subject:
+                    #     msg_text = msg.text.replace('<br>', '\n')
+                    if msg.uid not in container:
+                        try:
+                            if len(msg.text) != 0:
+                                bot.send_message(chat_id=config['AUTH']['chatid'], text=f'{msg.from_}\nsubj: {msg.subject}\n\n{msg_text}')
+                            else:
+                                bot.send_message(chat_id=config['AUTH']['chatid'], text=f'{msg.from_}\nsubj: {msg.subject}\n\n{msg.html}')
+                            container.appendleft(msg.uid)
+                            print('message appended', len(container))
+                        except BadRequest:
+                            try:
+                                if len(msg.text) != 0:
+                                    bot.send_message(chat_id=config['AUTH']['chatid'], text=f'{msg.from_}\nsubj: {msg.subject}\n\n{msg_text[:len(msg_text) // 5]}')
+                                else:
+                                    bot.send_message(chat_id=config['AUTH']['chatid'], text=f'{msg.from_}\nsubj: {msg.subject}\n\n{msg.html[:len(msg.html) // 5]}')
+                                container.appendleft(msg.uid)
+                                print('message appended', len(container))
+                            except BadRequest:
+                                bot.send_message(chat_id=config['AUTH']['chatid'], text=f'{msg.from_}\nsubj: {msg.subject}\n\nMessage is too long')
+                                container.appendleft(msg.uid)
+                                print('message appended', len(container), '!! last message was to long !!')
+                        except Exception:
+                            mailbox3.logout()
+                            pretty_exc()
+                            break
+        except Exception:
+            mailbox3.logout()
+            break
+
 
 if __name__ == '__main__':
     try:

+ 9 - 1
start_mail_alert.py

@@ -8,9 +8,10 @@ import mail_alert
 
 event1 = Event()
 event2 = Event()
+event3 = Event()
 thread1 = Thread(target=mail_alert.mail_alert, args=(event1,))
 thread2 = Thread(target=mail_alert.mail_alert2, args=(event2,))
-# thread3 =
+thread3 = Thread(target=mail_alert.mail_alert3, args=(event3,))
 # thread4 =
 # thread5 =
 # thread6 =
@@ -22,16 +23,23 @@ if __name__ == '__main__':
     thread2.start()
     print(f'started mail alert Bank events')
     # sleep(0.5)
+    thread3.start()
+    print(f'started mail alert API')
+    # sleep(0.5)
     while True:
         try:
             sleep(1)
         except KeyboardInterrupt:
             event1.set()
             event2.set()
+            event3.set()
             thread1.join()
             print(f'stopped mail alert Inbox')
             # sleep(0.5)
             thread2.join()
             print(f'stopped mail alert Bank events')
             # sleep(0.5)
+            thread3.join()
+            print(f'stopped mail alert API')
+            # sleep(0.5)
             break