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