aboutsummaryrefslogtreecommitdiff
path: root/telegram_notify.py
blob: 0ccb2b990a91aef996ab52a501e5509661e365e7 (plain)
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)