def _already_downloaded(self, res_fullpath): if not os.path.exists(res_fullpath): return False res_dir, res_filename = os.path.split(res_fullpath) meta_data = self._load_meta_data(res_dir) if not meta_data or res_filename not in meta_data: return False md5 = fileutil.get_md5(res_fullpath) size = os.stat(res_fullpath).st_size return md5 and meta_data[res_filename].get('md5', '') == md5 \ and meta_data[res_filename].get('size', -1) == size
def _write_meta_data(self, res_fullpath, url): res_dir, res_filename = os.path.split(res_fullpath) meta_data = self._load_meta_data(res_dir) if not meta_data: meta_data = {} meta_data[res_filename] = { 'md5': fileutil.get_md5(res_fullpath), 'size': os.stat(res_fullpath).st_size, 'datetime': datetime.datetime.now().isoformat(), 'url': url, } with open(self._get_meta_file(res_dir), 'w', encoding='utf-8') as fp: json.dump(meta_data, fp, indent=2)