Example #1
0
def test_windowsfilenames():
    """Tests makeValidFilename windows_safe flag makes Windows-safe filenames
    """
    assertEquals(makeValidFilename("Test/File.avi", windows_safe = True), "Test_File.avi")
    assertEquals(makeValidFilename("\\/:*?<Evil>|\"", windows_safe = True), "______Evil___")
    assertEquals(makeValidFilename("COM2.txt", windows_safe = True), "_COM2.txt")
    assertEquals(makeValidFilename("COM2", windows_safe = True), "_COM2")
Example #2
0
def test_dotfilenames():
    """Tests makeValidFilename on filenames only consisting of .
    """
    assertEquals(makeValidFilename("."), "_.")
    assertEquals(makeValidFilename(".."), "_..")
    assertEquals(makeValidFilename("..."), "_...")
    assertEquals(makeValidFilename(".test.rc"), "_.test.rc")
def test_dotfilenames():
    """Tests makeValidFilename on filenames only consisting of .
    """
    assertEquals(makeValidFilename("."), "_.")
    assertEquals(makeValidFilename(".."), "_..")
    assertEquals(makeValidFilename("..."), "_...")
    assertEquals(makeValidFilename(".test.rc"), "_.test.rc")
def test_windowsfilenames():
    """Tests makeValidFilename windows_safe flag makes Windows-safe filenames
    """
    assertEquals(makeValidFilename("Test/File.avi", windows_safe = True), "Test_File.avi")
    assertEquals(makeValidFilename("\\/:*?<Evil>|\"", windows_safe = True), "______Evil___")
    assertEquals(makeValidFilename("COM2.txt", windows_safe = True), "_COM2.txt")
    assertEquals(makeValidFilename("COM2", windows_safe = True), "_COM2")
def _test_truncation(max_len, windows_safe):
    """Tests truncation works correctly.
    Called with different parameters for both Windows and Darwin/Linux.
    """
    assertEquals(makeValidFilename("a" * 300, windows_safe = windows_safe), "a" * max_len)
    assertEquals(makeValidFilename("a" * 255 + ".avi", windows_safe = windows_safe), "a" * (max_len-4) + ".avi")
    assertEquals(makeValidFilename("a" * 251 + "b" * 10 + ".avi", windows_safe = windows_safe), "a" * (max_len-4) + ".avi")
    assertEquals(makeValidFilename("test." + "a" * 255, windows_safe = windows_safe), "test." + "a" * (max_len-5))
Example #6
0
def _test_truncation(max_len, windows_safe):
    """Tests truncation works correctly.
    Called with different parameters for both Windows and Darwin/Linux.
    """
    assertEquals(makeValidFilename("a" * 300, windows_safe = windows_safe), "a" * max_len)
    assertEquals(makeValidFilename("a" * 255 + ".avi", windows_safe = windows_safe), "a" * (max_len-4) + ".avi")
    assertEquals(makeValidFilename("a" * 251 + "b" * 10 + ".avi", windows_safe = windows_safe), "a" * (max_len-4) + ".avi")
    assertEquals(makeValidFilename("test." + "a" * 255, windows_safe = windows_safe), "test." + "a" * (max_len-5))
Example #7
0
def test_replacewith():
    """Tests replacing blacklisted character with custom characters
    """
    assertEquals(
        makeValidFilename("My Test File.avi",
                          custom_blacklist=" ",
                          replace_with="."), "My.Test.File.avi")
Example #8
0
 def wrap_validfname(fname):
     """Wrap the makeValidFilename function as it's called twice
     and this is slightly long..
     """
     if Config['move_files_lowercase_destination']:
         fname = fname.lower()
     return makeValidFilename(
         fname,
         normalize_unicode = Config['normalize_unicode_filenames'],
         windows_safe = Config['windows_safe_filenames'],
         custom_blacklist = Config['custom_filename_character_blacklist'],
         replace_with = Config['replace_invalid_characters_with'])
Example #9
0
 def wrap_validfname(fname):
     """Wrap the makeValidFilename function as it's called twice
     and this is slightly long..
     """
     if Config['move_files_lowercase_destination']:
         fname = fname.lower()
     return makeValidFilename(
         fname,
         normalize_unicode=Config['normalize_unicode_filenames'],
         windows_safe=Config['windows_safe_filenames'],
         custom_blacklist=Config['custom_filename_character_blacklist'],
         replace_with=Config['replace_invalid_characters_with'])
Example #10
0
def getMoveDestination(episode):
    """Constructs the location to move/copy the file
    """

    #TODO: Write functional test to ensure this valid'ifying works
    def wrap_validfname(fname):
        """Wrap the makeValidFilename function as it's called twice
        and this is slightly long..
        """
        if Config['move_files_lowercase_destination']:
            fname = fname.lower()
        return makeValidFilename(
            fname,
            normalize_unicode=Config['normalize_unicode_filenames'],
            windows_safe=Config['windows_safe_filenames'],
            custom_blacklist=Config['custom_filename_character_blacklist'],
            replace_with=Config['replace_invalid_characters_with'])

    # Calls makeValidFilename on series name, as it must valid for a filename
    if isinstance(episode, DatedEpisodeInfo):
        destdir = Config['move_files_destination_date'] % {
            'seriesname': makeValidFilename(episode.seriesname),
            'year': episode.episodenumbers[0].year,
            'month': episode.episodenumbers[0].month,
            'day': episode.episodenumbers[0].day,
            'originalfilename': episode.originalfilename,
            'seasonnumber': 0,
        }
    elif isinstance(episode, NoSeasonEpisodeInfo):
        destdir = Config['move_files_destination'] % {
            'seriesname':
            wrap_validfname(episode.seriesname),
            'episodenumbers':
            wrap_validfname(formatEpisodeNumbers(episode.episodenumbers)),
            'originalfilename':
            episode.originalfilename,
            'seasonnumber':
            0,
        }
    else:
        destdir = Config['move_files_destination'] % {
            'seriesname':
            wrap_validfname(episode.seriesname),
            'seasonnumber':
            episode.seasonnumber,
            'episodenumbers':
            wrap_validfname(formatEpisodeNumbers(episode.episodenumbers)),
            'originalfilename':
            episode.originalfilename,
        }
    return destdir
Example #11
0
def movienamer(movie):
    directory = '/'.join(movie.split('/')[:-1])
    filename, extension = os.path.splitext(os.path.basename(movie))

    results = identify(filename, directory)
    if len(results) == 0:
        print movie + ': No results found. Skipping movie file\n'
        return False

    action = confirm(results, filename, extension)

    if action == 'SKIP':
        print 'Skipping movie file\n'
        return False
    elif action == 'QUIT':
        print 'Exiting movienamer'
        sys.exit()
    else:
        i = int(action)
        result = results[i - 1]

        if directory == '':
            directory = '.'

        title = makeValidFilename(result['title'], False, True, "", "_")

        dest = (directory + '/' + title + ' (' + result['year'] + ')' +
                extension)

        if os.path.isfile(dest):
            print 'File already exists: ' + dest
            print 'Overwrite?'
            final_confirmation = raw_input('([y]/n/q)'.encode('utf-8')).lower()
            if final_confirmation == '':
                final_confirmation = 'y'

            if final_confirmation not in ['y', 'n', 'q']:
                final_confirmation = raw_input(
                    '([y]/n/q)'.encode('utf-8')).lower()
                if final_confirmation == '':
                    final_confirmation = 'y'

            if final_confirmation == 'n':
                print 'Skipping movie file\n'
                return False
            elif final_confirmation == 'q':
                print 'Exiting movienamer'
                sys.exit()

        return movie, dest
Example #12
0
def getMoveDestination(episode):
    """Constructs the location to move/copy the file
    """

    #TODO: Write functional test to ensure this valid'ifying works
    def wrap_validfname(fname):
        """Wrap the makeValidFilename function as it's called twice
        and this is slightly long..
        """
        if Config['move_files_lowercase_destination']:
            fname = fname.lower()
        return makeValidFilename(
            fname,
            normalize_unicode = Config['normalize_unicode_filenames'],
            windows_safe = Config['windows_safe_filenames'],
            custom_blacklist = Config['custom_filename_character_blacklist'],
            replace_with = Config['replace_invalid_characters_with'])


    # Calls makeValidFilename on series name, as it must valid for a filename
    if isinstance(episode, DatedEpisodeInfo):
        destdir = Config['move_files_destination_date'] % {
            'seriesname': makeValidFilename(episode.seriesname),
            'year': episode.episodenumbers[0].year,
            'month': episode.episodenumbers[0].month,
            'day': episode.episodenumbers[0].day,
            'originalfilename': episode.originalfilename,
            }
    elif isinstance(episode, NoSeasonEpisodeInfo):
        destdir = Config['move_files_destination'] % {
            'seriesname': wrap_validfname(episode.seriesname),
            'episodenumbers': wrap_validfname(formatEpisodeNumbers(episode.episodenumbers)),
            'originalfilename': episode.originalfilename,
            }
    else:
        destdir = Config['move_files_destination'] % {
            'seriesname': wrap_validfname(episode.seriesname),
            'seasonnumber': episode.seasonnumber,
            'episodenumbers': wrap_validfname(formatEpisodeNumbers(episode.episodenumbers)),
            'originalfilename': episode.originalfilename,
            }
    return destdir
Example #13
0
def test_customblacklist():
    """Test makeValidFilename custom_blacklist feature
    """
    assertEquals(makeValidFilename("Test.avi", custom_blacklist="e"), "T_st.avi")
def test_replacewith():
    """Tests replacing blacklisted character with custom characters
    """
    assertEquals(makeValidFilename("My Test File.avi", custom_blacklist=" ", replace_with="."), "My.Test.File.avi")
def test_customblacklist():
    """Test makeValidFilename custom_blacklist feature
    """
    assertEquals(makeValidFilename("Test.avi", custom_blacklist="e"), "T_st.avi")
Example #16
0
def test_basic():
    """Test makeValidFilename does not mess up simple filenames
    """
    assertEquals(makeValidFilename("test.avi"), "test.avi")
    assertEquals(makeValidFilename("Test File.avi"), "Test File.avi")
    assertEquals(makeValidFilename("Test"), "Test")
Example #17
0
def test_dirseperators():
    """Tests makeValidFilename removes directory separators
    """
    assertEquals(makeValidFilename("Test/File.avi"), "Test_File.avi")
    assertEquals(makeValidFilename("Test/File"), "Test_File")
def test_dirseperators():
    """Tests makeValidFilename removes directory separators
    """
    assertEquals(makeValidFilename("Test/File.avi"), "Test_File.avi")
    assertEquals(makeValidFilename("Test/File"), "Test_File")
def test_basic():
    """Test makeValidFilename does not mess up simple filenames
    """
    assertEquals(makeValidFilename("test.avi"), "test.avi")
    assertEquals(makeValidFilename("Test File.avi"), "Test File.avi")
    assertEquals(makeValidFilename("Test"), "Test")