Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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 = []
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
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