Merge pull request #308 from dgrisham/feat/hash-file-for-cache-fname

Hash file for cache filename
This commit is contained in:
Dylan Araps 2018-10-18 06:39:20 +11:00 committed by GitHub
commit f38d630a63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 3 deletions

View File

@ -4,7 +4,6 @@ Generate a palette using various backends.
import logging
import os
import random
import re
import sys
from . import theme
@ -86,9 +85,9 @@ def saturate_colors(colors, amount):
def cache_fname(img, backend, light, cache_dir, sat=""):
"""Create the cache file name."""
color_type = "light" if light else "dark"
file_name = re.sub("[/|\\|.]", "_", img)
file_hash = util.hashf(img)
file_parts = [file_name, color_type, backend, sat, __cache_version__]
file_parts = [file_hash, color_type, backend, sat, __cache_version__]
return [cache_dir, "schemes", "%s_%s_%s_%s_%s.json" % (*file_parts,)]

View File

@ -2,6 +2,7 @@
Misc helper functions.
"""
import colorsys
import hashlib
import json
import logging
import os
@ -178,3 +179,14 @@ def get_pid(name):
return False
return True
def hashf(fpath):
"""Get the md5 hash of a file."""
return hashlib.md5(file_bytes(open(fpath, 'rb'))).hexdigest()
def file_bytes(fpath):
"""Helper function to read file."""
with fpath:
return fpath.read()