mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
Merge branch 'develop' into enhancement/1416-loader-actions
This commit is contained in:
commit
fa28301952
1 changed files with 22 additions and 5 deletions
|
|
@ -1519,12 +1519,27 @@ def get_media_mime_type(filepath: str) -> Optional[str]:
|
|||
Optional[str]: Mime type or None if is unknown mime type.
|
||||
|
||||
"""
|
||||
# The implementation is identical or better with ayon_api >=1.1.0,
|
||||
# which is used in AYON launcher >=1.3.0.
|
||||
# NOTE Remove safe import when AYON launcher >=1.2.0.
|
||||
try:
|
||||
from ayon_api.utils import (
|
||||
get_media_mime_type_for_content as _ayon_api_func
|
||||
)
|
||||
except ImportError:
|
||||
_ayon_api_func = None
|
||||
|
||||
if not filepath or not os.path.exists(filepath):
|
||||
return None
|
||||
|
||||
with open(filepath, "rb") as stream:
|
||||
content = stream.read()
|
||||
|
||||
if _ayon_api_func is not None:
|
||||
mime_type = _ayon_api_func(content)
|
||||
if mime_type is not None:
|
||||
return mime_type
|
||||
|
||||
content_len = len(content)
|
||||
# Pre-validation (largest definition check)
|
||||
# - hopefully there cannot be media defined in less than 12 bytes
|
||||
|
|
@ -1551,11 +1566,13 @@ def get_media_mime_type(filepath: str) -> Optional[str]:
|
|||
if b'xmlns="http://www.w3.org/2000/svg"' in content:
|
||||
return "image/svg+xml"
|
||||
|
||||
# JPEG, JFIF or Exif
|
||||
if (
|
||||
content[0:4] == b"\xff\xd8\xff\xdb"
|
||||
or content[6:10] in (b"JFIF", b"Exif")
|
||||
):
|
||||
# JPEG
|
||||
# - [0:2] is constant b"\xff\xd8"
|
||||
# (ref. https://www.file-recovery.com/jpg-signature-format.htm)
|
||||
# - [2:4] Marker identifier b"\xff{?}"
|
||||
# (ref. https://www.disktuna.com/list-of-jpeg-markers/)
|
||||
# NOTE: File ends with b"\xff\xd9"
|
||||
if content[0:3] == b"\xff\xd8\xff":
|
||||
return "image/jpeg"
|
||||
|
||||
# Webp
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue