55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
import os
|
|
import logging
|
|
|
|
module_logger = logging.getLogger(__name__)
|
|
|
|
from .metadata import extract_metadata_from_file
|
|
|
|
def findall_this_directory(directory, files, extensions, db, stop_on_error):
|
|
for filename in files:
|
|
module_logger.debug("handling file: {}".format(filename))
|
|
if(filename.split(".")[-1] in extensions):
|
|
filename = os.path.join(directory, filename)
|
|
insert_file_into_db(filename, db, stop_on_error)
|
|
|
|
|
|
def insert_file_into_db(filename, db, stop_on_error):
|
|
try:
|
|
metadata = extract_metadata_from_file(filename)
|
|
except Exception as e:
|
|
if(stop_on_error):
|
|
module_logger.error(
|
|
"an error occured, the program execution ends now, set ``--no-select-stop-on-error`` to continue anyways")
|
|
module_logger.error("file was: {}".format(filename))
|
|
raise e
|
|
module_logger.error("ignoring error")
|
|
return
|
|
|
|
data = [filename]
|
|
metadata_keys = ["DateTime"
|
|
, "DateTimeDigitized"
|
|
, "DateTimeOriginal"
|
|
, "Model"
|
|
, "Make"
|
|
, "Software"]
|
|
data.extend([metadata[k] for k in metadata_keys])
|
|
|
|
cursor = db.cursor()
|
|
|
|
cursor.execute('''INSERT INTO FILES(name,
|
|
DateTime,
|
|
DateTimeDigitized,
|
|
DateTimeOriginal,
|
|
Model,
|
|
Make,
|
|
Software)
|
|
VALUES(?, ?, ?, ?, ?, ?, ?)'''
|
|
, data)
|
|
|
|
def findall(directory, walk, extensions, db, stop_on_error):
|
|
for dir_, paths, files in os.walk(directory):
|
|
findall_this_directory(dir_, files, extensions, db, stop_on_error)
|
|
if(not walk):
|
|
break
|
|
|