Added sniffing logic for image media type
authorJoar Wandborg <git@wandborg.com>
Thu, 16 Feb 2012 17:43:15 +0000 (18:43 +0100)
committerJoar Wandborg <git@wandborg.com>
Thu, 16 Feb 2012 17:43:15 +0000 (18:43 +0100)
For now, it's a re-implementation of the old file-extension checking
logic, as I have not found a GStreamer-like "discoverer" in PIL.

mediagoblin/media_types/image/processing.py

index d301a69f07479487dd29478d036dbe2dc970f16c..364a5afae462f0bc7165afd32894d14be6e8d8f3 100644 (file)
@@ -16,6 +16,7 @@
 
 import Image
 import os
+import logging
 
 from mediagoblin import mg_globals as mgg
 from mediagoblin.processing import BadMediaFail, \
@@ -23,7 +24,30 @@ from mediagoblin.processing import BadMediaFail, \
 from mediagoblin.tools.exif import exif_fix_image_orientation, \
     extract_exif, clean_exif, get_gps_data, get_useful
 
+_log = logging.getLogger(__name__)
+
+SUPPORTED_FILETYPES = ['png', 'gif', 'jpg', 'jpeg']
+
 def sniff_handler(media_file, **kw):
+    if not kw.get('media') == None:  # That's a double negative!
+        name, ext = os.path.splitext(kw['media'].filename)
+        clean_ext = ext[1:].lower()  # Strip the . from ext and make lowercase
+
+        _log.debug('name: {0}\next: {1}\nlower_ext: {2}'.format(
+                name,
+                ext,
+                clean_ext))
+
+        if clean_ext in SUPPORTED_FILETYPES:
+            _log.info('Found file extension in supported filetypes')
+            return True
+        else:
+            _log.debug('Media present, extension not found in {1}'.format(
+                    SUPPORTED_FILETYPES))
+    else:
+        _log.warning('Need additional information (keyword argument \'media\')'
+                     ' to be able to handle sniffing')
+
     return False
 
 def process_image(entry):