def name_file(self): base_path = '/Volumes/Papa/.finished' file = '[SomeText] Hello my (name is andre) [ANDRE]' file_namer = FileNamer() new_name = file_namer.clean_name_for_raw_file(file, base_path) print('old name:', file, '\nnew name:', new_name) return None
def __init__(self, base_path): self.base_path = base_path self.file_namer = FileNamer() self.files_to_ignore = {'.DS_Store'} self.namer = Names(names_to_exclude=[ 'random', 'series', 'finished' ]) self.names = []
def rename_file(self, file_name, names, should_print=True): new_name = FileNamer().make_new_filename_multiple_names( self._handle_names(names), file_name, self.path) shutil.move(os.path.join(self.path, file_name), os.path.join(self.path, new_name)) if should_print: print('moving:', file_name, '-----> to:', new_name, '\n') return new_name
def rename_files(self): i = 0 while i < len(self.arguments): names = self.arguments[i] numbers = self.arguments[i + 1] names_list = self._handle_names(names) for index in self._handle_numbers(numbers): old_name = self.files[index] new_name = FileNamer().make_new_filename_multiple_names( names_list, old_name, self.path) shutil.move(os.path.join(self.path, old_name), os.path.join(self.path, new_name)) #print('moving:', old_name, '-----> to:', new_name, '\n') i += 2 return None
def makeNewFile(self, nameList, aFile, pathToFile, fileNumber): if FileFormatter().file_contains_format(aFile, pathToFile): newFile = FileNamer().makeNewFileName(nameList, aFile, pathToFile) if newFile != aFile: src = pathToFile + aFile dst = pathToFile + newFile shutil.move(src, dst) print( fileNumber, '-- from: ' + aFile + '\n' + str(fileNumber) + ' -- to: ' + newFile + '\n') elif not os.path.isdir(pathToFile + aFile): os.remove(pathToFile + aFile) print(fileNumber, '-- removing file: ' + aFile + '\n') newFile = None else: print('File is a dir: ' + pathToFile + aFile) newFile = None return newFile
class FormatFiles: def __init__(self, base_path): self.base_path = base_path self.file_namer = FileNamer() self.files_to_ignore = {'.DS_Store'} self.namer = Names(names_to_exclude=[ 'random', 'series', 'finished' ]) self.names = [] def format(self): self._format_helper(self.base_path) return None def _setup(self): self.namer.get_names_from_files() self.names = self.namer.first_and_last_names() return None def _format_helper(self, base_path): files = os.listdir(base_path) for file in files: if file in self.files_to_ignore: continue print('file:', file) file_path = os.path.join(base_path, file) if os.path.isdir(file_path): self._format_helper(file_path) new_name = self.file_namer.clean_name_for_raw_file(file, base_path) new_path = os.path.join(base_path, new_name) print('Moving:', file_path, '\n', new_path, '\n') shutil.move(file_path, new_path) return None def add_names_no_spaces(self): self._setup() self._add_names_no_spaces_helper(self.base_path) return None def _add_names_no_spaces_helper(self, base_path): files = os.listdir(base_path) for file in files: file_path = os.path.join(base_path, file) if os.path.isdir(file_path): self._add_names_no_spaces_helper(file_path) else: for name in self.names: indexes = self._all_indexes(file, name[0]) for i in indexes: last_name_index = i + len(name[0]) try: last_name = file[last_name_index:last_name_index + len(name[1])] except IndexError: continue if last_name == name[1]: new_file = file[:last_name_index] + '_' + file[last_name_index:] last_name_index += 1 next_index = last_name_index + len(name[1]) if (next_index < len(new_file) - 1 and new_file[next_index] != '_' and new_file[next_index] != '.'): new_file = new_file[:next_index] + '_' + new_file[next_index:] prev_index = i - 1 if prev_index >=0 and new_file[prev_index] != '_': new_file = new_file[:i] + '_' + new_file[i:] new_file_path = os.path.join(base_path, new_file) print('moving:\t', file_path, '\n\t', new_file_path, '\n') shutil.move(file_path, new_file_path) file = new_file file_path = new_file_path return None def _all_indexes(self, input_string, target): indexes = [] i = 0 while True: i = input_string.find(target, i) if i == -1: break indexes.append(i) i += len(target) return indexes