From c9517a0ba91ce3a55ca14b2432d26f3b2c9dd933 Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 20 Apr 2021 01:15:59 +0300 Subject: catch errors --- telegram_notify.py | 82 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/telegram_notify.py b/telegram_notify.py index bba2964..bc5c834 100644 --- a/telegram_notify.py +++ b/telegram_notify.py @@ -1,8 +1,18 @@ -import requests +import requests, traceback from mgs import MGSPiracy from argparse import ArgumentParser from jstate import JState + +def send(text: str, token: str, chat_id: int): + r = requests.post('https://api.telegram.org/bot%s/sendMessage' % token, data={ + 'chat_id': chat_id, + 'text': text + }) + if r.status_code != 200: + print('error: telegram returned code %d' % r.status_code) + + if __name__ == '__main__': # parse arguments parser = ArgumentParser() @@ -14,37 +24,39 @@ if __name__ == '__main__': parser.add_argument('--domains', nargs='+', required=True) args = parser.parse_args() - # get recent cases - mgs = MGSPiracy(from_page=args._from, to_page=args.to) - cases = mgs.get_cases() - - # read state - jst = JState(args.state_file, default=dict(cases=[])) - data = jst.read() - - # loop through cases - results = [] - for case in cases: - if case['statement_number'] in data['cases']: - continue - - matched = False - for mydomain in args.domains: - if mydomain in case['decision_text']: - matched = True - results.append('%s found in %s' % (mydomain, case['statement_number'])) - data['cases'].append(case['statement_number']) - - if matched: - break - - # remember found cases - jst.write(data) - - # if found anything, send to telegram - if results: - text = '\n'.join(results) - r = requests.post('https://api.telegram.org/bot%s/sendMessage' % args.token, data={ - 'chat_id': args.chat_id, - 'text': 'new mos-gorsud findings:\n' + text - }) \ No newline at end of file + try: + # get recent cases + mgs = MGSPiracy(from_page=args._from, to_page=args.to) + cases = mgs.get_cases() + + # read state + jst = JState(args.state_file, default=dict(cases=[])) + data = jst.read() + + # loop through cases + results = [] + for case in cases: + if case['statement_number'] in data['cases']: + continue + + matched = False + for mydomain in args.domains: + if mydomain in case['decision_text']: + matched = True + results.append('%s found in %s' % (mydomain, case['statement_number'])) + data['cases'].append(case['statement_number']) + + if matched: + break + + # remember found cases + jst.write(data) + + # if found anything, send to telegram + if results: + text = '\n'.join(results) + text = 'new mos-gorsud findings:\n' + text + + send(text=text, token=args.token, chat_id=args.chat_id) + except Exception as e: + send(text='error: '+traceback.format_exc(), token=args.token, chat_id=args.chat_id) \ No newline at end of file -- cgit v1.2.3