from string import ascii_lowercase
import requests
from tabulate import tabulate

# All letters are lowercased and may contain special chars. Not sure if this
# is better-maintained than the JS port:
# https://github.com/LDNOOBW/naughty-words-js
BAD_WORDS_URI = "https://raw.githubusercontent.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/master/en"

letters = {_: 0 for _ in ascii_lowercase}
wordlist = [_ for _ in requests.get(BAD_WORDS_URI).text.strip().split("\n")]

for word in wordlist:
    for letter in filter(lambda l: l in ascii_lowercase, word):
        letters[letter] += 1

# Sort by frequency
letters = {
    char: frequency
    for char, frequency in sorted(
        letters.items(),
        key=lambda k: k[1],
        reverse=True,
    )
}

# Only interested in consonants
print(
    tabulate(
        [_ for _ in letters.items() if _[0] not in "aeiou"],
        headers=["Letter", "Count"],
        tablefmt="fancy_grid",
    )
)