Skip to content

Commit

Permalink
Merge pull request #84 from leslievan/build1521
Browse files Browse the repository at this point in the history
Build1521
  • Loading branch information
leslievan authored Feb 25, 2024
2 parents be92e3a + bec97c4 commit 2f09154
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 4 deletions.
15 changes: 14 additions & 1 deletion entity/image_container.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
import os
import re
from datetime import datetime
from enum import Enum
Expand All @@ -12,6 +13,8 @@
from enums.constant import *
from utils import calculate_pixel_count
from utils import extract_attribute
from utils import extract_gps_info
from utils import extract_gps_lat_and_long
from utils import get_exif

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -118,9 +121,19 @@ def __init__(self, path: Path):
self._param_dict[DATETIME_VALUE] = self._parse_datetime()
self._param_dict[DATE_VALUE] = self._parse_date()
self._param_dict[LENS_VALUE] = self.lens_model
self._param_dict[FILENAME_VALUE] = self.path.name
filename_without_ext = os.path.splitext(self.path.name)[0]
self._param_dict[FILENAME_VALUE] = filename_without_ext
self._param_dict[TOTAL_PIXEL_VALUE] = calculate_pixel_count(self.original_width, self.original_height)

# GPS 信息
if 'GPSPosition' in self.exif:
self._param_dict[GEO_INFO_VALUE] = str.join(' ', extract_gps_info(self.exif.get('GPSPosition')))
elif 'GPSLatitude' in self.exif and 'GPSLongitude' in self.exif:
self._param_dict[GEO_INFO_VALUE] = str.join(' ', extract_gps_lat_and_long((self.exif.get('GPSLatitude'),
self.exif.get('GPSLongitude'))))
else:
self._param_dict[GEO_INFO_VALUE] = '无'

self._param_dict[CAMERA_MAKE_CAMERA_MODEL_VALUE] = ' '.join(
[self._param_dict[MAKE_VALUE], self._param_dict[MODEL_VALUE]])
self._param_dict[LENS_MAKE_LENS_MODEL_VALUE] = ' '.join(
Expand Down
6 changes: 4 additions & 2 deletions enums/constant.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@
CAMERA_MAKE_CAMERA_MODEL_VALUE = 'CameraMake_CameraModel'
FILENAME_NAME = '文件名'
FILENAME_VALUE = 'Filename'
DATE_FILENAME_NAME = '日期 + 文件名(eg. 2023-01-01 DXO_0001.jpg)'
DATE_FILENAME_NAME = '日期 + 文件名(eg. 2023-01-01 DXO_0001)'
DATE_FILENAME_VALUE = 'Date_Filename'
DATETIME_FILENAME_NAME = '日期时间 + 文件名(eg. 2023-01-01 12:00 DXO_0001.jpg)'
DATETIME_FILENAME_NAME = '日期时间 + 文件名(eg. 2023-01-01 12:00 DXO_0001)'
DATETIME_FILENAME_VALUE = 'Datetime_Filename'
GEO_INFO = '地理信息'
GEO_INFO_VALUE = 'GeoInfo'

LOCATION_LEFT_TOP = 'left_top'
LOCATION_LEFT_BOTTOM = 'left_bottom'
Expand Down
1 change: 1 addition & 0 deletions init.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ def from_processor(processor: ProcessorComponent):
ElementItem(FILENAME_NAME, FILENAME_VALUE),
ElementItem(DATE_FILENAME_NAME, DATE_FILENAME_VALUE),
ElementItem(DATETIME_FILENAME_NAME, DATETIME_FILENAME_VALUE),
ElementItem(GEO_INFO, GEO_INFO_VALUE),
]

# 菜单位置与菜单项的映射
Expand Down
3 changes: 3 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ def processing():
logging.exception(f'Error: {str(e)}')
if DEBUG:
raise e
else:
print(f'\nError: 文件:{source_path} 处理失败,请检查日志')
continue

# 保存图片
target_path = Path(config.get_output_dir(), encoding=ENCODING).joinpath(source_path.name)
Expand Down
2 changes: 1 addition & 1 deletion main.spec
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,5 @@ coll = COLLECT(
strip=False,
upx=True,
upx_exclude=[],
name='semi-utils-build1520',
name='semi-utils-build1521',
)
20 changes: 20 additions & 0 deletions utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -378,3 +378,23 @@ def extract_attribute(data_dict: dict, *keys, default_value: str = '', prefix=''
if key in data_dict:
return data_dict[key] + suffix
return default_value


def extract_gps_lat_and_long(lat: str, long: str):
# 提取出纬度和经度主要部分
lat_deg, _, lat_min = re.findall(r"(\d+ deg \d+)", lat)[0].split()
long_deg, _, long_min = re.findall(r"(\d+ deg \d+)", long)[0].split()

# 提取出方向(北 / 南 / 东 / 西)
lat_dir = re.findall(r"([NS])", lat)[0]
long_dir = re.findall(r"([EW])", long)[0]

latitude = f"{lat_deg}°{lat_min}'{lat_dir}"
longitude = f"{long_deg}°{long_min}'{long_dir}"

return latitude, longitude


def extract_gps_info(gps_info: str):
lat, long = gps_info.split(", ")
return extract_gps_lat_and_long(lat, long)

0 comments on commit 2f09154

Please sign in to comment.