75 lines
2.4 KiB
Python
Executable File
75 lines
2.4 KiB
Python
Executable File
#!/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)
|