Last active 1731167936

lh.py Raw
1#!/usr/bin/env python3
2
3"""
4Author: Dominic OE7DRT <quick.hat4396@qtztsjosmprqmgtunjyf.com>
5"""
6
7"""open the lastheard page on brandmeister
8"""
9
10import re, argparse, webbrowser
11
12def main():
13 """main function"""
14
15 parser = argparse.ArgumentParser(description='Opens a last-heard table on Brandmeister in your browser')
16
17 subparser = parser.add_subparsers(dest='selection')
18
19 talkgroup = subparser.add_parser('tg')
20 callsign = subparser.add_parser('call')
21 dmrid = subparser.add_parser('id')
22
23 talkgroup.add_argument('TG', help='Talkgroup', type=int)
24 callsign.add_argument('CALLSIGN', help='Callsign', type=str)
25 dmrid.add_argument('DMRID', help='DMR-ID (Integer)', type=int)
26
27 args = parser.parse_args()
28
29 if args.selection == 'tg':
30 tg_pattern = re.compile("^([1-9]|[1-9][0-9]{1,6})$")
31 if tg_pattern.match(str(args.TG)):
32 url = 'https://brandmeister.network/?page=lh&DestinationID={}'.format(args.TG)
33 #print(url)
34 else:
35 print("not a valid tg number:", args.TG)
36 exit(1)
37
38 elif args.selection == 'call':
39 call_pattern = re.compile("^[a-zA-Z0-9]{1,3}[0123456789][a-zA-Z0-9]{0,2}[a-zA-Z]$")
40 if call_pattern.match(str(args.CALLSIGN)):
41 url = 'https://brandmeister.network/?page=lh&SourceCall={}'.format(args.CALLSIGN.upper())
42 #print(url)
43 else:
44 print("not a valid callsign:", args.CALLSIGN)
45 exit(1)
46
47 elif args.selection == 'id':
48 dmrid_userid_pattern = re.compile("^[0-9]{7}$")
49 dmrid_repeater_pattern = re.compile("^[0-9]{6}$")
50 if dmrid_userid_pattern.match(str(args.DMRID)):
51 url = 'https://brandmeister.network/?page=lh&SourceID={}'.format(args.DMRID)
52 #print(url)
53 elif dmrid_repeater_pattern.match(str(args.DMRID)):
54 url = 'https://brandmeister.network/?page=lh&ContextID={}'.format(args.DMRID)
55 #print(url)
56 else:
57 print("not a valid DMR-ID:", args.DMRID)
58 exit(1)
59 else:
60 parser.print_help()
61 exit(1)
62
63 webbrowser.open(url, new=0, autoraise=True)
64 #print(url)
65
66
67if __name__ == "__main__":
68 main()
69