示例#1
0
    def test_parse_filename(self):
        fname = "Sample-Show.S02E15"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 2)
        self.assertEqual(result["episode_numbers"], [15])

        fname = "Sample-Show"
        result = parser.parse_filename(fname)
        self.assertIsNone(result)

        fname = "Sample-Show.S02E15"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 2)
        self.assertEqual(result["episode_numbers"], [15])

        fname = "The Wire s05e10 30.mp4"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "The Wire", result)
        self.assertEqual(result["season_number"], 5)
        self.assertEqual(result["episode_numbers"], [10])

        fname = "30 Rock [2.10] Episode 210.avi"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "30 Rock", result)
        self.assertEqual(result["season_number"], 2)
        self.assertEqual(result["episode_numbers"], [10])
示例#2
0
    def test_parse_expr16(self):
        fname = "Sample.Show.Part.1.and.Part.2 "
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample.Show", result)
        self.assertEqual(result["season_number"], 1)
        self.assertEqual(result["episode_numbers"], [1, 2])

        fname = "Sample.Show.pt.1 & pt 2 & pt.3 "
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample.Show", result)
        self.assertEqual(result["season_number"], 1)
        self.assertEqual(result["episode_numbers"], [1, 2, 3])
示例#3
0
    def test_parse_expr14(self):
        fname = "SampleShow - episode 1219 [S 13 - E 07]"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "SampleShow", result)
        self.assertEqual(result["season_number"], 13)
        self.assertEqual(result["episode_numbers"], [7])

        fname = "SampleShow - episode 1219 [S 13 Ep 07]"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "SampleShow", result)
        self.assertEqual(result["season_number"], 13)
        self.assertEqual(result["episode_numbers"], [7])
示例#4
0
    def test_parse_expr6(self):
        fname = "Sample-Show.2x11-15"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 2)
        self.assertEqual(result["episode_numbers"], [11, 12, 13, 14, 15])

        fname = "Sample-Show.2x15-12"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 2)
        self.assertEqual(result["episode_numbers"], [12, 13, 14, 15])
示例#5
0
    def test_parse_expr11(self):
        fname = "Sample-Show S09.E11"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 9)
        self.assertEqual(result["episode_numbers"], [11])

        fname = "Sample-Show S09_E11"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 9)
        self.assertEqual(result["episode_numbers"], [11])

        fname = "Sample-Show S09 - E11"
        result = parser.parse_filename(fname)
        self.assertEqual(result["series_name"], "Sample-Show", result)
        self.assertEqual(result["season_number"], 9)
        self.assertEqual(result["episode_numbers"], [11])
示例#6
0
    def parse(self):
        """Extracts component keys from filename.

        :raises tvrenamer.exceptions.InvalidFilename:
            when filename was not parseable
        :raises tvrenamer.exceptions.ConfigValueError:
            when regex used for parsing was incorrectly configured
        """

        self.clean_name = formatter.apply_replacements(
            self.name, cfg.CONF.input_filename_replacements)

        output = parser.parse_filename(self.clean_name)

        if output is None:
            self.messages.append(
                'Invalid filename: unable to parse {0}'.format(
                    self.clean_name))
            LOG.info(self.messages[-1])
            raise exc.InvalidFilename(self.messages[-1])

        self.episode_numbers = output.get('episode_numbers')
        if self.episode_numbers is None:
            self.messages.append(
                'Regex does not contain episode number group, '
                'should contain episodenumber, episodenumber1-9, '
                'or episodenumberstart and episodenumberend\n\n'
                'Pattern was:\n' + output.get('pattern'))
            LOG.info(self.messages[-1])
            raise exc.ConfigValueError(self.messages[-1])

        self.series_name = output.get('series_name')
        if self.series_name is None:
            self.messages.append(
                'Regex must contain seriesname. Pattern was:\n' +
                output.get('pattern'))
            LOG.info(self.messages[-1])
            raise exc.ConfigValueError(self.messages[-1])

        self.series_name = formatter.clean_series_name(self.series_name)
        self.season_number = output.get('season_number')
示例#7
0
    def parse(self):
        """Extracts component keys from filename.

        :raises tvrenamer.exceptions.InvalidFilename:
            when filename was not parseable
        :raises tvrenamer.exceptions.ConfigValueError:
            when regex used for parsing was incorrectly configured
        """

        self.clean_name = formatter.apply_replacements(
            self.name, cfg.CONF.input_filename_replacements)

        output = parser.parse_filename(self.clean_name)

        if output is None:
            self.messages.append(
                'Invalid filename: unable to parse {0}'.format(
                    self.clean_name))
            LOG.info(self.messages[-1])
            raise exc.InvalidFilename(self.messages[-1])

        self.episode_numbers = output.get('episode_numbers')
        if self.episode_numbers is None:
            self.messages.append(
                'Regex does not contain episode number group, '
                'should contain episodenumber, episodenumber1-9, '
                'or episodenumberstart and episodenumberend\n\n'
                'Pattern was:\n' + output.get('pattern'))
            LOG.info(self.messages[-1])
            raise exc.ConfigValueError(self.messages[-1])

        self.series_name = output.get('series_name')
        if self.series_name is None:
            self.messages.append(
                'Regex must contain seriesname. Pattern was:\n' +
                output.get('pattern'))
            LOG.info(self.messages[-1])
            raise exc.ConfigValueError(self.messages[-1])

        self.series_name = formatter.clean_series_name(self.series_name)
        self.season_number = output.get('season_number')
示例#8
0
 def test_parse_expr1(self):
     fname = "Sample.Show.S01E01.S01E02.S01E03.S01E04.eps.mp4"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample.Show", result)
     self.assertEqual(result["season_number"], 1)
     self.assertEqual(result["episode_numbers"], [1, 2, 3, 4])
示例#9
0
 def test_parse_expr8(self):
     fname = "Sample.Show-[013]"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample.Show", result)
     self.assertEqual(result["season_number"], 1)
     self.assertEqual(result["episode_numbers"], [13])
示例#10
0
 def test_parse_expr9(self):
     fname = "Sample.S0202"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample", result)
     self.assertEqual(result["season_number"], 2)
     self.assertEqual(result["episode_numbers"], [2])
示例#11
0
 def test_parse_expr12(self):
     fname = "Sample_Show-[09.01]"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample_Show", result)
     self.assertEqual(result["season_number"], 9)
     self.assertEqual(result["episode_numbers"], [1])
示例#12
0
 def test_parse_expr7(self):
     fname = "Sample-Show.[3x11-13]"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample-Show", result)
     self.assertEqual(result["season_number"], 3)
     self.assertEqual(result["episode_numbers"], [11, 12, 13])
示例#13
0
 def test_parse_expr18(self):
     fname = "Sample.Show season 10 episode 15"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample.Show", result)
     self.assertEqual(result["season_number"], 10)
     self.assertEqual(result["episode_numbers"], [15])
示例#14
0
 def test_parse_expr4(self):
     fname = "Sample.Show.4x4x5x6"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample.Show", result)
     self.assertEqual(result["season_number"], 4)
     self.assertEqual(result["episode_numbers"], [4, 5, 6])
示例#15
0
 def test_parse_expr3(self):
     fname = "Sample.Show.3x12.3x13.3x14"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample.Show", result)
     self.assertEqual(result["season_number"], 3)
     self.assertEqual(result["episode_numbers"], [12, 13, 14])
示例#16
0
 def test_parse_expr2(self):
     fname = "Sample-Show.S02e22e23e24"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample-Show", result)
     self.assertEqual(result["season_number"], 2)
     self.assertEqual(result["episode_numbers"], [22, 23, 24])
示例#17
0
 def test_parse_expr10(self):
     fname = "Sample_Show-7x17"
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample_Show", result)
     self.assertEqual(result["season_number"], 7)
     self.assertEqual(result["episode_numbers"], [17])
示例#18
0
 def test_parse_expr20(self):
     fname = "Sample Show 1011 "
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample Show", result)
     self.assertEqual(result["season_number"], 10)
     self.assertEqual(result["episode_numbers"], [11])
示例#19
0
 def test_parse_expr19(self):
     fname = "Sample Show 909 "
     result = parser.parse_filename(fname)
     self.assertEqual(result["series_name"], "Sample Show", result)
     self.assertEqual(result["season_number"], 9)
     self.assertEqual(result["episode_numbers"], [9])