Fix logic for checking metadata of temporary movie before copying over source file
This commit is contained in:
		
							parent
							
								
									8221e3c020
								
							
						
					
					
						commit
						88ce6627d4
					
				@ -195,6 +195,24 @@ class Video(Media):
 | 
				
			|||||||
        result = self.__update_using_plist(latitude=latitude, longitude=longitude)
 | 
					        result = self.__update_using_plist(latitude=latitude, longitude=longitude)
 | 
				
			||||||
        return result
 | 
					        return result
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Updates video metadata using avmetareadwrite.
 | 
				
			||||||
 | 
					    This method is a does a lot more than it should.
 | 
				
			||||||
 | 
					    The general steps are...
 | 
				
			||||||
 | 
					    1) Check if avmetareadwrite is installed
 | 
				
			||||||
 | 
					    2) Export a plist file to a temporary location from the source file
 | 
				
			||||||
 | 
					    3) Regex replace values in the plist file
 | 
				
			||||||
 | 
					    4) Update the source file using the updated plist and save it to a temporary location
 | 
				
			||||||
 | 
					    5) Validate that the metadata in the updated temorary movie is valid
 | 
				
			||||||
 | 
					    6) Copystat permission and time bits from the source file to the temporary movie
 | 
				
			||||||
 | 
					    7) Move the temporary file to overwrite the source file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @param, latitude, float, Latitude of the file
 | 
				
			||||||
 | 
					    @param, longitude, float, Longitude of the file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @returns, boolean
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    def __update_using_plist(self, **kwargs):
 | 
					    def __update_using_plist(self, **kwargs):
 | 
				
			||||||
        if('latitude' not in kwargs and 'longitude' not in kwargs):
 | 
					        if('latitude' not in kwargs and 'longitude' not in kwargs):
 | 
				
			||||||
            print 'No lat/lon passed into __create_plist'
 | 
					            print 'No lat/lon passed into __create_plist'
 | 
				
			||||||
@ -258,9 +276,10 @@ class Video(Media):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            # We create a temporary file to save the modified file to.
 | 
					            # We create a temporary file to save the modified file to.
 | 
				
			||||||
            # If the modification is successful we will update the existing file.
 | 
					            # If the modification is successful we will update the existing file.
 | 
				
			||||||
 | 
					            metadata = self.get_metadata()
 | 
				
			||||||
            temp_movie = None
 | 
					            temp_movie = None
 | 
				
			||||||
            with tempfile.NamedTemporaryFile() as temp_file:
 | 
					            with tempfile.NamedTemporaryFile() as temp_file:
 | 
				
			||||||
                temp_movie = temp_file.name
 | 
					                temp_movie = '%s.%s' % (temp_file.name, metadata['extension'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # We need to block until the child process completes.
 | 
					            # We need to block until the child process completes.
 | 
				
			||||||
            # http://stackoverflow.com/a/5631819/1318758
 | 
					            # http://stackoverflow.com/a/5631819/1318758
 | 
				
			||||||
@ -273,8 +292,9 @@ class Video(Media):
 | 
				
			|||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Before we do anything destructive we confirm that the file is in tact.
 | 
					            # Before we do anything destructive we confirm that the file is in tact.
 | 
				
			||||||
            metadata = self.get_metadata()
 | 
					            check_media = Video(temp_movie)
 | 
				
			||||||
            if(metadata['latitude'] is None or metadata['longitude'] is None or metadata['date_taken'] is None):
 | 
					            check_metadata = check_media.get_metadata()
 | 
				
			||||||
 | 
					            if(check_metadata['latitude'] is None or check_metadata['longitude'] is None or check_metadata['date_taken'] is None):
 | 
				
			||||||
                print 'Something went wrong updating video metadata'
 | 
					                print 'Something went wrong updating video metadata'
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user