def scan_path(self, src_path): """scan path to detect target files @src_path: unicode encoding is required""" if not os.path.exists(src_path): # not exists return None if os.path.isfile(src_path): # file rawname, ext = os.path.splitext(os.path.basename(src_path)) if not ext or ext not in self.ext_pool: # file extension check return 0 file_meta = {'rawname': [rawname], 'ext': ext, 'md5': util.md5_for_file(src_path), 'bytes': os.path.getsize(src_path), } wx.CallAfter(self.window.file_found, src_path, file_meta['md5']) return self.file_hdlr(src_path, file_meta) or 0 else: # dir added = 0 # ignore log/.git etc tar_path = set(os.listdir(src_path)) - self.ignore_seq self.cnt_scanned += len(tar_path) wx.CallAfter(self.window.file_scanned, self.cnt_scanned) for rel_path in tar_path: if self.stopFlag: return added abs_path = os.path.join(src_path, rel_path) if self.ignore_hidden and util.is_hiden(abs_path): continue # ignore hidden else: added += self.scan_path(abs_path) or 0 return added
def _add_file(self, src_path, file_meta): if 'md5' not in file_meta: file_meta['md5'] = md5_for_file(src_path) if "rawname" in file_meta: rawname = file_meta.pop("rawname").pop() self.output("add %s\n" % rawname) file_meta.update({'sizeInBytes': os.path.getsize(src_path), 'create_time': time.time() }) matcher = {'md5': file_meta['md5']} setter = {"$set": file_meta, "$addToSet": {"rawname": rawname}} self.db.book.update(matcher, setter, True) filename = '%s%s' % (file_meta['md5'], file_meta['ext']) dst_file = os.path.join(media_path, filename) if not os.path.exists(dst_file): shutil.copy(src_path, dst_file)
def _add_file(self, src_path, file_meta): if 'md5' not in file_meta: file_meta['md5'] = md5_for_file(src_path) if "rawname" in file_meta: rawname = file_meta.pop("rawname").pop() self.output("add %s\n" % rawname) file_meta.update({ 'sizeInBytes': os.path.getsize(src_path), 'create_time': time.time() }) matcher = {'md5': file_meta['md5']} setter = {"$set": file_meta, "$addToSet": {"rawname": rawname}} self.db.book.update(matcher, setter, True) filename = '%s%s' % (file_meta['md5'], file_meta['ext']) dst_file = os.path.join(media_path, filename) if not os.path.exists(dst_file): shutil.copy(src_path, dst_file)