Module redvox.cli.data_req

This module provides methods and classes for requesting bulk RedVox data.

Expand source code
"""
This module provides methods and classes for requesting bulk RedVox data.
"""

import logging
from typing import List, TYPE_CHECKING

import redvox.cloud.client as cloud_client
import redvox.cloud.data_api as data_api
import redvox.cloud.data_client as data_client

if TYPE_CHECKING:
    from redvox.cloud.data_api import DataRangeReqType
    from redvox.cloud.config import RedVoxConfig

# pylint: disable=C0103
log = logging.getLogger(__name__)


def make_data_req(
    out_dir: str,
    redvox_config: "RedVoxConfig",
    req_start_s: int,
    req_end_s: int,
    redvox_ids: List[str],
    api_type: "DataRangeReqType",
    retries: int,
    timeout: int,
    correct_query_timing: bool,
) -> bool:
    """
    Makes a data request to the RedVox data_server.
    :param out_dir: The output directory to store downloaded files.
    :param redvox_config: An instance of the RedVox cloud configuration.
    :param req_start_s: The request start time as seconds since the epoch.
    :param req_end_s: The request end time as seconds since the epoch.
    :param redvox_ids: A list of RedVox ids.
    :param api_type: The API level to request data for (can be 900, 1000, or both)
    :param retries: The number of retries to perform on failed downloads.
    :return: True if this succeeds, False otherwise.
    """
    client: cloud_client.CloudClient = cloud_client.CloudClient(redvox_config, timeout=timeout)
    data_resp: data_api.DataRangeResp = client.request_data_range(
        req_start_s, req_end_s, redvox_ids, api_type, correct_query_timing=correct_query_timing
    )
    client.close()

    if len(data_resp.signed_urls) == 0:
        log.info("No signed urls returned")
        return False

    data_client.download_files(data_resp.signed_urls, out_dir, retries)

    return True

Functions

def make_data_req(out_dir: str, redvox_config: RedVoxConfig, req_start_s: int, req_end_s: int, redvox_ids: List[str], api_type: DataRangeReqType, retries: int, timeout: int, correct_query_timing: bool) ‑> bool

Makes a data request to the RedVox data_server. :param out_dir: The output directory to store downloaded files. :param redvox_config: An instance of the RedVox cloud configuration. :param req_start_s: The request start time as seconds since the epoch. :param req_end_s: The request end time as seconds since the epoch. :param redvox_ids: A list of RedVox ids. :param api_type: The API level to request data for (can be 900, 1000, or both) :param retries: The number of retries to perform on failed downloads. :return: True if this succeeds, False otherwise.

Expand source code
def make_data_req(
    out_dir: str,
    redvox_config: "RedVoxConfig",
    req_start_s: int,
    req_end_s: int,
    redvox_ids: List[str],
    api_type: "DataRangeReqType",
    retries: int,
    timeout: int,
    correct_query_timing: bool,
) -> bool:
    """
    Makes a data request to the RedVox data_server.
    :param out_dir: The output directory to store downloaded files.
    :param redvox_config: An instance of the RedVox cloud configuration.
    :param req_start_s: The request start time as seconds since the epoch.
    :param req_end_s: The request end time as seconds since the epoch.
    :param redvox_ids: A list of RedVox ids.
    :param api_type: The API level to request data for (can be 900, 1000, or both)
    :param retries: The number of retries to perform on failed downloads.
    :return: True if this succeeds, False otherwise.
    """
    client: cloud_client.CloudClient = cloud_client.CloudClient(redvox_config, timeout=timeout)
    data_resp: data_api.DataRangeResp = client.request_data_range(
        req_start_s, req_end_s, redvox_ids, api_type, correct_query_timing=correct_query_timing
    )
    client.close()

    if len(data_resp.signed_urls) == 0:
        log.info("No signed urls returned")
        return False

    data_client.download_files(data_resp.signed_urls, out_dir, retries)

    return True