X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=phrases.py;h=c00f415f2a4139499fe7cccae17367df8117c5e2;hb=7903f060595381a5cf3c94d71722aba6be5b1629;hp=93f8a2f84375f06bc4dcb98ed4f3914ba68f7f12;hpb=4436720b4b07ef11b97af993e62788992c2ec515;p=phrases.git diff --git a/phrases.py b/phrases.py index 93f8a2f..c00f415 100755 --- a/phrases.py +++ b/phrases.py @@ -1,55 +1,46 @@ #!/usr/bin/env python3 -# Display famous phrases in the terminal +# Display Latin famous phrases in the terminal # Armaan Bhojwani 2020 +import argparse import random -import os import sys -import re - -def _random_int(start, end): -# Use system random if available, otherwise, use Python's - try: - r = random.SystemRandom() - except: - r = random - - return r.randint(start, end) - -def _read_fortunes(fortune_file): - f = open(fortune_file, 'r') - contents = f.read() - - lines = [line.rstrip() for line in contents.split('\n')] - delim = re.compile(r'^%$') - fortunes = [] - cur = [] - - def save_if_nonempty(buf): - fortune = '\n'.join(buf) - if fortune.strip(): - fortunes.append(fortune) - - for line in lines: - if delim.match(line): - save_if_nonempty(cur) - cur = [] - continue - - cur.append(line) - - if cur: - save_if_nonempty(cur) - - return fortunes - -def get_random_fortune(fortune_file): - fortunes = list(_read_fortunes(fortune_file)) - randomRecord = _random_int(0, len(fortunes) - 1) - randFortune = fortunes[randomRecord] - return randFortune.partition('\n')[0] - -def main(): - print(get_random_fortune("/usr/share/phrases/phrases")) - -main() +import csv + +# Main program +def main(args=sys.argv[1:]): + parser = argparse.ArgumentParser(description="Latin famous phrases in the terminal.") + parser.add_argument("-e", "--english", action='store_true', help="Print the English translation.") + parser.add_argument("-i", "--id", action='store_true', help="Print the id of the phrase.") + parser.add_argument("-l", "--latin", action='store_true', help="Print the Latin phrase (default)") + parser.add_argument("-m", "--min", type=int, default=0, help="Set the minimum length of the Latin phrase") + parser.add_argument("-M", "--max", type=int, default=10000000, help="Set the maximum length of Latin phrase") + parser.add_argument("-n", "--notes", action='store_true', help="Print any notes on phrase") + args = parser.parse_args() + + id = [] + + with open('/usr/share/phrases/phrases.csv') as f: + reader = csv.reader(f) + for row in reader: + if args.max >= int(row[len(row) - 1]) >= args.min: + id.append(row[0]) + chosen = id[random.randint(0, len(id))] + + with open('/usr/share/phrases/phrases.csv') as f: + reader = csv.reader(f) + for row in reader: + if row[0] == chosen: + if args.id: + print(row[0]) + if args.latin: + print(row[1]) + if args.english: + print(row[2]) + if args.notes: + print(row[3]) + if not len(sys.argv) > 1: + print(row[1]) + +if __name__ == "__main__": + main()