File size: 2,338 Bytes
ee2309a
 
c8e9ef0
 
 
ee2309a
c0ab3ed
fb96dd8
9fe7e75
120d25d
7cc26a6
 
c8e9ef0
0fe0771
fb96dd8
177665a
 
9cb4940
 
 
 
7cc26a6
9cb4940
 
 
54922b6
 
 
909915c
9cb4940
fb96dd8
c8e9ef0
 
17afdf5
c8e9ef0
401609b
c8e9ef0
 
7bd6a90
 
 
 
 
 
fb96dd8
 
 
 
 
 
7bd6a90
fb96dd8
c0ab3ed
134ecd7
c8e9ef0
134ecd7
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import gradio as gr
import pandas as pd
import requests
import re
import json

english_dict = pd.read_csv("dictionary.txt",
                         header = None, 
                         sep = ' ', 
                        names = ['word'])
english_dict = english_dict.reset_index(drop = True)
english_dict = english_dict.dropna()

url = 'https://spellbee.org'
def spell_bee_solver(no_centre, centre):
    full_set = set(no_centre.lower() + centre.lower())
    spell_bee_solver = english_dict[english_dict['word'].str.contains(str(centre.lower()), regex = False)]
    final_words = list()
    for i in range(0, spell_bee_solver.shape[0]):
        words = spell_bee_solver['word'].iloc[i]
        words_set = set(words)
        if len(words_set - full_set) == 0:
            final_words.append(words)

    final_word_df = pd.DataFrame(final_words)
    final_word_df.columns = ['word']
    final_word_df['word_length'] = final_word_df['word'].str.len()
    final_word_df = final_word_df[final_word_df['word_length'] > 3]
    final_word_df = final_word_df.sort_values('word_length', ascending = False)
    return(final_word_df)

def get_spellbee_answers(x):
    content = requests.get(url)._content
    content = re.sub(".*window.games = ", "", str(content))
    content = re.sub("(.*?)\\;.*", "\\1", content)
    print(content)
    content = json.loads(content)
    valid_words = content['data']['dictionary']
    final_word_df = pd.DataFrame(valid_words, columns = ['word'])
    final_word_df['word_length'] = final_word_df['word'].str.len()
    final_word_df = final_word_df[final_word_df['word_length'] > 3]
    final_word_df = final_word_df.sort_values('word_length', ascending = False)
    return(final_word_df)

with gr.Blocks() as app:
    with gr.Row():
        no_centre = gr.Textbox(label = 'Letters Outside of Centre')
        centre = gr.Textbox(label = 'Centre Letter')
    with gr.Row():
        solve_button = gr.Button(value = 'Solve')
        get_today_answers = gr.Button(value = "Get Today's answers")
    with gr.Row():
        output_df = gr.DataFrame(headers = ['word', 'word_length'])
    solve_button.click(spell_bee_solver, inputs = [no_centre, centre], outputs = [output_df])
    get_today_answers.click(get_spellbee_answers, inputs = [no_centre], outputs = [output_df])

app.launch(debug = True, share = False)