Last active
March 2, 2018 06:41
-
-
Save HiddenMotives/b2cbf3a361ba5f55d43c0caa4353ee85 to your computer and use it in GitHub Desktop.
Python-SimpleCache - File Based / JSON / Dictionary / List / Caching Module
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Author: Hidden Motives | |
# Github: https://github.com/HiddenMotives | |
import os | |
import json | |
import time | |
class SimpleCache: | |
def __init__(self,path="cache",extension="cache",expiry=0): | |
self.set_cache_path(path) | |
self.set_cache_extension(extension) | |
self.set_cache_expiry(expiry) | |
def get_cache_path(self, label=None): | |
return self.__path if not(label) else (self.get_cache_path() + label + self.get_cache_extension()) | |
def get_cache_extension(self): | |
return self.__extension | |
def get_cache_expiry(self): | |
return self.__expiry | |
def get_cache(self, label): | |
data = None | |
if(self.is_cached(label)): | |
data = json.load(open(self.get_cache_path(label))) | |
return data | |
def get_total_cached(self): | |
return [cached_file for cached_file in os.listdir(self.get_cache_path()) | |
if cached_file.endswith(self.get_cache_extension())] | |
def set_cache_path(self, path): | |
if(path[-1] != os.path.sep): | |
path = path + os.path.sep | |
if not os.path.exists(path): | |
os.makedirs(path) | |
self.__path = path | |
def set_cache_extension(self, extension): | |
self.__extension = extension if (extension[0] == ".") else "." + extension | |
def set_cache_expiry(self,expiry): | |
self.__expiry = expiry | |
def set_cache(self, label, data): | |
with open(self.get_cache_path(label), 'w') as cache_file: | |
cache_file.write(json.dumps(data)) | |
def is_cached(self, label): | |
if (os.path.isfile(self.get_cache_path(label))) and (self.get_cache_expiry() > 0) and ((time.time() - | |
os.path.getmtime(self.get_cache_path(label))) / (24 * 3600) >= self.get_cache_expiry()): | |
self.clearCache(label) | |
return os.path.isfile(self.get_cache_path(label)) | |
def clearCache(self, label=None): | |
if(label): | |
os.remove(self.get_cache_path(label)) | |
else: | |
for cache in self.get_total_cached(): | |
os.remove(self.get_cache_path(cache.rstrip(self.get_cache_extension()))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SimpleCache as sc | |
import requests | |
import json | |
cache = sc.SimpleCache(extension="json",expiry=1) | |
data = cache.get_cache("Bret") | |
if not(data): | |
req = requests.get("https://jsonplaceholder.typicode.com/users?username=Bret") | |
if(req.status_code == 200): | |
data = json.loads(req.text) | |
cache.set_cache("Bret", data) | |
print("Username: %s" %(data[0]["username"])) | |
print("Name: %s" %(data[0]["name"])) | |
print("Email: %s" %(data[0]["email"])) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment