gh-29 Refactor Media module by moving methods to Photo module
This commit is contained in:
		
							parent
							
								
									300c9c794d
								
							
						
					
					
						commit
						19f40c0b56
					
				| @ -10,20 +10,19 @@ from elodie import constants | ||||
| from fractions import Fraction | ||||
| from sys import argv | ||||
| 
 | ||||
| import LatLon | ||||
| import mimetypes | ||||
| import os | ||||
| import pyexiv2 | ||||
| import re | ||||
| import subprocess | ||||
| import time | ||||
| import imghdr | ||||
| 
 | ||||
| """ | ||||
| Media class for general video operations | ||||
| """ | ||||
| class Media(object): | ||||
|     # class / static variable accessible through get_valid_extensions() | ||||
|     __name__ = 'Media' | ||||
|     video_extensions = ('avi','m4v','mov','mp4','3gp') | ||||
|     photo_extensions = ('jpg', 'jpeg', 'nef', 'dng', 'gif') | ||||
| 
 | ||||
| @ -83,52 +82,12 @@ class Media(object): | ||||
|         return self.source | ||||
| 
 | ||||
|     """ | ||||
|     Check the file extension against valid file extensions as returned by get_valid_extensions() | ||||
|      | ||||
|     @returns, boolean | ||||
|     Define is_valid to always return false. | ||||
|     This should be overridden in a child class. | ||||
|     """ | ||||
|     def is_valid(self): | ||||
|         source = self.source | ||||
|         return False | ||||
| 
 | ||||
|         # gh-4 This checks if the source file is an image. | ||||
|         # It doesn't validate against the list of supported types. | ||||
|         if(self.__name__ == 'Photo' and imghdr.what(source) is None): | ||||
|             return False; | ||||
| 
 | ||||
|         # we can't use self.__get_extension else we'll endlessly recurse | ||||
|         return os.path.splitext(source)[1][1:].lower() in self.get_valid_extensions() | ||||
| 
 | ||||
|     """ | ||||
|     Get latitude or longitude of photo from EXIF | ||||
| 
 | ||||
|     @returns, float or None if not present in EXIF or a non-photo file | ||||
|     """ | ||||
|     def get_coordinate(self, type='latitude'): | ||||
|         if(not self.is_valid()): | ||||
|             return None | ||||
| 
 | ||||
|         key = self.exif_map['longitude'] if type == 'longitude' else self.exif_map['latitude'] | ||||
|         exif = self.get_exif() | ||||
| 
 | ||||
|         if(key not in exif): | ||||
|             return None | ||||
| 
 | ||||
|         try: | ||||
|             # this is a hack to get the proper direction by negating the values for S and W | ||||
|             latdir = 1 | ||||
|             if(key == self.exif_map['latitude'] and str(exif[self.exif_map['latitude_ref']].value) == 'S'): | ||||
|                 latdir = -1 | ||||
|             londir = 1 | ||||
|             if(key == self.exif_map['longitude'] and str(exif[self.exif_map['longitude_ref']].value) == 'W'): | ||||
|                 londir = -1 | ||||
| 
 | ||||
|             coords = exif[key].value | ||||
|             if(key == 'latitude'): | ||||
|                 return float(str(LatLon.Latitude(degree=coords[0], minute=coords[1], second=coords[2]))) * latdir | ||||
|             else: | ||||
|                 return float(str(LatLon.Longitude(degree=coords[0], minute=coords[1], second=coords[2]))) * londir | ||||
|         except KeyError: | ||||
|             return None | ||||
| 
 | ||||
|     """ | ||||
|     Get the date which the photo was taken. | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jaisen Mathai
						Jaisen Mathai