install:
mkdir -p /usr/local/bin
- mkdir -p /usr/share/phrases/
- cp phrases.py /usr/local/bin
- cp phrases.csv /usr/share/phrases/
+ mkdir -p /usr/local/share/phrases/
+ cp phrases.py /usr/local/bin/phrases
+ cp phrases.csv /usr/local/share/phrases/
uninstall:
- rm /usr/local/bin/phrases.py
- rm -r /usr/share/phrases/
+ rm /usr/local/bin/phrases
+ rm -r /usr/local/share/phrases/
reinstall:
make uninstall
There are currently 2239 famous phrases in the database
## Installation
+### On Linux + MacOS
`sudo make` to install.
`sudo make uninstall` to uninstall completely.
+The program can also be run without installing
+
### Notes
- * If you want to generate a new phrases.csv file with the `extract.py` script, then you need the BeautifulSoup Python module.
+ * If you want to generate a new phrase database file with the `extract.py` script, then you need the beautifulsoup4 Python module.
* Tested and written on Python 3.9.0
## License
import csv
import random
import sys
+import os.path
def main(args=sys.argv[1:]):
# Argument parsing
action='store_true',
help="print number of possibilities within constraints")
parser.add_argument("-f", "--file",
- default="/usr/share/phrases/phrases.csv",
help="set the location of the phrase file")
args = parser.parse_args()
right_length = []
+ # find phrase file
+ if args.file:
+ phrase_file = args.file
+ if os.path.isfile("phrases.csv"):
+ phrase_file = "phrases.csv"
+ elif os.path.isfile("/usr/local/share/phrases/phrases.csv"):
+ phrase_file = "/usr/local/share/phrases/phrases.csv"
+ else:
+ sys.exit("cannot fine phrase database!")
+
# convert csv file into list
- with open(args.file) as f:
+ with open(phrase_file) as f:
reader = csv.reader(f)
next(reader, None) # skip header
- all_lines = list(reader)
+ all_lines = list(reader)
f.close()
# iterate through all the phrases
try: # choose a random id from the shortlist
chosen = int(right_length[random.randint(0, len(right_length) - 1)])
except:
- sys.exit("No phrase within the given parameters!")
+ sys.exit("no phrase within the given parameters!")
# Output as specified in flags
for row in all_lines:
or args.notes
or args.num):
print(row[1])
+ sys.exit(0)
else:
if args.id:
print(row[1])
print(row[3])
if args.num:
print(len(right_length))
+ sys.exit(0)
if __name__ == "__main__":
main()