Esempio n. 1
0
    def getepdata(self):
        """ Return dict of formatted data available to config'd output file format
        """

        epdata = self.extra.copy()
        epdata.update({
            'originalfilename': self.fullfilename,
            'ext': self.extension,
            'episode': formatEpisodeNumbers(self.episodenumbers),
        })

        # format dynamic parts according to config
        for key in epdata.keys():
            if key == 'originalfilename':
                continue
            if key == 'episodename':
                epdata[key] = formatEpisodeNames(epdata[key])
            if key in ('seriesname', 'episodename'):
                if Config['lowercase_dynamic_parts']:
                    epdata[key] = epdata[key].lower()
                elif Config['titlecase_dynamic_parts']:
                    epdata[key] = titlecase(epdata[key])
                epdata[key] = makeValidFilename(epdata[key])

            # TODO: would be better to expose only strings? (%s can accept int, but %d cannot accept str,
            # so using %s in format strings is less error-prone)
            if key == 'seasonnumber':
                epdata[key] = int(epdata[key])

        return epdata
Esempio n. 2
0
    def generateFilename(self, lowercase = False, preview_orig_filename = False):
        epdata = self.getepdata()

        # Add in extra dict keys, without clobbering existing values in epdata
        extra = self.extra.copy()
        extra.update(epdata)
        epdata = extra

        if Config['use_alternate_seriesname_seperator']:
            epdata['seriesname'] = epdata['seriesname'].replace(" ", Config['alternate_seriesname_seperator'])

        if self.episodename is None:
            fname = Config[self.CFG_KEY_WITHOUT_EP] % epdata
        else:
            if isinstance(self.episodename, list):
                epdata['episodename'] = formatEpisodeName(
                    self.episodename,
                    join_with = Config['multiep_join_name_with'])
            fname = Config[self.CFG_KEY_WITH_EP] % epdata

        if Config['titlecase_filename']:
            from _titlecase import titlecase
            fname = titlecase(fname)

        if lowercase or Config['lowercase_filename']:
            fname = fname.lower()

        if preview_orig_filename:
            # Return filename without custom replacements or filesystem-validness
            return fname

        if len(Config['output_filename_replacements']) > 0:
            fname = applyCustomOutputReplacements(fname)

        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'])
Esempio n. 3
0
    def generateFilename(self, lowercase=False, preview_orig_filename=False):
        epdata = self.getepdata()

        # Add in extra dict keys, without clobbering existing values in epdata
        extra = self.extra.copy()
        extra.update(epdata)
        epdata = extra

        if self.episodename is None:
            fname = Config[self.CFG_KEY_WITHOUT_EP] % epdata
        else:
            if isinstance(self.episodename, list):
                epdata['episodename'] = formatEpisodeName(
                    self.episodename,
                    join_with=Config['multiep_join_name_with'],
                    multiep_format=Config['multiep_format'])
            fname = Config[self.CFG_KEY_WITH_EP] % epdata

        if Config['titlecase_filename']:
            from _titlecase import titlecase
            fname = titlecase(fname)

        if lowercase or Config['lowercase_filename']:
            fname = fname.lower()

        if preview_orig_filename:
            # Return filename without custom replacements or filesystem-validness
            return fname

        if len(Config['output_filename_replacements']) > 0:
            fname = applyCustomOutputReplacements(fname)

        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'])