This commit introduces a new module `logging_config.py` that implements a singleton pattern for logging configuration. The logger is initialized only once and can be configured based on an environment variable to log to a file or to the console. This centralizes logging setup and ensures consistent logging behavior throughout the application.
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
"""Media type constants for supported video formats.
|
|
|
|
This module defines all supported video container formats and their metadata.
|
|
"""
|
|
|
|
MEDIA_TYPES = {
|
|
"mkv": {
|
|
"description": "Matroska multimedia container",
|
|
"meta_type": "Matroska",
|
|
"mime": "video/x-matroska",
|
|
},
|
|
"mk3d": {
|
|
"description": "Matroska 3D multimedia container",
|
|
"meta_type": "Matroska",
|
|
"mime": "video/x-matroska",
|
|
},
|
|
"avi": {
|
|
"description": "Audio Video Interleave",
|
|
"meta_type": "AVI",
|
|
"mime": "video/x-msvideo",
|
|
},
|
|
"mov": {
|
|
"description": "QuickTime movie",
|
|
"meta_type": "QuickTime",
|
|
"mime": "video/quicktime",
|
|
},
|
|
"mp4": {
|
|
"description": "MPEG-4 video container",
|
|
"meta_type": "MP4",
|
|
"mime": "video/mp4",
|
|
},
|
|
"wmv": {
|
|
"description": "Windows Media Video",
|
|
"meta_type": "ASF",
|
|
"mime": "video/x-ms-wmv",
|
|
},
|
|
"flv": {"description": "Flash Video", "meta_type": "FLV", "mime": "video/x-flv"},
|
|
"webm": {
|
|
"description": "WebM multimedia",
|
|
"meta_type": "WebM",
|
|
"mime": "video/webm",
|
|
},
|
|
"m4v": {"description": "MPEG-4 video", "meta_type": "MP4", "mime": "video/mp4"},
|
|
"3gp": {"description": "3GPP multimedia", "meta_type": "MP4", "mime": "video/3gpp"},
|
|
"ogv": {"description": "Ogg Video", "meta_type": "Ogg", "mime": "video/ogg"},
|
|
"mpg": {
|
|
"description": "MPEG video",
|
|
"meta_type": "MPEG-PS",
|
|
"mime": "video/mpeg",
|
|
},
|
|
"mpeg": {
|
|
"description": "MPEG video",
|
|
"meta_type": "MPEG-PS",
|
|
"mime": "video/mpeg",
|
|
},
|
|
}
|
|
|
|
# Reverse mapping: meta_type -> list of extensions
|
|
# Built once at module load instead of rebuilding in every extractor instance
|
|
META_TYPE_TO_EXTENSIONS = {}
|
|
for ext, info in MEDIA_TYPES.items():
|
|
meta_type = info.get('meta_type')
|
|
if meta_type:
|
|
if meta_type not in META_TYPE_TO_EXTENSIONS:
|
|
META_TYPE_TO_EXTENSIONS[meta_type] = []
|
|
META_TYPE_TO_EXTENSIONS[meta_type].append(ext)
|