Исходный код soniks_client.jobs.file_manager.read_files
"""Чтение файлов наблюдения в структуру для выгрузки на портал."""
import base64
import json
from pathlib import Path
from core.configs import settings
from core.types import DataToSend
[документация]
def add_payload_to_sending_data(file_path: Path) -> DataToSend:
"""Прочитать аудиозапись прохода для выгрузки."""
with open(file_path, "rb") as data:
return {settings.observation.sending_key.PAYLOAD: data.read()}
[документация]
def add_waterfall_to_sending_data(file_path: Path) -> DataToSend:
"""Прочитать изображение водопада для выгрузки."""
with open(file_path, "rb") as data:
return {settings.observation.sending_key.WATERFALL: data.read()}
[документация]
def add_demoddata_to_sending_data(file_path: Path) -> DataToSend:
"""Прочитать декодированный кадр для выгрузки.
Из JSON берётся поле ``pdu`` в base64; если разобрать не удалось,
файл отправляется как есть.
"""
try:
with open(file_path, encoding="utf-8") as json_file:
data = json.load(json_file)
decoded_pdu = base64.b64decode(data["pdu"])
return {settings.observation.sending_key.DEMODDATA: decoded_pdu}
# KeyError — в JSON нет поля ``pdu``; TypeError — оно есть, но равно null.
except (json.JSONDecodeError, ValueError, KeyError, TypeError):
with open(file_path, "rb") as binary_file:
return {settings.observation.sending_key.DEMODDATA: binary_file.read()}