#!/usr/bin/env python3 import traceback import mosgorsud import requests import urllib3.exceptions from argparse import ArgumentParser from ch1p import State, telegram_notify from html import escape if __name__ == '__main__': # parse arguments parser = ArgumentParser() parser.add_argument('--state-file', required=True) parser.add_argument('--token', required=True, help='Telegram bot token',) parser.add_argument('--chat-id', type=int, required=True, help='Telegram chat id (with bot)') parser.add_argument('--from', type=int, default=1, dest='_from', help='First page') parser.add_argument('--to', type=int, default=5, help='Last page') parser.add_argument('--domains', nargs='+', required=True) arg = parser.parse_args() try: # get recent cases cases = mosgorsud.get_cases(from_page=arg._from, to_page=arg.to) # read state state = State(file=arg.state_file, default=dict(cases=[])) # loop through cases results = [] for case in cases: if case['statement_number'] in state['cases']: continue matched = False for mydomain in arg.domains: if mydomain in case['decision_text']: matched = True results.append('%s found in %s (%s)' % (mydomain, case['statement_number'], case['doc_link'])) state['cases'].append(case['statement_number']) if matched: break # if found anything, send to telegram if results: text = '\n'.join(results) text = 'new MGS findings:\n' + text telegram_notify(text=escape(text), parse_mode='HTML', token=arg.token, chat_id=arg.chat_id) except KeyboardInterrupt: pass except (TimeoutError, requests.exceptions.ConnectionError, urllib3.exceptions.MaxRetryError): telegram_notify(text='mosgorsud error: network timeout', token=arg.token, chat_id=arg.chat_id) except: telegram_notify(text='mosgorsud error: '+escape(traceback.format_exc()), parse_mode='HTML', token=arg.token, chat_id=arg.chat_id)