Example #1
0
def _build_params_array(values: dict, data: StepData, api_key_name: str,
                        req: dict):
    if req["params"] is None:
        req["params"] = {}

    for params in values["params_array"]:
        params_array = data.get_data(params["array"], values, list)
        data.deep_format(params_array, api_key_name, values)

        param = "".join([
            f"{data.format(params['pattern'], values)}{data.format(params.get('delimiter', ''), values)}"
            for _ in data.loop_array(params_array, values)
        ])
        req["params"][params["key"]] = param[:-1]
Example #2
0
def default(values: dict, data: StepData, config: dict):
    """Generiert eine Audiodatei mit der Python-Bibliothek gTTS.

    Wenn in der Konfiguration `sub_pairs` angegeben sind, werden diese den bisherigen `sub_pairs` hinzugefügt.
    `sub_pairs` sind bestimmte Wörter, die im Text ersetzt werden sollen.
    Beispiel: "z.B." soll vorgelesen werden als "zum Beispiel".

    :param values: Werte aus der JSON-Datei
    :param data: Daten aus der API
    :param config: Daten aus der Konfigurationsdatei
    :return:
    """
    for key in values:
        text = part.audio_parts(values[key]["parts"], data)

        sub_pairs = data.deep_format(config.get("sub_pairs", None), values=values)

        if sub_pairs:
            for key in sub_pairs:
                value = data.get_data(key, values)
                gtts.tokenizer.symbols.SUB_PAIRS.append((key, value))

        tts = gTTS(text, lang=data.format(config["lang"]))

        file_path = resources.new_temp_resource_path(data.data["_pipe_id"], data.format(config["format"]))
        tts.save(file_path)

        values[key] = file_path
Example #3
0
def add_data(values: dict, data: StepData):
    """Fügt Daten zu einem neuen Key hinzu.

    Fügt die unter `"data"` angegebenen Daten zu einem neuen Key hinzu.

    :param values: Werte aus der JSON-Datei
    :param data: Daten aus der API
    """
    for new_key in values["new_keys"]:
        value = data.deep_format(values["data"], values=values)
        data.insert_data(new_key, value, values)
Example #4
0
def _create_query(values: dict, data: StepData):
    req = {}
    api_key_name = values.get("api_key_name", None)

    # Get/Format method and headers
    req["method"] = data.format(values.get("method", "get"))
    req["headers"] = data.deep_format(values.get("headers", None),
                                      api_key_name, values)

    # Get/Format body data
    req["body_type"] = data.format(values.get("body_type", "json"), values)

    if req["body_type"].__eq__("json"):
        req["json"] = data.deep_format(values.get("body", None), api_key_name,
                                       values)
    else:
        req["other"] = data.format(
            values["body"]) if "body" in values else None

        if values.get("body_encoding", None) is not None:
            req[req["body_type"]] = req[req["body_type"]].encode(
                values["body_encoding"])

    # Get/Format url
    req["url"] = data.format_api(values["url_pattern"], api_key_name, values)

    # Get/Format params
    req["params"] = data.deep_format(values.get("params", None), api_key_name,
                                     values)
    if values.get("params_array", None) is not None:
        _build_params_array(values, data, api_key_name, req)

    # Get/Format response, format
    req["res_format"] = data.format(values.get("response_format", "json"))
    # TODO use Format
    req["xml_config"] = data.deep_format(values.get("xml_config", {}),
                                         values=values)
    req["include_headers"] = data.get_data(
        values.get("include_headers", False), values, bool)

    return req
def _text_to_audio(data: StepData, values: dict, text: str, config: dict):
    sub_pairs = data.deep_format(config.get("sub_pairs", None), values=values)

    if sub_pairs:
        for key in sub_pairs:
            value = data.get_data(key, values)
            gtts.tokenizer.symbols.SUB_PAIRS.append((key, value))

    tts = gTTS(data.format(text, values), lang=data.format(config["lang"]))

    file_path = resources.new_temp_resource_path(data.data["_pipe_id"],
                                                 data.format(config["format"]))
    tts.save(file_path)
    return file_path
Example #6
0
def loop(values: dict, data: StepData):
    """Durchläuft das angegebene Array und führt für jedes Element die angegebenen `"transform"`-Funktionen aus.

    :param values: Werte aus der JSON-Datei
    :param data: Daten aus der API
    """
    loop_values = data.deep_format(values.get("values", None), values=values)

    # if values is none use range
    if loop_values is None:
        start = data.get_data(values.get("range_start", 0), values, int)
        stop = data.get_data(values["range_stop"], values, int)
        loop_values = range(start, stop)

    for _ in data.loop_array(loop_values, values):
        transform(values, data)
Example #7
0
def input(values: dict,
          data: StepData,
          name: str,
          save_key,
          ignore_testing=False):
    """Hier können Daten angegeben werden, die einfach hinzugefügt werden.


    :param values: Werte aus der JSON-Datei
    :param data: Daten aus der API
    :param name: Testdatei, die geladen werden soll.
    :param save_key: Key, unter dem die Daten gespeichert werden.
    :param ignore_testing: Ob der Request durchgeführt werden soll, obwohl testing `true` ist.
    """
    res = data.deep_format(values["data"], values=values)
    data.insert_data(save_key, res, values)
Example #8
0
def check_key(values: dict, data: StepData):
    """Überprüft, ob ein Key vorhanden ist und setzt den dazugehörigen `key` bzw. den `new_keys` auf `true`.

    :param values: Werte aus der JSON-Datei
    :param data: Daten aus der API
    :return:
    """
    for idx, key in enumerate(values["keys"]):
        try:
            data.get_data(key, values)
            value = True
        except StepKeyError:
            if "init_with" in values:
                init = data.deep_format(values["init_with"], values=values)
                data.insert_data(key, init, values)

            value = False
        if "new_keys" in values:
            data.insert_data(values["new_keys"][idx], value, values)