bazarr/libs/knowit/properties/audio.py

56 lines
1.3 KiB
Python

import typing
from knowit.core import Configurable, Property
class BitRateMode(Configurable[str]):
"""Bit Rate mode property."""
class AudioCompression(Configurable[str]):
"""Audio Compression property."""
class AudioProfile(Configurable[str]):
"""Audio profile property."""
class AudioChannels(Property[int]):
"""Audio Channels property."""
ignored = {
'object based', # Dolby Atmos
}
def handle(self, value: typing.Union[int, str], context: typing.MutableMapping) -> typing.Optional[int]:
"""Handle audio channels."""
if isinstance(value, int):
return value
if value.lower() not in self.ignored:
try:
return int(value)
except ValueError:
self.report(value, context)
return None
class AudioCodec(Configurable[str]):
"""Audio codec property."""
@classmethod
def _extract_key(cls, value) -> str:
key = str(value).upper()
if key.startswith('A_'):
key = key[2:]
# only the first part of the word. E.g.: 'AAC LC' => 'AAC'
return key.split(' ')[0]
@classmethod
def _extract_fallback_key(cls, value, key) -> typing.Optional[str]:
if '/' in key:
return key.split('/')[0]
else:
return None