This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

nautilus-exif

By: a guest on May 6th, 2012  |  syntax: Python  |  size: 3.10 KB  |  views: 5  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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()
clone this paste RAW Paste Data