示例#1
0
 def __init__(self, filename, parent=None):
     super(MetadataWidget, self).__init__(parent)
     table = []
     last = None
     with exiftool.ExifTool(exiftool_exe()) as et:
         metadata = et.get_metadata(filename)
         for tag, value in metadata.items():
             ignore = [
                 'SourceFile', 'ExifTool:ExifTool', 'File:FileName',
                 'File:Directory', 'File:FileSize', 'File:FileModifyDate',
                 'File:FileInodeChangeDate', 'File:FileAccessDate',
                 'File:FileType', 'File:FilePermissions',
                 'File:FileTypeExtension', 'File:MIMEType'
             ]
             if not value or any(t in tag for t in ignore):
                 continue
             value = str(value).replace(', use -b option to extract', '')
             group, desc = tag.split(':')
             if last is None or group != last:
                 table.append([group, desc, value])
                 last = group
             else:
                 table.append([None, desc, value])
     headers = [self.tr('Group'), self.tr('Description'), self.tr('Value')]
     table_widget = TableWidget(table, headers)
     main_layout = QVBoxLayout()
     main_layout.addWidget(table_widget)
     self.setLayout(main_layout)
     self.setMinimumSize(620, 500)
示例#2
0
 def __init__(self, filename, parent=None):
     super(LocationWidget, self).__init__(parent)
     self.temp_dir = QTemporaryDir()
     if self.temp_dir.isValid():
         with exiftool.ExifTool(exiftool_exe()) as et:
             try:
                 metadata = et.get_metadata(filename)
                 lat = metadata["Composite:GPSLatitude"]
                 lon = metadata["Composite:GPSLongitude"]
             except KeyError:
                 label = QLabel(self.tr("Geolocation data not found!"))
                 modify_font(label, bold=True)
                 label.setStyleSheet("color: #FF0000")
                 label.setAlignment(Qt.AlignCenter)
                 layout = QVBoxLayout()
                 layout.addWidget(label)
                 self.setLayout(layout)
                 return
             url = f"https://www.google.com/maps/place/{lat},{lon}/@{lat},{lon},17z/" \
                   f"data=!4m5!3m4!1s0x0:0x0!8m2!3d{lat}!4d{lon}"
             web_view = QWebEngineView()
             web_view.load(QUrl(url))
             layout = QVBoxLayout()
             layout.addWidget(web_view)
             self.setLayout(layout)
示例#3
0
 def __init__(self, filename, parent=None):
     super(LocationWidget, self).__init__(parent)
     self.temp_dir = QTemporaryDir()
     if self.temp_dir.isValid():
         with exiftool.ExifTool(exiftool_exe()) as et:
             temp_file = os.path.join(self.temp_dir.path(), "geo.html")
             metadata = et.get_metadata(filename)
             try:
                 lat = metadata["Composite:GPSLatitude"]
                 long = metadata["Composite:GPSLongitude"]
             except KeyError:
                 label = QLabel(self.tr("Geolocation data not found!"))
                 modify_font(label, bold=True)
                 label.setStyleSheet("color: #FF0000")
                 label.setAlignment(Qt.AlignCenter)
                 layout = QVBoxLayout()
                 layout.addWidget(label)
                 self.setLayout(layout)
                 return
             html = '<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2948.532014673314!2d{}!3d{}!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zNDLCsDIxJzA5LjAiTiA3McKwMDUnMjguMiJX!5e0!3m2!1sit!2sit!4v1590074026898!5m2!1sit!2sit" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>'.format(
                 long, lat)
             with open(temp_file, "w") as file:
                 file.write(html)
             web_view = QWebEngineView()
             web_view.load(QUrl("file://" + temp_file))
             layout = QVBoxLayout()
             layout.addWidget(web_view)
             self.setLayout(layout)
示例#4
0
def extract_exif_from_dir(source_dir, extractables):
    # List files with exif data:
    exif_files = list_exif_sources(source_dir)
    if exif_files is None:
        return None

    # Initialise counters and arrays:
    cropped_photo_exifs = []
    cropped, uncropped = 0, 0

    # Loop 1: Extract the exif data for cropped photos:
    with pet.ExifTool(executable_='exiftool') as et:
        for ef in tqdm(exif_files):
            # Load the exif data:
            exif_data = et.get_metadata(ef)
            # Extract the crop datas:
            crop_data = extract_crop_data_from_exif(exif_data, extractables)

            # If we do not have crop data, skip:
            if crop_data['CropFactor'] <= 0:
                uncropped += 1
                continue
            else:
                cropped += 1
            cropped_photo_exifs.append(crop_data)

    print("Found cropped images:", cropped)
    print("Found uncropped images:", uncropped)
    return cropped_photo_exifs
示例#5
0
def read_exif(files):
    """
    :param files:
    :return:
    """
    exif_array = []
    filename = file_name
    bar = Bar('Reading EXIF Data', max=len(files))
    with exiftool.ExifTool() as et:
        metadata = iter(et.get_metadata_batch(files))
    for d in metadata:
        exif_array.append(d)
        bar.next()
    bar.finish()
    print(color.BLUE + "Scanning images complete " + color.END)
    formatted = format_data(exif_array)
    writeOutputtoText(filename, formatted)
    print(color.GREEN + "Process Complete." + color.END)
示例#6
0
文件: exif.py 项目: nsidere/sherloq
 def __init__(self, filename, parent=None):
     super(ExifWidget, self).__init__(parent)
     table = []
     last = None
     with exiftool.ExifTool(exiftool_exe()) as et:
         metadata = et.get_metadata(filename)
         for tag, value in metadata.items():
             ignore = [
                 "SourceFile",
                 "ExifTool:ExifTool",
                 "File:FileName",
                 "File:Directory",
                 "File:FileSize",
                 "File:FileModifyDate",
                 "File:FileInodeChangeDate",
                 "File:FileAccessDate",
                 "File:FileType",
                 "File:FilePermissions",
                 "File:FileTypeExtension",
                 "File:MIMEType",
             ]
             if not value or any(t in tag for t in ignore):
                 continue
             value = str(value).replace(", use -b option to extract", "")
             value = value.replace("Binary data ", "Binary data: ")
             group, desc = tag.split(":")
             if last is None or group != last:
                 table.append([group, desc, value])
                 last = group
             else:
                 table.append([None, desc, value])
     headers = [self.tr("Group"), self.tr("Description"), self.tr("Value")]
     table_widget = TableWidget(table, headers)
     main_layout = QVBoxLayout()
     main_layout.addWidget(table_widget)
     self.setLayout(main_layout)
     self.setMinimumSize(740, 500)
示例#7
0
        self.longitude = ""
        self.duplicate_filenames = []


class PhotoBucket:
    def __init__(self):
        self.date_taken = ""
        self.bucket_name = ""
        self.latitude = ""
        self.longitude = ""
        self.photos = []


# Path to exiftool
EXIFTOOL_PATH = r".\pyexiftool\exiftool(-k).exe"
et = exiftool.ExifTool(EXIFTOOL_PATH)
et.start()

# Radius in Miles for photos to be in the "same spot"
RADIUS_MILES = 2

# Default Latitude/Longitude
DEFAULT_LATITUDE = 38.0406
DEFAULT_LONGITUDE = -84.5037

# Directory to Walk
PATH = sys.argv[1]

md5_list = []
photos = {}
photo_buckets = []
示例#8
0
def getDate(cams):
    with exiftool.ExifTool() as et:
        DateTime = et.get_tag_batch('DateTimeOriginal', files)
        return (DateTime)
示例#9
0
    except os.error as e:
        pass
    shutil.move(src,dest_dir)



if __name__ == '__main__':

    root = "/"  #path to start to visit and get all file from folder and subdirectoy

    for path, subdirs, files in os.walk(root):
        for name in files:
            try:
                pathfile = os.path.join(path, name)
                if pathfile.endswith('.jpg') or pathfile.endswith('.png') :
                    with exiftool.ExifTool() as et:
                        metadata = et.get_metadata(pathfile)
                        dt = datetime.strptime(metadata['File:FileModifyDate'][:19], '%Y:%m:%d %H:%M:%S')

                        im = Image.open(pathfile)
                        width, height = im.size  #Remove al thumbails of photorec
                        if (width or height) <= 160:
                            os.remove(pathfile)
                        else:
                            fcopy(pathfile,str(dt.year), str(dt.month))
                else:
                    print("File Format don't accepted")
            except Exception as e:
                print(e)
                pass