def query(self, *args, onlyCached=False, **kwargs):
queryString, hashString = self._queryString(*args, **kwargs)
filename = self.__cacheDir + '/' + self._prefix + '-' + self.__hash(hashString)
if not os.path.exists(self.__cacheDir):
os.makedirs(self.__cacheDir)
if os.path.exists(filename):
with open(filename, 'r') as file:
data = ujson.load(file)
elif onlyCached:
print('[' + self._prefix + '] data not cached: ' + queryString)
return None
else:
print('[' + self._prefix + '] downloading data: ' + queryString)
if self._waitForReady() == None:
if self.__lastQuery and self.__waitBetweenQueries and time.time() - self.__lastQuery < self.__waitBetweenQueries:
time.sleep(self.__waitBetweenQueries - time.time() + self.__lastQuery)
self.__lastQuery = time.time()
data = self.__query(queryString)
with open(filename, 'w') as file:
ujson.dump(data, file)
result = self._rawToResult(data, queryString)
if not self._isValid(result):
raise(Exception('[' + self._prefix + '] error in result (' + filename + '): ' + queryString))
return result
评论列表
文章目录