38 lines
1.6 KiB
Python
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)]
|