You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
502 lines
15 KiB
Python
502 lines
15 KiB
Python
from flask import Flask, render_template, request, redirect, url_for
|
|
import os
|
|
import json
|
|
from datetime import datetime
|
|
import pytz
|
|
import random
|
|
from gtts import gTTS
|
|
|
|
import requests
|
|
|
|
# from nltk.corpus import wordnet as wn
|
|
from nltk.tokenize import SyllableTokenizer
|
|
from nltk import word_tokenize
|
|
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
|
|
app = Flask(__name__)
|
|
datap = ""
|
|
|
|
app = Flask(__name__)
|
|
|
|
text = None
|
|
str1=''
|
|
la=''
|
|
token=[]
|
|
collec=[]
|
|
|
|
bunch=[]
|
|
|
|
|
|
@app.route("/response/")
|
|
def wordnet():
|
|
|
|
with open("database.json", "r") as f: #close automatically
|
|
json_file = f.read()
|
|
database = json.loads(json_file)
|
|
|
|
# bunch = list(chosenword.keys())
|
|
|
|
|
|
|
|
if request.args.get("whatever"):
|
|
|
|
response = None
|
|
clicked_word = request.args.get("whatever")
|
|
SSP = SyllableTokenizer()
|
|
|
|
|
|
if clicked_word in database:
|
|
response = database[clicked_word]
|
|
stories = response["stories"]
|
|
a=stories[0]["A"]
|
|
b=stories[0]["B"]
|
|
word1 = SSP.tokenize(a)
|
|
word2 = SSP.tokenize(b)
|
|
remove1 = []
|
|
remove2 = []
|
|
pick=''
|
|
|
|
what = ["noun", "verb", "adjective", "adverb", "conjunction", "pronoun", "preposition", "exclamation", "determiner"]
|
|
pick='(potentially) ' + random.choice(what)
|
|
|
|
print("word1", word1, len(word1), type(word1))
|
|
print("word2", word2, len(word2), type(word2))
|
|
|
|
# word1 ['screw', 'dri', 'ver']
|
|
# word2 ['dri', 'ver']
|
|
|
|
for i in range(len(word1)):
|
|
print(i)
|
|
print(word1[i])
|
|
if word1[i] in word2:
|
|
remove1.append(word1[i])
|
|
remove2.append(word1[i])
|
|
|
|
print("remove1", remove1)
|
|
print("remove2", remove2)
|
|
for j in remove1:
|
|
word1.remove(j)
|
|
for k in remove1:
|
|
word2.remove(k)
|
|
print("word1", word1)
|
|
print("word2", word2)
|
|
# word2.remove(word1[i])
|
|
# word1.remove(word1[i])
|
|
|
|
if not len(word1)==0:
|
|
frab1=word1[0]
|
|
else:
|
|
frab1=""
|
|
if not len(word2)==0:
|
|
frab2=word2[-1]
|
|
else:
|
|
frab2=""
|
|
frab = frab1 + frab2
|
|
|
|
|
|
# print(os.path.exists(frab + ".json"))
|
|
# if not os.path.exists(frab + ".json"):
|
|
# with open(frab+".json", "w") as fra:
|
|
# frab = {
|
|
# frab : [frab]
|
|
# }
|
|
# json.dump(frab, fra, indent=1)
|
|
|
|
|
|
return render_template("response.html", clicked_word = clicked_word, database = database, stories=stories, a=a, b=b, word1=word1, word2=word2, frab=frab, pick=pick)
|
|
|
|
else:
|
|
return render_template("first.html", database = database)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/game2/', methods =['GET', 'POST'])
|
|
def game2():
|
|
with open("database.json", "r") as word: #close automatically
|
|
json_file = word.read()
|
|
chosenword = json.loads(json_file)
|
|
|
|
bunch=[]
|
|
bunch = list(chosenword.keys())
|
|
ranword = random.choice(bunch)
|
|
response = None
|
|
print(ranword)
|
|
|
|
if ranword in chosenword:
|
|
response = chosenword[ranword]
|
|
stories = response["stories"]
|
|
frab=stories[0]["frab"]
|
|
example=stories[0]["example"]
|
|
example2=stories[0]["example2"]
|
|
|
|
if request.method == 'GET':
|
|
return render_template("secondgame1.html", stories=stories, example=example, frab=frab, ranword=ranword, example2=example2)
|
|
|
|
elif request.args.get("whatever"):
|
|
frab = request.args.get("whatever")
|
|
|
|
guess1 = request.form.get('guess1')
|
|
guess2 = request.form.get('guess2')
|
|
|
|
SSP = SyllableTokenizer()
|
|
|
|
|
|
word1 = SSP.tokenize(guess1)
|
|
word2 = SSP.tokenize(guess2)
|
|
remove1 = []
|
|
remove2 = []
|
|
frab1=""
|
|
frab2=""
|
|
|
|
|
|
for i in range(len(word1)):
|
|
print(i)
|
|
print(word1[i])
|
|
if word1[i] in word2:
|
|
remove1.append(word1[i])
|
|
remove2.append(word1[i])
|
|
|
|
print("remove1", remove1)
|
|
print("remove2", remove2)
|
|
for j in remove1:
|
|
word1.remove(j)
|
|
for k in remove1:
|
|
word2.remove(k)
|
|
print("word1", word1)
|
|
print("word2", word2)
|
|
# word2.remove(word1[i])
|
|
# word1.remove(word1[i])
|
|
|
|
if not len(word1)==0:
|
|
frab1=word1[0]
|
|
else:
|
|
frab1=""
|
|
if not len(word2)==0:
|
|
frab2=word2[-1]
|
|
else:
|
|
frab2=""
|
|
|
|
newfrab = frab1 + frab2
|
|
|
|
return render_template("secondgame2.html", guess1=guess1, guess2=guess2, frab1=frab1, frab2=frab2, newfrab=newfrab, frab=frab)
|
|
|
|
# with open("game2.json", "r+") as jsonFile:
|
|
# gugu = {
|
|
# chosenword: [guess1, guess2]
|
|
# }
|
|
# json.dump(gugu, jsonFile, indent=1)
|
|
|
|
# else:
|
|
# return render_template("first3.html", chosenword = chosenword)
|
|
|
|
|
|
|
|
@app.route('/trad/', methods =['GET', 'POST'])
|
|
def trad():
|
|
if os.path.exists("hello3.mp3"):
|
|
os.remove("hello3.mp3")
|
|
|
|
text = None
|
|
str1=''
|
|
la=''
|
|
token=[]
|
|
collec=[]
|
|
mw2=[]
|
|
text2 = ''
|
|
|
|
|
|
with open("database.json", "r") as word: #close automatically
|
|
json_file = word.read()
|
|
data = json.loads(json_file)
|
|
|
|
for i in range(len(data)):
|
|
first=list(data.values())[i]['stories'][0]
|
|
if ' ' in first['A']:
|
|
mw2.append(first['A'])
|
|
if ' ' in first['B']:
|
|
mw2.append(first['B'])
|
|
i+=1
|
|
|
|
|
|
if request.args.get('text'):
|
|
text = request.args.get('text').lower()
|
|
first={}
|
|
|
|
for i in mw2:
|
|
if i in text:
|
|
i2 = i.replace(' ', '_')
|
|
text = text.replace(i, i2)
|
|
|
|
token = word_tokenize(text)
|
|
|
|
|
|
|
|
for i in range(len(data)):
|
|
first=list(data.values())[i]['stories'][0]
|
|
for j in range(len(token)):
|
|
if '_' not in token[j]:
|
|
if token[j]==first['A'] or token[j]==first['B']:
|
|
token[j]=first['frab']
|
|
collec.append(token[j])
|
|
elif '_' in token[j]:
|
|
token[j]=token[j].replace('_', ' ')
|
|
if token[j]==first['A'] or token[j]==first['B']:
|
|
token[j]=first['frab']
|
|
collec.append(token[j])
|
|
i+=1
|
|
|
|
print(token)
|
|
|
|
str1 = ' '.join(token)
|
|
# if str1 == '':
|
|
# str1 = text
|
|
# else:
|
|
# str1 = ' '.join(token)
|
|
# print(str1)
|
|
|
|
|
|
|
|
lan=["af", "ar", "bg", "bn", "bs", "ca", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "gu", "hi", "hr", "hu", "id", "is", "it", "ja", "jw", "km", "kn", "ko", "la", "lv", "ml", "mr", "my", "ne", "nl", "no", "pl", "pt", "ro", "ru", "si", "sk", "sq", "sr", "su", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "ur", "vi", "zh"]
|
|
|
|
la=random.choice(lan)
|
|
print(la)
|
|
|
|
tts = gTTS(str1, lang=la, tld='com.au')
|
|
tts.save('hello3.mp3')
|
|
|
|
|
|
# if " ." or " ," or " !" or " ?" or " '" or " :" or " ;" in str1:
|
|
# str1=str1.replace(" .", ".")
|
|
# str1=str1.replace(" ,", ",")
|
|
# str1=str1.replace(" !", "!")
|
|
# str1=str1.replace(" ?", "?")
|
|
# str1=str1.replace(" '", "'")
|
|
# str1=str1.replace(" :", ":")
|
|
# str1=str1.replace(" ;", ";")s
|
|
|
|
return render_template('transform.html', data=data, text=text, str1=str1, collec=collec, token=token)
|
|
|
|
|
|
|
|
|
|
@app.route('/submit/', methods =['GET','POST'])
|
|
def register():
|
|
if request.method == 'GET':
|
|
return render_template("submit.html")
|
|
else:
|
|
d={}
|
|
tagtag=''
|
|
tagtag2=''
|
|
example=""
|
|
time=""
|
|
tz_Amsterdam = pytz.timezone('Europe/Amsterdam')
|
|
datetime_Amsterdam = datetime.now(tz_Amsterdam)
|
|
time=datetime_Amsterdam.strftime("%d/%m/%Y %H:%M:%S") + "(Amsterdam time)"
|
|
name = request.form.get('name')
|
|
w1 = request.form.get('w1').lower()
|
|
w2 = request.form.get('w2').lower()
|
|
story = request.form.get('story')
|
|
d['User']=name
|
|
d['A']=w1
|
|
d['B']=w2
|
|
d['story']=story
|
|
d['Time']=time
|
|
|
|
|
|
|
|
#Making Frabjousish word
|
|
SSP = SyllableTokenizer()
|
|
|
|
|
|
word1 = SSP.tokenize(w1)
|
|
word2 = SSP.tokenize(w2)
|
|
remove1 = []
|
|
remove2 = []
|
|
|
|
print("word1", word1, len(word1), type(word1))
|
|
print("word2", word2, len(word2), type(word2))
|
|
|
|
# word1 ['screw', 'dri', 'ver']
|
|
# word2 ['dri', 'ver']
|
|
|
|
for i in range(len(word1)):
|
|
print(i)
|
|
print(word1[i])
|
|
if word1[i] in word2:
|
|
remove1.append(word1[i])
|
|
remove2.append(word1[i])
|
|
|
|
print("remove1", remove1)
|
|
print("remove2", remove2)
|
|
for j in remove1:
|
|
word1.remove(j)
|
|
for k in remove1:
|
|
word2.remove(k)
|
|
print("word1", word1)
|
|
print("word2", word2)
|
|
# word2.remove(word1[i])
|
|
# word1.remove(word1[i])
|
|
|
|
if not len(word1)==0:
|
|
frab1=word1[0]
|
|
else:
|
|
frab1=""
|
|
if not len(word2)==0:
|
|
frab2=word2[-1]
|
|
else:
|
|
frab2=""
|
|
frab = frab1 + frab2
|
|
d['frab']=frab
|
|
|
|
|
|
#example line (with wordnet -> not enough examples :()
|
|
# if wn.synsets(w1):
|
|
# selec=''
|
|
# line = wn.synsets(w1)[0].examples()
|
|
|
|
# #check if the example key includes the word
|
|
# for x in line:
|
|
# if w1 in x:
|
|
# selec=x
|
|
# break
|
|
# else:
|
|
# selec = selec
|
|
|
|
# line2 = selec.replace(w1, frab)
|
|
# d['example'] = line2
|
|
# else:
|
|
# d['example'] = ''
|
|
|
|
|
|
#example line with beautifulsoup
|
|
w3=''
|
|
if ' ' in w1:
|
|
w3=w1.replace(" ","%20")
|
|
else:
|
|
w3=w1
|
|
|
|
|
|
url = "https://lengusa.com/sentence-examples/" + w3
|
|
example = requests.get(url)
|
|
html = example.content
|
|
try:
|
|
scraped = BeautifulSoup(html, 'html.parser')
|
|
p_tag = scraped.find_all("p", class_="text-black mt-1 font-serif")[0].get_text()
|
|
p_tag2 = scraped.find_all("p", class_="text-black mt-1 font-serif")[1].get_text()
|
|
p_tag3 = scraped.find_all("p", class_="text-black mt-1 font-serif")[2].get_text()
|
|
|
|
if w1 in p_tag:
|
|
tagtag = p_tag.replace(w1, frab)
|
|
d['example']=tagtag
|
|
elif w1.capitalize() in p_tag:
|
|
tagtag = p_tag.replace(w1.capitalize(), frab)
|
|
d['example']=tagtag
|
|
elif w1 in p_tag2:
|
|
tagtag = p_tag2.replace(w1, frab)
|
|
d['example']=tagtag
|
|
elif w1.capitalize() in p_tag2:
|
|
tagtag = p_tag2.replace(w1.capitalize(), frab)
|
|
d['example']=tagtag
|
|
elif w1 in p_tag3:
|
|
tagtag = p_tag3.replace(w1, frab)
|
|
d['example']=tagtag
|
|
elif w1.capitalize() in p_tag3:
|
|
tagtag = p_tag3.replace(w1.capitalize(), frab)
|
|
d['example']=tagtag
|
|
else:
|
|
d['example']=''
|
|
except Exception as e:
|
|
print("1st", e,"word is not found!")
|
|
d['example']=''
|
|
|
|
#second example line with beautifulsoup
|
|
w4=''
|
|
if ' ' in w2:
|
|
w4=w2.replace(" ","%20")
|
|
else:
|
|
w4=w2
|
|
|
|
|
|
url2 = "https://lengusa.com/sentence-examples/" + w4
|
|
example2 = requests.get(url2)
|
|
html2 = example2.content
|
|
|
|
try:
|
|
scraped2 = BeautifulSoup(html2, 'html.parser')
|
|
|
|
|
|
p_tag4 = scraped2.find_all("p", class_="text-black mt-1 font-serif")[0].get_text()
|
|
p_tag5 = scraped2.find_all("p", class_="text-black mt-1 font-serif")[1].get_text()
|
|
p_tag6 = scraped2.find_all("p", class_="text-black mt-1 font-serif")[2].get_text()
|
|
|
|
if w2 in p_tag4:
|
|
tagtag2 = p_tag4.replace(w2, frab)
|
|
d['example2']=tagtag2
|
|
elif w2.capitalize() in p_tag4:
|
|
tagtag2 = p_tag4.replace(w2.capitalize(), frab)
|
|
d['example2']=tagtag2
|
|
elif w2 in p_tag5:
|
|
tagtag2 = p_tag5.replace(w2, frab)
|
|
d['example2']=tagtag2
|
|
elif w2.capitalize() in p_tag5:
|
|
tagtag2 = p_tag5.replace(w2.capitalize(), frab)
|
|
d['example2']=tagtag2
|
|
elif w2 in p_tag6:
|
|
tagtag2 = p_tag6.replace(w2, frab)
|
|
d['example2']=tagtag2
|
|
elif w2.capitalize() in p_tag6:
|
|
tagtag2 = p_tag6.replace(w2.capitalize(), frab)
|
|
d['example2']=tagtag2
|
|
else:
|
|
d['example2']=''
|
|
except Exception as e:
|
|
print("2nd", e ,"word is not found!")
|
|
d['example2']=''
|
|
|
|
|
|
if not (name and w1 and w2 and story and time) :
|
|
return "Please write everyting"
|
|
else:
|
|
|
|
with open("database.json", "r+") as jsonFile:
|
|
data = json.load(jsonFile)
|
|
if frab not in data:
|
|
data[frab] = {
|
|
"stories" : []
|
|
}
|
|
data[frab]["stories"].append(d)
|
|
#data.update(set)
|
|
|
|
with open("database.json", "w") as jsonFile:
|
|
json.dump(data, jsonFile, indent=2) #shift + tap -> further function appears
|
|
return render_template("thanks.html")
|
|
|
|
|
|
|
|
|
|
@app.route('/', methods =['GET','POST'])
|
|
def first():
|
|
return render_template("index.html")
|
|
|
|
|
|
@app.route('/letter/')
|
|
def letter():
|
|
return render_template("letter.html")
|
|
|
|
@app.route('/g/')
|
|
def gamemenu():
|
|
return render_template("g.html")
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
app.run(debug=True, port=5006)
|
|
|
|
|