def test_ifempty(self):
        template = '${ifempty(var, \'test\', \'\')}'
        files = ['test.mkv']
        params = {'var': None}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['test'], results)

        template = '${ifempty(var, None, var+\'test\')}'
        files = ['test.mkv']
        params = {'var': 'ww'}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['wwtest'], results)
    def test_plex_multiepisode(self):
        template = '{plex}'
        files = ['file.mkv']
        params = {'show': 'TV Show', 'season': 1, 'episode_num': 2, 'episode_name': 'Episode Name',
                  'episode_num_final': 3}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['TV Show/Season 01/TV Show - S01E02-E03 - Episode Name.mkv'], results)

        params = {'show': 'TV Show', 'season': 1, 'episode_num': 2, 'episode_name': 'Episode Name',
                  'episode_num_final': 10}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['TV Show/Season 01/TV Show - S01E02-E10 - Episode Name.mkv'], results)
    def test_default_length(self):
        template = '${i|zpad}'
        files = [str(x) for x in range(5)]
        results = new_names(rename_process(template, files))
        self.assertEqual('01', results[0])

        template = '${i|zpad}'
        files = [str(x) for x in range(15)]
        results = new_names(rename_process(template, files))
        self.assertEqual('01', results[0])

        template = '${i|zpad}'
        files = [str(x) for x in range(100)]
        results = new_names(rename_process(template, files))
        self.assertEqual('001', results[0])
 def test_plex_specials(self):
     template = '{plex}'
     output_dir = '/Some/Path'
     files = ['file.mkv']
     params = {'show': 'TV Show', 'season': 0, 'episode_num': 2, 'episode_name': 'Episode Name', 'episode_num_final': None}
     results = new_names(rename_process(template, files, params=params, output_dir=output_dir))
     self.assertEqual(['/Some/Path/TV Show/Specials/TV Show - S00E02 - Episode Name.mkv'], results)
    def test_plex(self):
        template = '{plex}'
        files = ['file.mkv']
        params = {'show': 'TV Show', 'season': 1, 'episode_num': 2, 'episode_name': 'Episode Name',
                  'episode_num_final': None}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['TV Show/Season 01/TV Show - S01E02 - Episode Name.mkv'], results)

        params = {'show': 'TV Show', 'season': 1, 'episode_num': 2, 'episode_name': None, 'episode_num_final': None}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['TV Show/Season 01/TV Show - S01E02.mkv'], results)

        template = '/Some/Path/{plex}'
        params = {'show': 'TV Show', 'season': 1, 'episode_num': 2, 'episode_name': 'Episode Name',
                  'episode_num_final': None}
        results = new_names(rename_process(template, files, params=params))
        self.assertEqual(['/Some/Path/TV Show/Season 01/TV Show - S01E02 - Episode Name.mkv'], results)
Пример #6
0
 def _output(self, matched, not_matched, output_dir, dry_run):
     table = []
     for file, params in matched.items():
         new_name = rename_process(
             '{plex}', files=[file],
             output_dir=output_dir,
             params=params)[0][1]
         table.append((file, new_name))
     table.sort(key=lambda s: s[1])
     header = ('Input', 'Output')
     self._bulk_move(table, header, src_index=0, dest_index=1, print_table=True)
     if not_matched:
         print('Not Matched:')
         for file in not_matched:
             print('  {}'.format(file))
Пример #7
0
    def subexecute(self, ns):
        from texttable import Texttable
        from media_management_scripts.support.files import list_files
        from media_management_scripts.renamer import rename_process
        import os
        input_to_cmd = ns['input']
        template = ns['template']
        output = ns['output']
        regex = ns['regex']
        index_start = ns['index_start']
        recursive = ns['recursive']
        ignore_missing_regex = ns['ignore_missing_regex']
        filter_by_ext = ns['filter_by_ext']
        if recursive:
            if filter_by_ext:
                file_filter = lambda f: f.endswith(filter_by_ext)
            else:
                file_filter = lambda f: True
            files = []
            for f in input_to_cmd:
                if os.path.isdir(f):
                    files.extend(list_files(f, file_filter=file_filter))
                elif file_filter(f):
                    files.append(f)
        else:
            for f in input_to_cmd:
                if os.path.isdir(f):
                    raise Exception('Directory provided without recursive')
            files = input_to_cmd

        results = rename_process(template,
                                 files,
                                 index_start,
                                 output,
                                 regex,
                                 ignore_missing_regex=ignore_missing_regex)
        if ns['dry_run']:
            t = Texttable(max_width=0)
            t.set_deco(Texttable.VLINES | Texttable.HEADER)
            t.add_rows([('Source', 'Destination')] + results)
            print(t.draw())
        else:
            for src, dest in results:
                d = os.path.dirname(dest)
                if d:
                    os.makedirs(d, exist_ok=True)
                self._move(src, dest)
 def test_regex_missing_ifempty(self):
     template = '${ifempty(re[1], "Unknown", str(re[1])+" ")}'
     files = ['S2', 'S']
     regex = 'S(\d)'
     results = new_names(rename_process(template, files, regex=regex, ignore_missing_regex=True))
     self.assertEqual(['2 ', 'Unknown'], results)
 def test_regex_missing_ignore(self):
     template = '${re[1]}'
     files = ['S2', 'S']
     regex = 'S(\d)'
     results = new_names(rename_process(template, files, regex=regex, ignore_missing_regex=True))
     self.assertEqual(['2', ''], results)
 def test_regex_missing(self):
     template = '${re[1]}'
     files = ['S2', 'S']
     regex = 'S(\d)'
     with self.assertRaises(IndexError) as context:
         new_names(rename_process(template, files, regex=regex))
 def test_regex(self):
     template = '${re[1]}'
     files = ['S2', 'S1']
     regex = 'S(\d)'
     results = new_names(rename_process(template, files, regex=regex))
     self.assertEqual(['2', '1'], results)
 def test_concat2(self):
     template = '${zpad(i)+" "}'
     files = ['test.mkv', 'test2.mkv']
     results = new_names(rename_process(template, files))
     self.assertEqual(['01 ', '02 '], results)
 def test_nested(self):
     template = '${lpad(zpad(i), 3)}'
     files = ['test.mkv', 'test2.mkv']
     results = new_names(rename_process(template, files))
     self.assertEqual([' 01', ' 02'], results)
 def test_function(self):
     template = '${i | zpad}'
     files = ['test.mkv', 'test2.mkv']
     results = new_names(rename_process(template, files))
     self.assertEqual(['01', '02'], results)
 def test_output_dir2(self):
     template = 'Path/${i}'
     output_dir = '/Some/Path'
     files = ['test.mkv', 'test2.mkv']
     results = new_names(rename_process(template, files, output_dir=output_dir))
     self.assertEqual(['/Some/Path/Path/1', '/Some/Path/Path/2'], results)
 def test_rename(self):
     template = '${i}'
     files = ['test.mkv', 'test2.mkv']
     results = new_names(rename_process(template, files))
     self.assertEqual(['1', '2'], results)