Я программирую в школе, и скоро мне нужно будет запрограммировать мой последний кусок. Следующая программа (написанная на языке программирования Python) как программа, которую я пишу просто для тренировки доступа к API.
Я пытаюсь получить доступ к API для прицела, основанного на игре. Идея программы состоит в том, чтобы каждые 30 секунд проверять этот API на наличие изменений в данных, сохраняя их в наборах данных («baseRank» и «basePP»), как только он запускается, а затем сравнивать эти данные с новыми полученными данными. 30 секунд спустя
Вот моя программа:
import time
apiKey = '###'
rankDifferences = []
ppDifferences = []
const = True
username = '- Legacy'
url = "https://osu.ppy.sh/api/get_user?u={1}&k={0}".format(apiKey,username)
import urllib.request, json
with urllib.request.urlopen(url) as url:
stats = json.loads(url.read().decode())
stats = stats[0]
basePP = stats['pp_raw']
print(basePP)
baseRank = stats['pp_rank']
print(baseRank)
while const == True:
time.sleep(30)
import urllib.request, json
with urllib.request.urlopen(url) as url:
check = json.loads(url.read().decode())
check = check[0]
rankDifference = baseRank + check['pp_rank']
ppDifference = basePP + check['pp_raw']
baseRank = check['pp_raw']
basePP = check['pp_raw']
if rankDifference != 0:
print(rankDifference)
if ppDifference != 0:
print(ppDifference)`
Обратите внимание: там, где я написал 'apiKey =' ### '', я на самом деле использую реальный работающий ключ API, но я его спрятал, так как сайт просит не делиться своим ключом API с другие.
Вот состояние оболочки после запуска:
5206,55
12045
Traceback (последний вызов был последним):
Файл "C: / Users / ethan / Documents / osu API Accessor.py", строка 23, в
с urllib.request.urlopen (url) в качестве URL:
Файл
"C: \ Users \ ethan \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py",> строка 223, в urlopen
return opener.open (url, data, timeout)
Файл
"C: \ Users \ ethan \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ urllib \ request.py",> строка 518, в открытом виде
протокол = req.type
AttributeError: у объекта 'HTTPResponse' нет атрибута 'type'
Как вы можете видеть, он печатает как basePP, так и baseRank, доказывая, что я могу получить доступ к этому API. Проблема, кажется, когда я пытаюсь получить доступ к нему во второй раз. Честно говоря, я не совсем уверен, что означает эта ошибка. Поэтому, если вы не возражаете потратить время на объяснение и / или помощь в исправлении этой ошибки, это будет с благодарностью.
Примечание: я впервые пользуюсь этим форумом, поэтому, если я делаю что-то не так, мне очень жаль!