Add epub support
This commit is contained in:
34
image_cache.py
Normal file
34
image_cache.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from urllib.parse import urlparse
|
||||
from os.path import exists, join, dirname
|
||||
from os import makedirs
|
||||
from config import Config
|
||||
import requests
|
||||
|
||||
|
||||
def try_fetch(url):
|
||||
for _ in range(5):
|
||||
try:
|
||||
re = requests.get(url=url)
|
||||
if re.status_code == 200:
|
||||
return re.content
|
||||
except Exception:
|
||||
pass
|
||||
raise ValueError(f'HTTP ERROR {re.status_code} {re.reason}.')
|
||||
raise ValueError('Failed to fetch the image.')
|
||||
|
||||
|
||||
def get_cache(cfg: Config, url: str):
|
||||
u = urlparse(url)
|
||||
path = u.path
|
||||
if path.endswith('/'):
|
||||
path = path[:-1]
|
||||
path = join(cfg.img_cache_dir, path[1:])
|
||||
if exists(path):
|
||||
return path
|
||||
else:
|
||||
img = try_fetch(url)
|
||||
d = dirname(path)
|
||||
makedirs(d, exist_ok=True)
|
||||
with open(path, 'wb') as f:
|
||||
f.write(img)
|
||||
return path
|
||||
Reference in New Issue
Block a user