]> git.armaanb.net Git - phrases.git/blob - phrases.py
update formatting and convinience
[phrases.git] / phrases.py
1 #!/usr/bin/env python3
2 # Display Latin famous phrases in the terminal
3 # Armaan Bhojwani 2020
4
5 import random
6 import os
7 import sys
8 import re
9
10 # Use system random if available, otherwise, use Python's
11 def _random_int(start, end):
12     try:
13         r = random.SystemRandom()
14     except:
15         r = random
16
17     return r.randint(start, end)
18
19 # Create list of phrases from phrase file
20 def _read_phrases(phrase_file):
21     f = open(phrase_file, 'r')
22     contents = f.read()
23
24     lines = [line.rstrip() for line in contents.split('\n')]
25     delim = re.compile(r'^%$')
26     phrases = []
27     cur = []
28
29     def save_if_nonempty(buf):
30         phrase = '\n'.join(buf)
31         if phrase.strip():
32             phrases.append(phrase)
33
34     for line in lines:
35         if delim.match(line):
36             save_if_nonempty(cur)
37             cur = []
38             continue
39
40         cur.append(line)
41
42     if cur:
43         save_if_nonempty(cur)
44
45     return phrases
46
47 # Return a random phrase from the phrases list
48 def get_random_phrase(phrase_file):
49     phrases = list(_read_phrases(phrase_file))
50     randomRecord = _random_int(0, len(phrases) - 1)
51     randphrase = phrases[randomRecord]
52     return randphrase.partition('\n')[0]
53
54 # Main program
55 def main():
56     print(get_random_phrase("/usr/share/phrases/phrases"))
57
58 main()