示例#1
0
文件: file.py 项目: Jormangeud/picard
    def _make_filename(self, filename, metadata):
        """Constructs file name based on metadata and file naming formats."""
        if config.setting["move_files"]:
            new_dirname = config.setting["move_files_to"]
            if not os.path.isabs(new_dirname):
                new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname))
        else:
            new_dirname = os.path.dirname(filename)
        new_filename, ext = os.path.splitext(os.path.basename(filename))

        if config.setting["rename_files"]:
            # expand the naming format
            format = config.setting["file_naming_format"]
            if len(format) > 0:
                new_filename = self._script_to_filename(format, metadata)
                if not config.setting["move_files"]:
                    new_filename = os.path.basename(new_filename)
                new_filename = make_short_filename(new_dirname, new_filename)
                # win32 compatibility fixes
                if config.setting["windows_compatible_filenames"] or sys.platform == "win32":
                    new_filename = new_filename.replace("./", "_/").replace(".\\", "_\\")
                # replace . at the beginning of file and directory names
                new_filename = new_filename.replace("/.", "/_").replace("\\.", "\\_")
                if new_filename and new_filename[0] == ".":
                    new_filename = "_" + new_filename[1:]
                # Fix for precomposed characters on OSX
                if sys.platform == "darwin":
                    new_filename = unicodedata.normalize("NFD", unicode(new_filename))
        return os.path.realpath(os.path.join(new_dirname, new_filename + ext.lower()))
示例#2
0
    def _make_filename(self, filename, metadata, settings):
        """Constructs file name based on metadata and file naming formats."""
        if settings["move_files"]:
            new_dirname = settings["move_files_to"]
            if not os.path.isabs(new_dirname):
                new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname))
        else:
            new_dirname = os.path.dirname(filename)
        new_filename, ext = os.path.splitext(os.path.basename(filename))

        if settings["rename_files"]:
            # expand the naming format
            format = settings['file_naming_format']
            if len(format) > 0:
                new_filename = self._script_to_filename(format, metadata, settings)
                if not settings['move_files']:
                    new_filename = os.path.basename(new_filename)
                new_filename = make_short_filename(new_dirname, new_filename)
                # win32 compatibility fixes
                if settings['windows_compatible_filenames'] or sys.platform == 'win32':
                    new_filename = new_filename.replace('./', '_/').replace('.\\', '_\\')
                # replace . at the beginning of file and directory names
                new_filename = new_filename.replace('/.', '/_').replace('\\.', '\\_')
                if new_filename[0] == '.':
                    new_filename = '_' + new_filename[1:]
                # Fix for precomposed characters on OSX
                if sys.platform == "darwin":
                    new_filename = unicodedata.normalize("NFD", new_filename)
        return os.path.realpath(os.path.join(new_dirname, new_filename + ext.lower()))
示例#3
0
文件: file.py 项目: weisslj/picard
    def _make_filename(self, filename, metadata, settings):
        """Constructs file name based on metadata and file naming formats."""
        if settings["move_files"]:
            new_dirname = settings["move_files_to"]
            if not os.path.isabs(new_dirname):
                new_dirname = os.path.normpath(
                    os.path.join(os.path.dirname(filename), new_dirname))
        else:
            new_dirname = os.path.dirname(filename)
        new_filename, ext = os.path.splitext(os.path.basename(filename))

        if settings["rename_files"]:
            # expand the naming format
            format = settings['file_naming_format']
            if len(format) > 0:
                new_filename = self._script_to_filename(
                    format, metadata, settings)
                if not settings['move_files']:
                    new_filename = os.path.basename(new_filename)
                new_filename = make_short_filename(new_dirname, new_filename)
                # win32 compatibility fixes
                if settings[
                        'windows_compatible_filenames'] or sys.platform == 'win32':
                    new_filename = new_filename.replace('./', '_/').replace(
                        '.\\', '_\\')
                # replace . at the beginning of file and directory names
                new_filename = new_filename.replace('/.', '/_').replace(
                    '\\.', '\\_')
                if new_filename[0] == '.':
                    new_filename = '_' + new_filename[1:]
                # Fix for precomposed characters on OSX
                if sys.platform == "darwin":
                    new_filename = unicodedata.normalize("NFD", new_filename)
        return os.path.realpath(
            os.path.join(new_dirname, new_filename + ext.lower()))
示例#4
0
    def _make_filename(self, filename, metadata, settings):
        """Constructs file name based on metadata and file naming formats."""
        if settings["move_files"]:
            new_dirname = settings["move_files_to"]
            if not os.path.isabs(new_dirname):
                new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname))
        else:
            new_dirname = os.path.dirname(filename)
        old_dirname = new_dirname
        new_filename, ext = os.path.splitext(os.path.basename(filename))

        if settings["rename_files"]:
            # expand the naming format
            format = settings["file_naming_format"]
            if settings["use_va_format"] and metadata["compilation"] == "1":
                format = settings["va_file_naming_format"]
            if len(format) > 0:
                new_filename = self._script_to_filename(format, metadata, settings)
                if not settings["move_files"]:
                    new_filename = os.path.basename(new_filename)
                new_filename = make_short_filename(new_dirname, new_filename)
                # win32 compatibility fixes
                if settings["windows_compatible_filenames"] or sys.platform == "win32":
                    new_filename = new_filename.replace("./", "_/").replace(".\\", "_\\")
                # replace . at the beginning of file and directory names
                new_filename = new_filename.replace("/.", "/_").replace("\\.", "\\_")
                if new_filename[0] == ".":
                    new_filename = "_" + new_filename[1:]
        return os.path.realpath(os.path.join(new_dirname, new_filename + ext.lower()))
示例#5
0
 def test_whitespace(self):
     fn = util.make_short_filename(
         "/home/me/", os.path.join("a1234567890   ", "  b1234567890  "), 22)
     self.failUnlessEqual(fn, os.path.join("a12345678", "b1"))
示例#6
0
 def test_whitespace(self):
     fn = util.make_short_filename("/home/me/", os.path.join("a1234567890   ", "  b1234567890  "), 22)
     self.assertEqual(fn, os.path.join("a12345678", "b1"))
示例#7
0
 def test_long_2(self):
     fn = util.make_short_filename("/home/me/", os.path.join("a1234567890", "b1234567890"), 22)
     self.assertEqual(fn, os.path.join("a12345678", "b1"))
示例#8
0
 def test_long(self):
     fn = util.make_short_filename("/home/me/", os.path.join("a1234567890", "b1234567890"), 20)
     self.assertEqual(fn, os.path.join("a123456", "b1"))
示例#9
0
 def test_long_2(self):
     fn = util.make_short_filename("/home/me/", os.path.join("a1234567890", "b1234567890"), 22)
     self.failUnlessEqual(fn, os.path.join("a12345678", "b1"))