2
2
import json
3
3
import random
4
4
import datetime
5
- from lepton import generate_joke
5
+ from joke_gen import generate_joke
6
+ import os
6
7
7
- with open (' jokes.json' , 'r' ) as f :
8
- jokes = json .load (f )
8
+ with open (" jokes.json" , "r" ) as f :
9
+ jokes = json .load (f )
9
10
10
11
app = Flask (__name__ )
11
12
12
- @app .route ('/' , methods = ['GET' , 'POST' ])
13
+
14
+ @app .route ("/" , methods = ["GET" , "POST" ])
13
15
def index ():
14
- if request .method == 'POST' :
15
- random .seed ()
16
- return jsonify (random .choice (jokes ))
17
- else :
18
- random .seed ()
19
- joke = random .choice (jokes )
20
- # calculate joke of the day
21
- random .seed (hash (datetime .datetime .now ().strftime ('%Y-%m-%d' )))
22
- joke_number = random .randint (0 , len (jokes ) - 1 )
23
- joke_of_the_day = jokes [joke_number ]
24
- # render html page
25
- html_page = render_template ('index.html' , joke = joke , html_page = "<html>...</html>" , jokes = jokes , joke_of_the_day = joke_of_the_day )
26
- return render_template ('index.html' , joke = joke , html_page = html_page , jokes = jokes , joke_of_the_day = joke_of_the_day )
27
-
28
- @app .route ('/puns' , methods = ['POST' ])
16
+ if request .method == "POST" :
17
+ random .seed ()
18
+ return jsonify (random .choice (jokes ))
19
+ else :
20
+ # detect if request is from a browser
21
+ if request .headers .get ("User-Agent" ) and "Mozilla" in request .headers .get (
22
+ "User-Agent"
23
+ ):
24
+ random .seed ()
25
+ joke = random .choice (jokes )
26
+ # calculate joke of the day
27
+ random .seed (hash (datetime .datetime .now ().strftime ("%Y-%m-%d" )))
28
+ joke_number = random .randint (0 , len (jokes ) - 1 )
29
+ joke_of_the_day = jokes [joke_number ]
30
+ # render html page
31
+ return render_template (
32
+ "index.html" ,
33
+ joke = joke ,
34
+ jokes = jokes ,
35
+ joke_of_the_day = joke_of_the_day ,
36
+ )
37
+ else :
38
+ random .seed ()
39
+ return jsonify (random .choice (jokes ))
40
+
41
+
42
+ @app .route ("/puns" , methods = ["GET" , "POST" ])
29
43
def puns ():
30
- data = request .get_json (silent = True )
31
- if data and 'number' in data :
32
- number = int (data ['number' ])
33
- else :
34
- number = len (jokes )
35
-
36
- return jsonify (random .choices (jokes , k = number ))
37
-
38
- @app .route ('/joke-of-the-day' , methods = ['POST' ])
44
+ if request .method == "GET" :
45
+ number = 10
46
+ if request .form .get ("number" ):
47
+ number = int (request .form .get ("number" ))
48
+ if number > len (jokes ):
49
+ number = len (jokes )
50
+ return jsonify (random .choices (jokes , k = number ))
51
+ else :
52
+ number = 10
53
+ if request .is_json :
54
+ data = request .get_json (silent = True )
55
+ if data and "number" in data :
56
+ number = int (data ["number" ])
57
+ if number > len (jokes ):
58
+ number = len (jokes )
59
+ return jsonify (random .choices (jokes , k = number ))
60
+
61
+
62
+ @app .route ("/joke-of-the-day" , methods = ["GET" , "POST" ])
39
63
def joke_of_the_day ():
40
- date = None
41
- if request .is_json :
42
- data = request .get_json (silent = True )
43
- if data and 'date' in data :
44
- date = data ['date' ]
45
-
46
- if date is None :
47
- date = datetime .datetime .now ().strftime ('%Y-%m-%d' )
48
-
49
- random .seed (hash (date ))
50
- joke_number = random .randint (0 , len (jokes ) - 1 )
51
- joke_of_the_day = jokes [joke_number ]
52
- return jsonify (joke_of_the_day )
53
-
54
- @app .route ('/generate-joke' , methods = ['POST' ])
64
+ if request .method == "GET" :
65
+ date = request .args .get ("date" )
66
+ if date is None :
67
+ date = datetime .datetime .now ().strftime ("%Y-%m-%d" )
68
+ random .seed (hash (date ))
69
+ joke_number = random .randint (0 , len (jokes ) - 1 )
70
+ joke_of_the_day = jokes [joke_number ]
71
+ return jsonify (joke_of_the_day )
72
+ else :
73
+ random .seed (hash (date ))
74
+ joke_number = random .randint (0 , len (jokes ) - 1 )
75
+ joke_of_the_day = jokes [joke_number ]
76
+ return jsonify (joke_of_the_day )
77
+ else :
78
+ date = None
79
+ if request .is_json :
80
+ data = request .get_json (silent = True )
81
+ if data and "date" in data :
82
+ date = data ["date" ]
83
+
84
+ if date is None :
85
+ date = datetime .datetime .now ().strftime ("%Y-%m-%d" )
86
+
87
+ random .seed (hash (date ))
88
+ joke_number = random .randint (0 , len (jokes ) - 1 )
89
+ joke_of_the_day = jokes [joke_number ]
90
+ return jsonify (joke_of_the_day )
91
+
92
+
93
+ @app .route ("/generate-joke" , methods = ["POST" ])
55
94
def generate_joke_api ():
56
- data = request .get_json (silent = True )
57
- if data and 'prompt' in data :
58
- prompt = data ['prompt' ]
59
- else :
60
- prompt = ""
61
- joke_string = generate_joke (prompt )
62
- try :
63
- joke_json = json .loads (joke_string )
64
- return jsonify (joke_json )
65
- except json .JSONDecodeError :
66
- return jsonify ({"error" : "Something went wrong while generating the joke" }), 500
67
-
68
- @app .route ('/generate-joke' , methods = ['GET' ])
95
+ data = request .get_json (silent = True )
96
+ if data and "prompt" in data :
97
+ prompt = data ["prompt" ]
98
+ else :
99
+ prompt = ""
100
+ joke_string = generate_joke (prompt )
101
+ try :
102
+ joke_json = json .loads (joke_string )
103
+ return jsonify (joke_json )
104
+ except json .JSONDecodeError :
105
+ print ("Something went wrong while generating the joke: \n " + joke_string )
106
+ return jsonify ({"error" : "Something went wrong while generating the joke" }), 500
107
+
108
+
109
+ @app .route ("/generate-joke" , methods = ["GET" ])
69
110
def generate_joke_page ():
70
- query = request .args .get ('prompt' )
71
- if query == None :
72
- query = ""
73
- joke_string = generate_joke (query )
74
- try :
75
- joke_json = json .loads (joke_string )
76
- return f'Q: { joke_json ["q" ]} \n A: { joke_json ["a" ]} '
77
- except json .JSONDecodeError :
78
- return "Something went wrong while generating the joke"
79
-
80
- @app .route ('/search-jokes' , methods = ['POST' ])
111
+ query = request .args .get ("prompt" )
112
+ if query == None :
113
+ query = ""
114
+ joke_string = generate_joke (query )
115
+ try :
116
+ joke_json = json .loads (joke_string )
117
+ return f'Q: { joke_json ["q" ]} \n A: { joke_json ["a" ]} '
118
+ except json .JSONDecodeError :
119
+ return "Something went wrong while generating the joke"
120
+
121
+
122
+ @app .route ("/search-jokes" , methods = ["POST" ])
81
123
def search_jokes ():
82
- data = request .get_json (silent = True )
83
- if data and 'query' in data :
84
- query = data ['query' ]
85
- else :
86
- return jsonify ({"error" : "No query provided" }), 400
87
- if data and 'limit' in data :
88
- limit = int (data ['limit' ])
89
- else :
90
- limit = 10
91
-
92
- results = []
93
- for joke in jokes :
94
- if query .lower () in joke ['q' ].lower () or query .lower () in joke ['a' ].lower () or query .lower () in joke ['tags' ]:
95
- results .append (joke )
96
- if len (results ) == limit :
97
- break
98
- return jsonify (results )
99
-
100
- @app .route ('/search-jokes' , methods = ['GET' ])
124
+ data = request .get_json (silent = True )
125
+ if data and "query" in data :
126
+ query = data ["query" ]
127
+ else :
128
+ return jsonify ({"error" : "No query provided" }), 400
129
+ if data and "limit" in data :
130
+ limit = int (data ["limit" ])
131
+ else :
132
+ limit = 10
133
+
134
+ results = []
135
+ for joke in jokes :
136
+ if (
137
+ query .lower () in joke ["q" ].lower ()
138
+ or query .lower () in joke ["a" ].lower ()
139
+ or query .lower () in joke ["tags" ]
140
+ ):
141
+ results .append (joke )
142
+ if len (results ) == limit :
143
+ break
144
+ return jsonify (results )
145
+
146
+
147
+ @app .route ("/search-jokes" , methods = ["GET" ])
101
148
def search_jokes_by_tag ():
102
- query = request .args .get ('query' )
103
- if query is None :
104
- return redirect ('/' )
105
- jokes_tmp = []
106
- for joke in jokes :
107
- if query .lower () in joke ['q' ].lower () or query .lower () in joke ['a' ].lower () or query .lower () in joke ['tags' ]:
108
- jokes_tmp .append (joke )
109
- print (jokes_tmp )
110
- return render_template ('search-jokes.html' , jokes = jokes_tmp )
111
-
112
- @app .route ('/search' , methods = ['GET' ])
149
+ query = request .args .get ("query" )
150
+ if query is None :
151
+ return redirect ("/" )
152
+ jokes_tmp = []
153
+ for joke in jokes :
154
+ if (
155
+ query .lower () in joke ["q" ].lower ()
156
+ or query .lower () in joke ["a" ].lower ()
157
+ or query .lower () in joke ["tags" ]
158
+ ):
159
+ jokes_tmp .append (joke )
160
+ # print(jokes_tmp)
161
+ return render_template ("search-jokes.html" , jokes = jokes_tmp )
162
+
163
+
164
+ @app .route ("/search" , methods = ["GET" ])
113
165
def search ():
114
- return search_jokes_by_tag ()
166
+ return search_jokes_by_tag ()
167
+
115
168
116
- @app .route (' /get-jokes-by-tag' , methods = [' POST' ])
169
+ @app .route (" /get-jokes-by-tag" , methods = [" POST" ])
117
170
def get_jokes_by_tag ():
118
- data = request .get_json (silent = True )
119
- if data and 'tag' in data :
120
- tag = data ['tag' ]
121
- else :
122
- return jsonify ({"error" : "No tag provided" }), 400
123
-
124
- results = []
125
- for joke in jokes :
126
- if tag in joke ['tags' ]:
127
- results .append (joke )
128
- return jsonify (results )
129
-
130
- if __name__ == '__main__' :
131
- app .run (host = '0.0.0.0' , port = 8080 , debug = True )
171
+ data = request .get_json (silent = True )
172
+ if data and "tag" in data :
173
+ tag = data ["tag" ]
174
+ else :
175
+ return jsonify ({"error" : "No tag provided" }), 400
176
+
177
+ results = []
178
+ for joke in jokes :
179
+ if tag in joke ["tags" ]:
180
+ results .append (joke )
181
+ return jsonify (results )
182
+
183
+
184
+ if __name__ == "__main__" :
185
+ if "DEBUG" in os .environ and os .environ ["DEBUG" ] == "TRUE" :
186
+ print ("Running in debug mode" )
187
+ app .run (host = "0.0.0.0" , port = 8080 , debug = True )
188
+ else :
189
+ app .run (host = "0.0.0.0" , port = 80 , debug = False )
0 commit comments