Advertisement
Guest User

nautilus-exif

a guest
May 6th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.10 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. # Richiede:
  4. # nautilus-python
  5. # exiftool
  6. # gconf-python
  7.  
  8. # Versione 0.13
  9.  
  10. import nautilus
  11. import subprocess
  12. import urllib
  13. import gconf
  14.  
  15. def getexiftool(filename):
  16.     exiftool=subprocess.Popen(['/usr/bin/exiftool', '-fast2', '-f', '-m', '-q', '-q', '-s3', '-ExifIFD:DateTimeOriginal', '-IFD0:Software', '-ExifIFD:Flash', '-Composite:ImageSize', '-IFD0:Model', filename],stdout=subprocess.PIPE,stderr=subprocess.PIPE) #'-Nikon:ShutterCount' non utilizzabile con l'argomento -fast2
  17.     output,errors=exiftool.communicate()
  18.     return output.split('\n')
  19.  
  20. class ColumnExtension(nautilus.ColumnProvider, nautilus.InfoProvider):
  21.     def __init__(self):
  22.         pass
  23.    
  24.     def get_columns(self):
  25.         return (
  26.             nautilus.Column("NautilusPython::ExifIFD:DateTimeOriginal","ExifIFD:DateTimeOriginal","Data (ExifIFD)","Data di scatto"),
  27.             nautilus.Column("NautilusPython::IFD0:Software","IFD0:Software","Software (IFD0)","Software utilizzato"),
  28.             nautilus.Column("NautilusPython::ExifIFD:Flash","ExifIFD:Flash","Flash (ExifIFD)","Modalit\u00e0 del flash"),
  29.             nautilus.Column("NautilusPython::Composite:ImageSize","Composite:ImageSize","Risoluzione (Exif)","Risoluzione dell'immagine"),
  30.             nautilus.Column("NautilusPython::IFD0:Model","IFD0:Model","Fotocamera (IFD0)","Modello fotocamera"),
  31.             #nautilus.Column("NautilusPython::Nikon:ShutterCount","Nikon:ShutterCount","Contatore scatti (Nikon)","Numero di scatti effettuati dalla macchina a questo file"),
  32.             nautilus.Column("NautilusPython::Mp","Mp","Megapixel (Exif)","Dimensione dell'immagine in megapixel"),
  33.         )
  34.    
  35.     def update_file_info_full(self, provider, handle, closure, file):
  36.         client = gconf.client_get_default()
  37.        
  38.         if not client.get_bool('/apps/nautilus/nautilus-metadata/enable'):
  39.             client.set_bool('/apps/nautilus/nautilus-metadata/enable',0)
  40.             return
  41.        
  42.         if file.get_uri_scheme() != 'file':
  43.             return
  44.         filename = urllib.unquote(file.get_uri()[7:])
  45.        
  46.         if file.is_mime_type('image/jpeg') or file.is_mime_type('image/png') or file.is_mime_type('image/gif') or file.is_mime_type('image/bmp') or file.is_mime_type('image/x-nikon-nef') or file.is_mime_type('image/x-xcf') or file.is_mime_type('image/vnd.adobe.photoshop'):
  47.             data=getexiftool(filename)
  48.            
  49.             file.add_string_attribute('ExifIFD:DateTimeOriginal',data[0].replace(':','-',2))
  50.             file.add_string_attribute('IFD0:Software',data[1])
  51.             file.add_string_attribute('ExifIFD:Flash',data[2])
  52.             file.add_string_attribute('Composite:ImageSize',data[3])
  53.             file.add_string_attribute('IFD0:Model',data[4])
  54.             #file.add_string_attribute('Nikon:ShutterCount',data[5])
  55.             width, height = data[3].split('x')
  56.             mp = float(width) * float(height) / 1000000
  57.             mp = "%.2f" % mp
  58.             file.add_string_attribute('Mp',str(mp) + ' Mp')
  59.         else:
  60.             file.add_string_attribute('ExifIFD:DateTimeOriginal','')
  61.             file.add_string_attribute('IFD0:Software','')
  62.             file.add_string_attribute('ExifIFD:Flash','')
  63.             file.add_string_attribute('Composite:ImageSize','')
  64.             file.add_string_attribute('IFD0:Model','')
  65.             file.add_string_attribute('Nikon:ShutterCount','')
  66.             file.add_string_attribute('Mp','')
  67.         self.get_columns()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement