1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/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)
|