Reputation: 21
while running script sometimes error come up:
Traceback (most recent call last):
File "C:\Users\dzwon\Desktop\osu_pp_watch_v15_FINAL.py", line 27, in <module>
data=(requests.get('https://osu.ppy.sh/api/get_user?k=' + APIkey + '&u=' + username)).json()
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\models.py", line 894, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python36\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python36\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Error can popup after 15 or 2 minutes or won't popup at all
the part of script that parse JSON
data=(requests.get('https://osu.ppy.sh/api/get_user?k=' + APIkey + '&u=' + username)).json()
pp = data[0]['pp_raw']
rank = data[0]['pp_rank']
and the JSON data
[{"user_id":"5390233","username":"dzwon21","count300":"439843","count100":"39207","count50":"5245","playcount":"3860","ranked_score":"753280488","total_score":"1708595594","pp_rank":"223986","level":"63.7695","pp_raw":"842.426","accuracy":"97.04467010498047","count_rank_ss":"53","count_rank_s":"235","count_rank_a":"264","country":"PL","pp_country_rank":"10947","events":[{"display_html":"<b><a href='\/u\/5390233'>dzwon21<\/a><\/b> unlocked the \"<b>Insanity Approaches<\/b>\" medal!","beatmap_id":"0","beatmapset_id":"0","date":"2017-07-12 17:43:17","epicfactor":"4"}]}]
Upvotes: 2
Views: 3176
Reputation: 168806
Your HTTP request is failing. You should check the success or failure of your HTTP request before grabbing the JSON data:
#UNTESTED
result=requests.get('https://osu.ppy.sh/api/get_user?k=' + APIkey + '&u=' + username)
if result.ok and result.headers['content-type'] == 'application/json':
data = result.json()
else:
raise SomeError("HTTP did not return data.")
pp = data[0]['pp_raw']
rank = data[0]['pp_rank']
Upvotes: 2