Hello, Looks like things aren't moving that fast on the exiv2 bug so I looked into the exiftool code and found out how the file number is encoded: in brain dead way: ( at least on my canon 400D) in file : http://cpansearch.perl.org/src/EXIFTOOL/Image-ExifTool-8.60/lib/Image/ExifTool/Canon.pm look for string "# File number information (MakerNotes tag 0x93)" I hacked rapid-photo-downloader to implement this and you might be interested in integrating my ideas "your way". Here is what I did: in file metadataphoto.py: Here is my version of the shutter_count method ( bit shuffling to come with a 7 figures number:) TODO: guard those changes with a check on the camera model number ( see exiftool code) ( maybe those shuffling should be in exvi2) def shutter_count(self, missing=''): try: keys = self.exif_keys if 'Exif.Nikon3.ShutterCount' in keys: v = self['Exif.Nikon3.ShutterCount'].raw_value elif 'Exif.CanonFi.FileNumber' in keys: v = self['Exif.CanonFi.FileNumber'].raw_value v = int(v) d = (v & 0xffc00) >> 10 while d < 100: d += 0x40 v = d*10000 + ((v & 0x3ff ) << 4 ) + ((v >> 20) & 0x0f); elif 'Exif.Canon.FileNumber' in keys: v = self['Exif.Canon.FileNumber'].raw_value elif 'Exif.Canon.ImageNumber' in keys: v = self['Exif.Canon.ImageNumber'].raw_value else: return missing return str(v) except: return missing in file generatenameconfig.py I added two sub choices for formatting the shutter_count value TODO: create values specific to this use case: DCIM_DIRECTORY_NUMBER DCIM_IMAGE_NUMBER ? LIST_SHUTTER_COUNT_L2 = [ SEQUENCE_NUMBER_3, SEQUENCE_NUMBER_4, SEQUENCE_NUMBER_5, SEQUENCE_NUMBER_6, SUBFOLDER_SEQ_NUMBER, STORED_SEQ_NUMBER, ] in file generatename.py in method _get_metadata_component elif self.L1 == SHUTTER_COUNT: v = self.rpd_file.metadata.shutter_count() if self.L2 in [ SUBFOLDER_SEQ_NUMBER, STORED_SEQ_NUMBER ] : if self.L2 == SUBFOLDER_SEQ_NUMBER : v = str(v) v = v[:-4] if self.L2 == STORED_SEQ_NUMBER : v = str(v) v = v[-4:] else: if v: v = int(v) padding = LIST_SHUTTER_COUNT_L2.index(self.L2) + 3 formatter = '%0' + str(padding) + "i" v = formatter % v elif self.L1 == OWNER_NAME: v = self.rpd_file.metadata.owner_name() Those patches work for my Canon 400D ( and also for a old Canon A85 compact camera). If theses changes are more or less in line with your "roadmap", I can put a real patch together. I don't have a lot of DSLR so it's difficult for me to do regression tests ... With those changes I can configure rapid-photo-downloader according to my needs: I can extract the DCIM directory name and the file name from the image metadata.