tilde-projects/Code/irc/util/quote_puzzle.py

38 lines
1.6 KiB
Python

#!/usr/bin/python3
import json
import requests
import random
import re
quotefile = "/home/karlen/irc/quotes.txt"
wordsfile = "/usr/share/dict/words"
chuckfile = "/home/krowbar/Code/irc/data/chuck.txt"
chuckApi = "https://api.icndb.com/jokes/random"
def get_quote():
quotes = open(quotefile, "r").read().split("---")
quote, attr = random.choice(quotes).strip().splitlines()
attempt = 10
dict_words = open(wordsfile).read().split()
while True:
good_words = [w for w in quote.split() if w in dict_words and len(w) > 2]
if len(good_words) > 3 or attempt is 0:
break #either we got a good one or we gave up
quote, attr = random.choice(quotes).strip().splitlines()
attempt = attempt - 1
quote = quote[:200] # get only the first 200 chars
word = random.choice([q for q in quote.split() if len(q) > 2 and q in dict_words] or [q for q in quote.split() if len(q) > 1])
quote = quote.replace(word, re.sub(r"[a-zA-Z]", "_", word))
return [word, 'Fill in the blank: "{}" {}'.format(quote, attr)]
def get_chuck():
#chucks = open(chuckfile, "r").readlines()
#chuck = random.choice(chucks).rstrip()[:200] # get only the first 200 chars
# ha ha! let's see if we can confuse login
chuck = json.loads(requests.get(chuckApi).content.decode())['value']['joke'][:200]
word = random.choice([w for w in chuck.split(" ") if len(w) > 1 and w.lower() != "chuck" and w.lower() != "norris"])
chuck = chuck.replace(word, re.sub(r"[a-zA-Z]", "_", word)).replace(""", "\"")
return [word, 'Fill in the blank: "{}"'.format(chuck)]