7
7
class Jokes :
8
8
def __init__ (self ):
9
9
self .http = urllib3 .PoolManager ()
10
+ self .info = self .http .request ('GET' , "https://sv443.net/jokeapi/v2/info" )
10
11
print ("Sv443's JokeAPI" )
11
12
12
13
def build_request (
@@ -24,7 +25,7 @@ def build_request(
24
25
25
26
if len (category ):
26
27
for c in category :
27
- if not c .lower () in [ "programming" , "miscellaneous" , "dark" , "pun " ]:
28
+ if not c .lower () in self . info [ "categories " ]:
28
29
raise ValueError (
29
30
f'''Invalid category selected.
30
31
You selected { c } .
@@ -36,28 +37,21 @@ def build_request(
36
37
Leave blank for any.'''
37
38
)
38
39
39
- cats = "," .join (category ) + "?"
40
+ cats = "," .join (category )
40
41
else :
41
- cats = "Any? "
42
+ cats = "Any"
42
43
43
44
if len (blacklist ) > 0 :
44
45
for b in blacklist :
45
- if b not in [
46
- "nsfw" ,
47
- "religious" ,
48
- "political" ,
49
- "racist" ,
50
- "sexist"
51
- ]:
46
+ if b not in self .info ["flags" ]:
52
47
raise ValueError (
53
- '''\n \n
48
+ f'''
49
+
50
+
54
51
You have blacklisted flags which are not available or you have not put the flags in a list.
55
52
Available flags are:
56
- "racist"
57
- "religious"
58
- "political"
59
- "sexist"
60
- "nsfw"
53
+ { """
54
+ """ .join (self .info ["flags" ])}
61
55
'''
62
56
)
63
57
return
@@ -86,13 +80,7 @@ def build_request(
86
80
else :
87
81
search_string = urllib .parse .quote (search_string )
88
82
if id_range :
89
-
90
- response = self .http .request (
91
- 'GET' ,
92
- "https://sv443.net/jokeapi/v2/info"
93
- )
94
- dict = json .loads (response .data )
95
- range_limit = dict ["jokes" ]["totalCount" ]
83
+ range_limit = self .info ["totalCount" ]
96
84
97
85
if len (id_range ) > 2 :
98
86
raise ValueError ("id_range must be no longer than 2 items." )
@@ -143,13 +131,13 @@ def send_request(self,
143
131
request ,
144
132
headers = {'Authorization' : str (auth_token ),
145
133
'user-agent' : str (user_agent ),
146
- 'accept-encoding' : 'gzip'
134
+ # 'accept-encoding': 'gzip'
147
135
}
148
136
)
149
137
else :
150
138
r = self .http .request ('GET' , request , headers = {'user-agent' : str (user_agent )})
151
139
152
- data = r .data
140
+ data = r .data . decode ( 'utf-8' )
153
141
154
142
if response_format == "json" :
155
143
try :
@@ -158,7 +146,6 @@ def send_request(self,
158
146
print (data )
159
147
raise
160
148
else :
161
- data = str (data )[2 :- 1 ].replace (r'\n' , '\n ' ).replace ('\\ ' , '' )
162
149
if len (' ' .join (re .split ("error" , data .lower ().replace ("\n " , "NEWLINECHAR" ))[0 :][1 :]).replace (
163
150
'<' , '' ).replace ('/' , '' ).replace (' ' , '' ).replace (':' , '' ).replace ('>' , '' ).replace ('NEWLINECHAR' , '\n ' )) == 4 :
164
151
return [Exception (f"API returned an error. Full response: \n \n { data } " )]
@@ -183,7 +170,7 @@ def get_joke(
183
170
type = None ,
184
171
search_string = None ,
185
172
id_range = None ,
186
- amount = None ,
173
+ amount = 1 ,
187
174
lang = None ,
188
175
auth_token = None ,
189
176
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0" ,
0 commit comments