parent
							
								
									18b5c1336e
								
							
						
					
					
						commit
						4a7df2d57d
					
				@ -1,3 +1,8 @@
 | 
				
			|||||||
 | 
					import os
 | 
				
			||||||
 | 
					import shutil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from elodie import constants
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _decode(string, encoding='utf8'):
 | 
					def _decode(string, encoding='utf8'):
 | 
				
			||||||
    """Return a utf8 encoded unicode string.
 | 
					    """Return a utf8 encoded unicode string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -17,4 +22,30 @@ def _decode(string, encoding='utf8'):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return string
 | 
					    return string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def _copyfile(src, dst):
 | 
				
			||||||
 | 
					    # Python 3 hangs using open/write method
 | 
				
			||||||
 | 
					    if (constants.python_version == 3):
 | 
				
			||||||
 | 
					        shutil.copy(src, dst)
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        O_BINARY = os.O_BINARY
 | 
				
			||||||
 | 
					    except:
 | 
				
			||||||
 | 
					        O_BINARY = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    READ_FLAGS = os.O_RDONLY | O_BINARY
 | 
				
			||||||
 | 
					    WRITE_FLAGS = os.O_WRONLY | os.O_CREAT | os.O_TRUNC | O_BINARY
 | 
				
			||||||
 | 
					    TEN_MEGABYTES = 10485760
 | 
				
			||||||
 | 
					    BUFFER_SIZE = min(TEN_MEGABYTES, os.path.getsize(src))
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        fin = os.open(src, READ_FLAGS)
 | 
				
			||||||
 | 
					        stat = os.fstat(fin)
 | 
				
			||||||
 | 
					        fout = os.open(dst, WRITE_FLAGS, stat.st_mode)
 | 
				
			||||||
 | 
					        for x in iter(lambda: os.read(fin, BUFFER_SIZE), ""):
 | 
				
			||||||
 | 
					            os.write(fout, x)
 | 
				
			||||||
 | 
					    finally:
 | 
				
			||||||
 | 
					        try: os.close(fin)
 | 
				
			||||||
 | 
					        except: pass
 | 
				
			||||||
 | 
					        try: os.close(fout)
 | 
				
			||||||
 | 
					        except: pass
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,7 @@ Settings used by Elodie.
 | 
				
			|||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from os import path
 | 
					from os import path
 | 
				
			||||||
 | 
					from sys import version_info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: If True, debug messages will be printed.
 | 
					#: If True, debug messages will be printed.
 | 
				
			||||||
debug = False
 | 
					debug = False
 | 
				
			||||||
@ -24,3 +25,6 @@ exiftool_config = path.join(script_directory, 'configs', 'ExifTool_config')
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#: Accepted language in responses from MapQuest
 | 
					#: Accepted language in responses from MapQuest
 | 
				
			||||||
accepted_language = 'en'
 | 
					accepted_language = 'en'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# check python version, required in filesystem.py to trigger appropriate method
 | 
				
			||||||
 | 
					python_version = version_info.major
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@ import re
 | 
				
			|||||||
import shutil
 | 
					import shutil
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from elodie import compatability
 | 
				
			||||||
from elodie import geolocation
 | 
					from elodie import geolocation
 | 
				
			||||||
from elodie import log
 | 
					from elodie import log
 | 
				
			||||||
from elodie.config import load_config
 | 
					from elodie.config import load_config
 | 
				
			||||||
@ -333,7 +334,10 @@ class FileSystem(object):
 | 
				
			|||||||
            # Do not use copy2(), will have an issue when copying to a
 | 
					            # Do not use copy2(), will have an issue when copying to a
 | 
				
			||||||
            # network/mounted drive using copy and manual
 | 
					            # network/mounted drive using copy and manual
 | 
				
			||||||
            # set_date_from_filename gets the job done
 | 
					            # set_date_from_filename gets the job done
 | 
				
			||||||
            shutil.copy(_file, dest_path)
 | 
					            # Do not use copy2(), will have an issue when copying to a network/mounted drive
 | 
				
			||||||
 | 
					            # shutil.copy seems slow, changing to streaming according to
 | 
				
			||||||
 | 
					            # http://stackoverflow.com/questions/22078621/python-how-to-copy-files-fast
 | 
				
			||||||
 | 
					            compatability._copyfile(_file, dest_path)
 | 
				
			||||||
            self.set_utime(media)
 | 
					            self.set_utime(media)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        db.add_hash(checksum, dest_path)
 | 
					        db.add_hash(checksum, dest_path)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user