|
|
@ -25,8 +25,10 @@ base_api_url = "https://api.modrinth.com:443/api/v1"
|
|
|
|
def failCheck(response, functOrigin):
|
|
|
|
def failCheck(response, functOrigin):
|
|
|
|
print("Status Code is: "+str(response.status_code))
|
|
|
|
print("Status Code is: "+str(response.status_code))
|
|
|
|
if response.status_code == 429:
|
|
|
|
if response.status_code == 429:
|
|
|
|
print("Too many requests!"+'\n'+"Waiting for 30 seconds...")
|
|
|
|
sleep_time = int(response.headers["X-Ratelimit-Reset"])+1
|
|
|
|
time.sleep(30) # Wait 30 seconds
|
|
|
|
print("Too many requests!"+'\n'+"Waiting for "+str(sleep_time)+" seconds...")
|
|
|
|
|
|
|
|
print(response.headers)
|
|
|
|
|
|
|
|
time.sleep(sleep_time) # Wait until API ratelimit is over
|
|
|
|
print("Retrying "+functOrigin+"...")
|
|
|
|
print("Retrying "+functOrigin+"...")
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
elif response.status_code != 200:
|
|
|
|
elif response.status_code != 200:
|
|
|
@ -36,46 +38,50 @@ dataCache = {}
|
|
|
|
def cacheData(function_name, cached_data):
|
|
|
|
def cacheData(function_name, cached_data):
|
|
|
|
print("Caching data!")
|
|
|
|
print("Caching data!")
|
|
|
|
dataCache[function_name] = cached_data
|
|
|
|
dataCache[function_name] = cached_data
|
|
|
|
|
|
|
|
#print(dataCache)
|
|
|
|
print("Stored "+function_name+"'s data to cache")
|
|
|
|
print("Stored "+function_name+"'s data to cache")
|
|
|
|
#
|
|
|
|
|
|
|
|
def modInfo(project):
|
|
|
|
def modInfo(project):
|
|
|
|
print("Calling modInfo()...")
|
|
|
|
print("Calling modInfo()...")
|
|
|
|
if "modInfo" in dataCache:
|
|
|
|
if "modInfo" in dataCache:
|
|
|
|
print("Returning cached data!")
|
|
|
|
print("Returning cached data!")
|
|
|
|
return dataCache["modInfo"]
|
|
|
|
return dataCache["modInfo"]
|
|
|
|
response = session.get(base_api_url+"/mod/"+project, family=socket.AF_INET)
|
|
|
|
else:
|
|
|
|
if failCheck(response, "modInfo") == True: #Attempt to requery API
|
|
|
|
|
|
|
|
response = session.get(base_api_url+"/mod/"+project, family=socket.AF_INET)
|
|
|
|
response = session.get(base_api_url+"/mod/"+project, family=socket.AF_INET)
|
|
|
|
api_response = response.json()
|
|
|
|
if failCheck(response, "modInfo") == True: #Attempt to requery API
|
|
|
|
cacheData("modInfo", api_response)
|
|
|
|
response = session.get(base_api_url+"/mod/"+project, family=socket.AF_INET)
|
|
|
|
return api_response
|
|
|
|
api_response = response.json()
|
|
|
|
|
|
|
|
cacheData("modInfo", api_response)
|
|
|
|
|
|
|
|
return api_response
|
|
|
|
|
|
|
|
|
|
|
|
def getVersions(project):
|
|
|
|
def getVersions(project):
|
|
|
|
print("Calling getVersions()...")
|
|
|
|
print("Calling getVersions()...")
|
|
|
|
if "getVersions" in dataCache:
|
|
|
|
if "getVersions" in dataCache:
|
|
|
|
print("Returning cached data!")
|
|
|
|
print("Returning cached data!")
|
|
|
|
return dataCache["getVersions"]
|
|
|
|
return dataCache["getVersions"]
|
|
|
|
workingDict = modInfo(project)
|
|
|
|
else:
|
|
|
|
versions = workingDict["versions"]
|
|
|
|
workingDict = modInfo(project)
|
|
|
|
cacheData("getVersions", versions)
|
|
|
|
versions = workingDict["versions"]
|
|
|
|
return versions
|
|
|
|
cacheData("getVersions", versions)
|
|
|
|
|
|
|
|
return versions
|
|
|
|
|
|
|
|
|
|
|
|
def getAllModVersionInfo(project):
|
|
|
|
def getAllModVersionInfo(project):
|
|
|
|
print("Calling getAllModVersionInfo()...")
|
|
|
|
print("Calling getAllModVersionInfo()...")
|
|
|
|
if "getAllModVersionInfo" in dataCache:
|
|
|
|
if "getAllModVersionInfo" in dataCache:
|
|
|
|
print("Returning cached data!")
|
|
|
|
print("Returning cached data!")
|
|
|
|
return dataCache["getAllMinecraftVersionInfo"]
|
|
|
|
return dataCache["getAllModVersionInfo"]
|
|
|
|
versions = getVersions(project)
|
|
|
|
else:
|
|
|
|
responseList = []
|
|
|
|
versions = getVersions(project)
|
|
|
|
numberOfVersions = len(versions)
|
|
|
|
responseList = []
|
|
|
|
for item in range(numberOfVersions):
|
|
|
|
numberOfVersions = len(versions)
|
|
|
|
response = session.get(base_api_url+"/version/"+versions[item], family=socket.AF_INET)
|
|
|
|
for item in range(numberOfVersions):
|
|
|
|
if failCheck(response, "getAllModVersionInfo") == True: #Attempt to requery API
|
|
|
|
|
|
|
|
response = session.get(base_api_url+"/version/"+versions[item], family=socket.AF_INET)
|
|
|
|
response = session.get(base_api_url+"/version/"+versions[item], family=socket.AF_INET)
|
|
|
|
api_response = response.json()
|
|
|
|
if failCheck(response, "getAllModVersionInfo") == True: #Attempt to requery API
|
|
|
|
responseList.append(api_response)
|
|
|
|
response = session.get(base_api_url+"/version/"+versions[item], family=socket.AF_INET)
|
|
|
|
cacheData("getAllMinecraftVersionInfo", responseList)
|
|
|
|
api_response = response.json()
|
|
|
|
return responseList
|
|
|
|
responseList.append(api_response)
|
|
|
|
|
|
|
|
cacheData("getAllModVersionInfo", responseList)
|
|
|
|
|
|
|
|
return responseList
|
|
|
|
|
|
|
|
|
|
|
|
def determine(project, whatToDetermine):
|
|
|
|
def determine(project, whatToDetermine):
|
|
|
|
print("Calling determine()...")
|
|
|
|
print("Calling determine()...")
|
|
|
|