def getMeta(path, args): m = Metadata(path) if args.print: print( 'getMeta: {} exif_tags, {} iptc_tags, {} xmp_tags, path {}, dateFromDirname {}' .format( len(m.get_exif_tags()), len(m.get_iptc_tags()), len(m.get_xmp_tags()), path, dateFromDirname.strftime(DATE_FORMAT) if dateFromDirname else None)) for t in m.get_tags(): # if t != 'Exif.Photo.MakerNote': # avoid big binary? item if any(x in t for x in [ 'Date', 'Image.Make', 'Model', 'Categories', 'GPS', 'Latitude', 'Longitude' ]): print('getMeta: {} -> {}'.format(t, m.get(t))) if any(x in t for x in [ 'Tags', 'LastKeywordXMP', 'HierarchicalSubject', 'CatalogSets', 'Subject', 'Keywords' ]): print('getMeta: {} => [ {} ]'.format( t, ', '.join(m.get_tag_multiple(t)))) return m
def metadata_summary(path): exif = Metadata() exif.open_path(path) taglist = exif.get_tags() # Date date = [] if 'Exif.Photo.DateTimeOriginal' in taglist: date.append(exif['Exif.Photo.DateTimeOriginal']) if 'Xmp.exif.DateTimeOriginal' in taglist: date.append(exif['Xmp.exif.DateTimeOriginal']) #date.append(time.ctime(os.path.getmtime(path))) if len(date) > 0: date = time.strftime("%d/%m/%Y %H:%M:%S", time.strptime(date[0], "%Y:%m:%d %H:%M:%S")) else: date = "" # Orientation ori = exif.get('Exif.Image.Orientation', "?") # Tags tags = [] if 'Iptc.Application2.Keywords' in taglist: tags.append(exif['Iptc.Application2.Keywords']) if 'Xmp.dc.subject' in taglist: tags += exif['Xmp.dc.subject'].split(",") if 'Xmp.digiKam.TagsList' in taglist: tags += exif['Xmp.digiKam.TagsList'].split(",") if 'Xmp.MicrosoftPhoto.LastKeywordXMP' in taglist: tags += exif['Xmp.MicrosoftPhoto.LastKeywordXMP'].split(",") tags = [x.strip() for x in tags] tags = list(set(tags)) tags.sort() # Title aux = [] title = "" if 'Iptc.Application2.Caption' in taglist: aux.append(exif['Iptc.Application2.Caption']) if 'Xmp.dc.title' in taglist: aux.append(exif['Xmp.dc.title']) if 'Iptc.Application2.Headline' in taglist: aux.append(exif['Iptc.Application2.Headline']) if len(aux) > 0: title = aux[0] # Software aux = [] soft = "" if 'Exif.Image.Software' in taglist: aux.append(exif['Exif.Image.Software']) if 'Iptc.Application2.Program' in taglist: aux.append(exif['Iptc.Application2.Program']) if len(aux) > 0: soft = list(set(aux))[0] # Shorten title and soft if len(title) > 13: title = title[:10] + "..." if len(soft) > 15: soft = soft[:12] + "..." dinfo = { "date": date, "orientation": ori, "tags": tags, "title": title, "software": soft } return dinfo
def get_exiv2(path): exif = {} for tag in m.get_tags(m(path)): exif[tag] = m.get(m(path), tag)
def metadata_summary(path): exif=Metadata() exif.open_path(path) taglist=exif.get_tags() # Date date=[] if 'Exif.Photo.DateTimeOriginal' in taglist: date.append(exif['Exif.Photo.DateTimeOriginal']) if 'Xmp.exif.DateTimeOriginal' in taglist: date.append(exif['Xmp.exif.DateTimeOriginal']) #date.append(time.ctime(os.path.getmtime(path))) if len(date)>0: date=time.strftime("%d/%m/%Y %H:%M:%S",time.strptime(date[0],"%Y:%m:%d %H:%M:%S")) else: date="" # Orientation ori=exif.get('Exif.Image.Orientation',"?") # Tags tags=[] if 'Iptc.Application2.Keywords' in taglist: tags.append(exif['Iptc.Application2.Keywords']) if 'Xmp.dc.subject' in taglist: tags+=exif['Xmp.dc.subject'].split(",") if 'Xmp.digiKam.TagsList' in taglist: tags+=exif['Xmp.digiKam.TagsList'].split(",") if 'Xmp.MicrosoftPhoto.LastKeywordXMP' in taglist: tags+=exif['Xmp.MicrosoftPhoto.LastKeywordXMP'].split(",") tags=[x.strip() for x in tags] tags=list(set(tags)) tags.sort() # Title aux=[] title="" if 'Iptc.Application2.Caption' in taglist: aux.append(exif['Iptc.Application2.Caption']) if 'Xmp.dc.title' in taglist: aux.append(exif['Xmp.dc.title']) if 'Iptc.Application2.Headline' in taglist: aux.append(exif['Iptc.Application2.Headline']) if len(aux)>0: title=aux[0] # Software aux=[] soft="" if 'Exif.Image.Software' in taglist: aux.append(exif['Exif.Image.Software']) if 'Iptc.Application2.Program' in taglist: aux.append(exif['Iptc.Application2.Program']) if len(aux)>0: soft=list(set(aux))[0] # Shorten title and soft if len(title)>13: title=title[:10]+"..." if len(soft)>15: soft=soft[:12]+"..." dinfo={"date":date,"orientation":ori,"tags":tags,"title":title,"software":soft} return dinfo