STABLE: Final schema sync, optimized gitignore

This commit is contained in:
Kincses
2026-02-26 08:19:25 +01:00
parent 893f39fa15
commit 505543330a
203 changed files with 11590 additions and 9542 deletions

View File

@@ -1,3 +1,4 @@
# /opt/docker/dev/service_finder/backend/app/services/media_service.py
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
import logging
@@ -6,48 +7,39 @@ from typing import Tuple, Optional
logger = logging.getLogger(__name__)
class MediaService:
@staticmethod
def _get_if_exist(data, key):
if key in data:
return data[key]
return None
@staticmethod
def _convert_to_degrees(value) -> float:
"""EXIF koordináták (fok, perc, másodperc) konvertálása tizedes fokká."""
d = float(value[0])
m = float(value[1])
s = float(value[2])
return d + (m / 60.0) + (s / 3600.0)
""" EXIF racionális koordináták konvertálása tizedes fokká. """
try:
d = float(value[0])
m = float(value[1])
s = float(value[2])
return d + (m / 60.0) + (s / 3600.0)
except (IndexError, ZeroDivisionError, TypeError):
return 0.0
@classmethod
def extract_gps_info(cls, file_path: str) -> Optional[Tuple[float, float]]:
"""Kiolvassa a GPS koordinátákat a képből."""
""" GPS koordináták kinyerése a kép metaadataiból (Robot Hunt alapja). """
try:
image = Image.open(file_path)
exif_data = image._getexif()
if not exif_data:
return None
with Image.open(file_path) as image:
exif = image._getexif()
if not exif: return None
gps_info = {}
for tag, value in exif_data.items():
decoded = TAGS.get(tag, tag)
if decoded == "GPSInfo":
for t in value:
sub_decoded = GPSTAGS.get(t, t)
gps_info[sub_decoded] = value[t]
gps_info = {}
for tag, value in exif.items():
if TAGS.get(tag) == "GPSInfo":
for t in value:
gps_info[GPSTAGS.get(t, t)] = value[t]
if gps_info:
lat = cls._convert_to_degrees(gps_info['GPSLatitude'])
if gps_info['GPSLatitudeRef'] != "N":
lat = 0 - lat
if 'GPSLatitude' in gps_info and 'GPSLongitude' in gps_info:
lat = cls._convert_to_degrees(gps_info['GPSLatitude'])
if gps_info.get('GPSLatitudeRef') != "N": lat = -lat
lon = cls._convert_to_degrees(gps_info['GPSLongitude'])
if gps_info.get('GPSLongitudeRef') != "E": lon = -lon
lon = cls._convert_to_degrees(gps_info['GPSLongitude'])
if gps_info['GPSLongitudeRef'] != "E":
lon = 0 - lon
return lat, lon
return lat, lon
except Exception as e:
logger.warning(f"Nem sikerült kiolvasni az EXIF adatokat: {e}")
return None
logger.warning(f"EXIF kiolvasási hiba ({file_path}): {e}")
return None