Исходный код core.configs.observation

"""Настройки наблюдения: префиксы, расширения и состав выгружаемых файлов."""

from pydantic import BaseModel


[документация] class ObservationSendingKey(BaseModel): """Имена полей формы при выгрузке на портал.""" PAYLOAD: str = "payload" WATERFALL: str = "waterfall" DEMODDATA: str = "demoddata" CLIENT_METADATA: str = "client_metadata"
[документация] class ObservationPrefix(BaseModel): """Префиксы имён файлов наблюдения.""" PAYLOAD: str = "payload" WATERFALL: str = "waterfall" RAW_WATERFALL: str = "raw_waterfall" DATA: str = "data" METADATA: str = "metadata"
[документация] class ObservationExtension(BaseModel): """Расширения файлов наблюдения.""" PAYLOAD: str = "ogg" WATERFALL: str = "png" DATA_APT: str = "png" METADATA: str = "json" RAW_WATERFALL: str = "dat"
[документация] class ObservationUploadTypes(BaseModel): """Какие типы файлов выгружать на портал.""" PAYLOAD: bool = True WATERFALL: bool = True
[документация] class ObservationSettings(BaseModel): """Параметры проведения наблюдения и состав выгружаемых файлов.""" REMOVE_WATERFALL_RAW_FILES: bool = True REMOVE_OBSERVATION_DATA: bool = True SOAPY_RX_DEVICE: str = "driver=airspy,biastee=true" TIME_FORMAT_IN_FILENAME: str = "%Y-%m-%dT%H-%M-%S" FILENAME_TEMPLATE: str = ( "{observation_dir}/{prefix}_{observation_id}_{timestamp}.{extension}" ) RIG_UPDATE_INTERVAL: float = 0.1 ROTATOR_UPDATE_INTERVAL: float = 3 PRE_OBSERVATION_SCRIPT: str = "satnogs-pre" POST_OBSERVATION_SCRIPT: str = "satnogs-post" RUN_PRE_OBSERVATION_SCRIPT: bool = True RUN_POST_OBSERVATION_SCRIPT: bool = True # Потолок на выполнение satnogs-pre/satnogs-post. Декодеры и SSTV на # слабом железе идут минутами, поэтому значение с запасом: ограничивать # нужно по-настоящему зависший процесс, а не долгую постобработку. SCRIPT_TIMEOUT_IN_SECONDS: float = 900 BATCH_DELAY: float = 1 prefix: ObservationPrefix = ObservationPrefix() extension: ObservationExtension = ObservationExtension() sending_key: ObservationSendingKey = ObservationSendingKey() upload_types: ObservationUploadTypes = ObservationUploadTypes()
[документация] def get_prefixes_of_files_available_for_upload(self) -> list[str]: """Вернуть префиксы файлов, разрешённых к выгрузке. Кадры и метаданные выгружаются всегда, аудио и водопад — по ``OBSERVATION__UPLOAD_TYPES__*``. Метаданные первыми: порядок префиксов задаёт порядок отправки, а до появления очереди они уходили на портал раньше остальных файлов. """ prefixes = [self.prefix.METADATA] if self.upload_types.PAYLOAD: prefixes.append(self.prefix.PAYLOAD) if self.upload_types.WATERFALL: prefixes.append(self.prefix.WATERFALL) prefixes.append(self.prefix.DATA) return prefixes