Exemple #1
0
def other_dev_main(dev_param):
    first_part_str = '{"id":%s,"name":%s,"description":%s,"room":%s,"type":"devices.types.other","capabilities":[' % (
        str(dev_param[0]), str(dev_param[1]), str(
            dev_param[2]), str(dev_param[3]))
    file_capabil = str(dev_param[9].replace("\"", ""))
    capabilities = functions.read_list(file_capabil)
    capabil_params = ""
    for capab_str in capabilities:
        capab_str = functions.clean_text(capab_str)
        capab_list = capab_str.split(",")
        #тут проверяем умения
        if "on_off" in str(capab_list[0]):
            capabil_params = capabil_params + '{"type":"%son_off","retrievable":true},' % llen
        elif "toggle" in str(capab_list[0]):
            instance_str = str(capab_list[1])
            capabil_params = capabil_params + '{"type":"%stoggle","retrievable":true,"parameters":{"instance":%s}},' % (
                llen, instance_str)
        elif "range" in str(capab_list[0]):
            instance_str = str(capab_list[1])
            min_val = int(capab_list[2])
            max_val = int(capab_list[3])
            prec = int(capab_list[4])
            if "ifttt" in str(capab_list[5].replace("\"", "")).lower():
                pass
            else:
                if "brightness" in instance_str or "open" in instance_str or "humidity" in instance_str:
                    capabil_params = capabil_params + '{"type":"%srange","retrievable":true,"parameters":{"instance":%s,"random_access":true,"range":{"max":%s,"min":%s,"precision":%s},"unit":"unit.percent"}},' % (
                        llen, instance_str, max_val, min_val, prec)
                elif "temperature" in instance_str:
                    capabil_params = capabil_params + '{"type":"%srange","retrievable":true,"parameters":{"instance":%s,"random_access":true,"range":{"max":%s,"min":%s,"precision":%s},"unit":"unit.temperature.celsius"}},' % (
                        llen, instance_str, max_val, min_val, prec)
                elif "channel" in instance_str or "volume" in instance_str:
                    capabil_params = capabil_params + '{"type":"%srange","retrievable":true,"parameters":{"instance":%s,"random_access":true,"range":{"max":%s,"min":%s,"precision":%s}}},' % (
                        llen, instance_str, max_val, min_val, prec)
                else:
                    pass
        #умение для RGB
        elif "color_setting" in str(capab_list[0]):
            capabil_params = capabil_params + '{"type":"%scolor_setting","retrievable":true,"parameters":{"color_model":"rgb"}},' % (
                llen)
        else:
            pass

    capabil_params = capabil_params[0:(len(capabil_params) - 1)]
    third_path_str = '],"device_info":{"manufacturer":%s,"model":%s,"hw_version":%s,"sw_version":%s}}' % (
        str(dev_param[4]), str(dev_param[5]), str(
            dev_param[6]), str(dev_param[7]))

    all_str = first_part_str + capabil_params + third_path_str
    return all_str
Exemple #2
0
def control_scene(dev_id, req_save, dev_param, num_dev):
    file_capabil = str(dev_param[9].replace("\"",
                                            ""))  #файл с конфигом сценария
    capabilities = functions.read_list(
        file_capabil)  #список строк умений из файла
    #текущий интенс из запроса
    intence_cur = str(req_save['payload']['devices'][num_dev]['capabilities']
                      [0]['state']['instance'])  #'"on"'
    resp_val = str(req_save['payload']['devices'][num_dev]['capabilities'][0]
                   ['state']['value'])
    for capabil in capabilities:  #для каждой строки в файле
        capabilstr = (functions.clean_text(str(capabil))).replace(
            "\"", "")  #чистим от энтеров и кавычек
        url_any_on = str(capabilstr)
        if "True" in str(resp_val):
            any_send(url_any_on)
        else:
            pass
    all_str = '{"id":"%s","capabilities":[{"type":"devices.capabilities.on_off","state":{"instance":"on","action_result": {"status": "DONE"}}}]},' % dev_id
    return all_str
Exemple #3
0
def control_other(dev_id, req_save, dev_param, num_dev):
    file_capabil = str(dev_param[9].replace("\"", ""))  #файл с конфигом умений
    capabilities = functions.read_list(
        file_capabil)  #список строк умений из файла
    #текущий интенс из запроса
    intence_cur = str(req_save['payload']['devices'][num_dev]['capabilities']
                      [0]['state']['instance'])  #'"on"'
    #тип умения из запроса. Например: devices.capabilities.on_off
    type_capability = str(
        req_save['payload']['devices'][num_dev]['capabilities'][0]['type'])
    #проверяем on_off и шлем хук
    if "devices.capabilities.on_off" in type_capability:
        #текущее значение интенса. Например - 50
        resp_val = str(req_save['payload']['devices'][num_dev]['capabilities']
                       [0]['state']['value'])
        for capabil in capabilities:  #для каждой строки в файле

            capabil_list = functions.clean_text(str(capabil)).split(
                ",")  #чистим от энтеров и делим параметры на список
            test_capabil = "devices.capabilities." + str(capabil_list[0])
            test_capabil = test_capabil.replace(
                "\"", "")  #строка для сравнения с полученным типом умения
            if type_capability in test_capabil:  #если тип умнеия есть в текущей строке файла
                if "ifttt" in str(capabil_list[1].replace(
                        "\"", "")).lower():  #если ifttt
                    huk_on = str(capabil_list[2]).replace("\"", "")
                    huk_off = str(capabil_list[3]).replace("\"", "")
                    if "True" in str(resp_val):
                        ifftt_send(huk_on)
                    if "False" in str(resp_val):
                        ifftt_send(huk_off)
                    else:
                        pass
                elif "blynk" in str(capabil_list[1].replace("\"", "")).lower():
                    blynk_token = str(capabil_list[3]).replace("\"", "")
                    blynk_pin = str(capabil_list[2]).replace("\"", "")
                    on_val = "1"
                    off_val = "0"

                    if "True" in str(resp_val):
                        blynk_send(blynk_token, blynk_pin, on_val)
                    if "False" in str(resp_val):
                        blynk_send(blynk_token, blynk_pin, off_val)
                    else:
                        pass
                elif "any" in str(capabil_list[1].replace("\"", "")).lower():
                    url_any_on = str(capabil_list[2]).replace("\"", "")
                    url_any_off = str(capabil_list[3]).replace("\"", "")
                    if "True" in str(resp_val):
                        any_send(url_any_on)
                    if "False" in str(resp_val):
                        any_send(url_any_off)
                    else:
                        pass
                else:
                    pass

            else:
                pass
        all_str = '{"id":"%s","capabilities":[{"type":"devices.capabilities.on_off","state":{"instance":"%s","action_result": {"status": "DONE"}}}]},' % (
            dev_id, intence_cur)

    elif "devices.capabilities.toggle" in type_capability:
        for capabil in capabilities:  #для каждой строки в файле
            capabil_list = functions.clean_text(str(capabil)).split(",")
            test_intance = str(capabil_list[1])
            test_intance = test_intance.replace("\"", "")
            if test_intance in intence_cur:
                if "ifttt" in str(capabil_list[2].replace("\"", "")).lower():
                    huk_on = str(capabil_list[3]).replace("\"", "")
                    ifftt_send(huk_on)
                elif "blynk" in str(capabil_list[2].replace("\"", "")).lower():
                    blynk_token = str(capabil_list[4]).replace("\"", "")
                    blynk_pin = str(capabil_list[3]).replace("\"", "")
                    on_val = "1"
                    blynk_send(blynk_token, blynk_pin, on_val)
                elif "any" in str(capabil_list[2].replace("\"", "")).lower():
                    url_any_on = str(capabil_list[3]).replace("\"", "")
                    any_send(url_any_on)
                else:
                    pass
        all_str = '{"id":"%s","capabilities":[{"type":"devices.capabilities.toggle","state":{"instance":"%s","action_result": {"status": "DONE"}}}]},' % (
            dev_id, intence_cur)

    elif "devices.capabilities.range" in type_capability:
        #текущее значение интенса. Например - 50.
        resp_val = str(req_save['payload']['devices'][num_dev]['capabilities']
                       [0]['state']['value'])
        for capabil in capabilities:  #для каждой строки в файле
            capabil_list = functions.clean_text(str(capabil)).split(",")
            test_intance = str(capabil_list[1])
            test_intance = test_intance.replace("\"", "")
            if test_intance in intence_cur:  #если совпадают названия интенсов
                if "ifttt" in str(capabil_list[5].replace("\"", "")).lower():
                    pass
                elif "blynk" in str(capabil_list[5].replace("\"", "")).lower():
                    max_in_dev = int(capabil_list[9].replace(
                        "\"", ""))  #максимальный предел на устройстве
                    max_yandex = int(capabil_list[3].replace(
                        "\"", ""))  #максимальный предел в УДЯ
                    blynk_token = str(capabil_list[7]).replace("\"", "")
                    blynk_pin = str(capabil_list[6]).replace("\"", "")
                    on_val = str(resp_val)
                    on_val = str(round(
                        (max_in_dev / max_yandex) * int(on_val)))

                    blynk_send(blynk_token, blynk_pin, on_val)
                elif "any" in str(capabil_list[5].replace("\"", "")).lower():
                    max_in_dev = int(capabil_list[8].replace(
                        "\"", ""))  #максимальный предел на устройстве
                    max_yandex = int(capabil_list[3].replace(
                        "\"", ""))  #максимальный предел в УДЯ
                    url_any_on = str(capabil_list[6]).replace("\"", "")
                    value_any = str(resp_val)
                    value_any = str(
                        round((max_in_dev / max_yandex) * int(value_any)))
                    any_val_send(url_any_on, value_any)
                else:
                    pass
        all_str = '{"id":"%s","capabilities":[{"type":"devices.capabilities.range","state":{"instance":"%s","action_result": {"status": "DONE"}}}]},' % (
            dev_id, intence_cur)
    elif "devices.capabilities.color_setting" in type_capability:  #если в запросе есть color_setting
        resp_val = str(req_save['payload']['devices'][num_dev]['capabilities']
                       [0]['state']['value'])  #принятое значение RGB
        for capabil in capabilities:  #для каждой строки в файле other.txt
            capabil_list = functions.clean_text(str(capabil)).split(
                ",")  #чистим от энтеров и делим параметры на список
            test_capabil = "devices.capabilities." + str(
                capabil_list[0])  #задаем строку из файла для поиска
            test_capabil = test_capabil.replace(
                "\"",
                "")  #строка из файла для сравнения с полученным типом умения

            if type_capability in test_capabil:  #если тип умнеия есть в текущей строке файла
                if "ifttt" in str(capabil_list[4].replace(
                        "\"", "")).lower():  #если ifttt
                    print("\nIFTTT color_setting_not")
                elif "blynk" in str(capabil_list[4].replace(
                        "\"", "")).lower():  #если blynk
                    print("\nBLYNK color_setting")
                    blynk_token = str(capabil_list[6]).replace("\"", "")
                    blynk_pin = str(capabil_list[5]).replace("\"", "")
                    print("\nЗначение RGB_управление = ", str(resp_val))
                    hex_val = "%06x" % int(resp_val)
                    print("hex_val = ", hex_val)
                    str_rgb = str(
                        tuple(int(hex_val[i:i + 2], 16) for i in (0, 2, 4)))
                    print("str_rgb = ", str_rgb)
                    str_rgb_lst = (str_rgb[1:(len(str_rgb) - 1)]).replace(
                        " ", "")
                    str_rgb_lst = str_rgb_lst.split(",")
                    red_r = int(capabil_list[1].replace("\"", ""))
                    green_r = int(capabil_list[2].replace("\"", ""))
                    blue_b = int(capabil_list[3].replace("\"", ""))
                    red_cur = int(str_rgb_lst[0])
                    green_cur = int(str_rgb_lst[1])
                    blue_cur = int(str_rgb_lst[2])
                    green = str(round((red_r / 255) * red_cur))
                    red = str(round((green_r / 255) * green_cur))
                    blue = str(round((blue_b / 255) * blue_cur))
                    print("\nHEX RGB_управление = ", red, " ", green, " ",
                          blue)
                    blynk_sendRGB(blynk_token, blynk_pin, red, green, blue)

                elif "any" in str(capabil_list[4].replace(
                        "\"", "")).lower():  #если другое устройство
                    url_any = str(capabil_list[5].replace("\"", ""))
                    print("\nANY color_setting")
                    print("\nЗначение RGB_управление = ", str(resp_val))
                    hex_val = "%06x" % int(resp_val)
                    print("hex_val = ", hex_val)
                    str_rgb = str(
                        tuple(int(hex_val[i:i + 2], 16) for i in (0, 2, 4)))
                    print("str_rgb = ", str_rgb)
                    str_rgb_lst = (str_rgb[1:(len(str_rgb) - 1)]).replace(
                        " ", "")
                    str_rgb_lst = str_rgb_lst.split(",")
                    red_r = int(capabil_list[1].replace("\"", ""))
                    green_r = int(capabil_list[2].replace("\"", ""))
                    blue_b = int(capabil_list[3].replace("\"", ""))
                    red_cur = int(str_rgb_lst[0])
                    green_cur = int(str_rgb_lst[1])
                    blue_cur = int(str_rgb_lst[2])
                    red = str(round((red_r / 255) * red_cur))
                    green = str(round((green_r / 255) * green_cur))
                    blue = str(round((blue_b / 255) * blue_cur))
                    print("\nHEX RGB_управление = ", red, " ", green, " ",
                          blue)
                    any_val_sendRGB(url_any, red, green, blue)
                else:
                    print("\nnoconnect color_setting")
            else:
                print("\nNO color_setting")
        all_str = '{"id":"%s","capabilities":[{"type":"devices.capabilities.color_setting","state":{"instance":"rgb","action_result": {"status": "DONE"}}}]},' % (
            dev_id)
    else:
        pass
    return all_str
Exemple #4
0
def status_other(dev_param, dev_id, req_save):
    first_part_str = '{"devices":[{"id":"%s","capabilities": [' % dev_id
    file_capabil = str(dev_param[9].replace("\"", ""))
    capabilities = functions.read_list(file_capabil)
    capabil_params = ""

    for capab_str in capabilities:  #для каждой строки в файле
        capab_str = functions.clean_text(capab_str)
        capab_list = capab_str.split(
            ",")  #разбиваем текущую строку на параметры

        if "on_off" in str(capab_list[0]):
            status_io = str(capab_list[4].replace("\"",
                                                  "")).lower()  #статус или нет
            if "status" in status_io:  #если статус
                if "blynk" in str(capab_list[1].replace("\"", "")).lower():
                    blynk_token = str(capab_list[3]).replace("\"", "")
                    blynk_pin = str(capab_list[2]).replace("\"", "")
                    current_val = blynk_get_val(blynk_token, blynk_pin)
                    if "1" in current_val:
                        st_value = "true"
                    else:
                        st_value = "false"

                else:  #если ifttt или any
                    url_any = str(capab_list[5].replace("\"", ""))
                    current_val = any_get_all(url_any)
                    str_for_search = str(capab_list[6].replace("\"", ""))

                    if str_for_search in current_val:
                        st_value = "true"
                    else:
                        st_value = "false"
                capabil_params = capabil_params + '{"type":"%son_off","state":{"instance":"on","value":%s}},' % (
                    llen, st_value)
            else:
                capabil_params = capabil_params + '{"type":"%son_off","state":{"instance":"on","value":false}},' % llen

        elif "toggle" in str(capab_list[0]):
            instance_str = str(capab_list[1])
            if "blynk" in str(capab_list[2].replace("\"", "")).lower():
                status_io = str(capab_list[5].replace(
                    "\"", "")).lower()  #статус или нет
            else:
                status_io = str(capab_list[4].replace(
                    "\"", "")).lower()  #статус или нет
            if "status" in status_io:  #если статус
                if "blynk" in str(capab_list[2].replace("\"", "")).lower():
                    blynk_token = str(capab_list[4]).replace("\"", "")
                    blynk_pin = str(capab_list[3]).replace("\"", "")
                    current_val = blynk_get_val(blynk_token, blynk_pin)
                    if "1" in current_val:
                        st_value = "true"
                    else:
                        st_value = "false"

                else:  #если ifttt или any
                    url_any = str(capab_list[5].replace("\"", ""))
                    current_val = any_get_all(url_any)
                    str_for_search = str(capab_list[6].replace("\"", ""))
                    if str_for_search in current_val:
                        st_value = "true"
                    else:
                        st_value = "false"
                capabil_params = capabil_params + '{"type":"%stoggle","state":{"instance":%s,"value":%s}},' % (
                    llen, instance_str, st_value)
            else:
                capabil_params = capabil_params + '{"type":"%stoggle","state":{"instance":%s,"value":false}},' % (
                    llen, instance_str)
        elif "range" in str(capab_list[0]):
            instance_str = str(capab_list[1])
            if "blynk" in str(capab_list[5].replace("\"", "")).lower():
                status_io = str(capab_list[8].replace(
                    "\"", "")).lower()  #статус или нет
                max_in_dev = int(capab_list[9].replace(
                    "\"", ""))  #максимальный предел на устройстве

            else:
                status_io = str(capab_list[7].replace(
                    "\"", "")).lower()  #статус или нет
                max_in_dev = int(capab_list[11].replace(
                    "\"", ""))  #максимальный предел на устройстве
            max_yandex = int(capab_list[3].replace(
                "\"", ""))  #максимальный предел в УДЯ

            if "status" in status_io:  #если статус
                if "ifttt" in str(capab_list[5].replace("\"", "")).lower():
                    pass  #не поддерживается
                elif "blynk" in str(capab_list[5].replace("\"", "")).lower():
                    blynk_token = str(capab_list[7]).replace("\"", "")
                    blynk_pin = str(capab_list[6]).replace("\"", "")
                    current_val = blynk_get_val(blynk_token, blynk_pin)
                    current_val = int(
                        round((max_yandex / max_in_dev) * int(current_val)))
                    capabil_params = capabil_params + '{"type":"%srange","state":{"instance":%s,"value":%s}},' % (
                        llen, instance_str, current_val)
                elif "any" in str(capab_list[5].replace("\"", "")).lower():

                    url_any = str(capab_list[8].replace("\"", ""))
                    indS = str(capab_list[9])
                    indE = str(capab_list[10])

                    current_val = any_get(url_any, indS, indE)
                    capabil_params = capabil_params + '{"type":"%srange","state":{"instance":%s,"value":%s}},' % (
                        llen, instance_str, current_val)
                else:

                    val_rang = 100
                    capabil_params = capabil_params + '{"type":"%srange","state":{"instance":%s,"value":%s}},' % (
                        llen, instance_str, val_rang)
            else:

                val_rang = 100
                capabil_params = capabil_params + '{"type":"%srange","state":{"instance":%s,"value":%s}},' % (
                    llen, instance_str, val_rang)
        #статус RGB
        elif "color_setting" in str(capab_list[0]):
            if "blynk" in str(capab_list[4].replace("\"", "")).lower():
                status_io = str(capab_list[7].replace(
                    "\"", "")).lower()  #статус или нет
            elif "any" in str(capab_list[4].replace("\"", "")).lower():
                status_io = str(capab_list[6].replace("\"", "")).lower()
            else:
                status_io = "nostatus"
            if "status" in status_io:
                if "ifttt" in str(capab_list[4].replace("\"", "")).lower():
                    pass  #не поддерживается
                if "blynk" in str(capab_list[4].replace("\"", "")).lower():
                    blynk_token = str(capab_list[6]).replace("\"", "")
                    blynk_pin = str(capab_list[5]).replace("\"", "")
                    current_val = blynk_get_val(blynk_token, blynk_pin)
                    list_rgb = current_val.split(
                        ",")  #разбиваем текущую строку на параметры

                    green = int(
                        round((255 / (int(capab_list[1].replace("\"", "")))) *
                              int(list_rgb[0])))
                    red = int(
                        round((255 / (int(capab_list[2].replace("\"", "")))) *
                              int(list_rgb[1])))
                    blue = int(
                        round((255 / (int(capab_list[3].replace("\"", "")))) *
                              int(list_rgb[2])))
                    print("RGB_from_blynk ", str(red), " ", str(green), " ",
                          str(blue))
                    rgb_all = rgb_to_hex((red, green, blue))
                    print(str(rgb_all))

                    val_rgb = int(rgb_all, 16)
                    print("\nR " + str(red) + " G " + str(green) + " B " +
                          str(blue))
                    print("\ndec = ", val_rgb)
                    capabil_params = capabil_params + '{"type":"%scolor_setting","state":{"instance":"rgb","value":%s}},' % (
                        llen, val_rgb)
                if "any" in str(capab_list[4].replace("\"", "")).lower():
                    capabil_params = capabil_params + '{"type":"%scolor_setting","state":{"instance":"rgb","value":0}},' % (
                        llen)
            else:
                capabil_params = capabil_params + '{"type":"%scolor_setting","state":{"instance":"rgb","value":0}},' % (
                    llen)
        else:
            pass
    capabil_params = capabil_params[0:(len(capabil_params) - 1)]
    third_path_str = ']}]}}'
    all_str = first_part_str + capabil_params + third_path_str
    return all_str
class sentence_generator:
    root_dir = os.path.dirname(os.path.abspath(__file__))
    queries = functions.read_list(root_dir + '/data/queries.txt')
    real_bay_area_address = functions.read_list(root_dir +
                                                '/data/bay_area_addresses.csv')
    street_names = functions.read_weighted_dict(
        root_dir + '/data/us_street_name_sorted_top75percent.csv')
    city_names = functions.read_list(root_dir + '/data/us_cities.csv')
    state_names = functions.read_list(root_dir + '/data/us_states.csv')
    # Function def: read_person_names(file_name. accumulated prob threshold)
    female_first_names = functions.read_person_names(
        root_dir + '/data/dist.female.first', 10)
    male_first_names = functions.read_person_names(
        root_dir + '/data/dist.male.first', 10)
    last_names = functions.read_person_names(root_dir + '/data/dist.all.last',
                                             10)
    day_of_week = functions.read_list(root_dir + '/data/DAY-OF-WEEK.vocab')
    person_famous = functions.read_list(root_dir + '/data/PERSON-FAMOUS.vocab')
    restaurant_types = functions.read_list(root_dir +
                                           '/data/RESTAURANT-TYPE.vocab')
    restaurant_food = functions.read_list(root_dir +
                                          '/data/RESTAURANT-FOOD.vocab')
    restaurant_names = functions.read_list(root_dir +
                                           '/data/RESTAURANT-NAME.vocab')
    retailers = functions.read_list(root_dir + '/data/RETAILER.vocab')
    websites = functions.read_list(root_dir + '/data/WEBSITE.vocab')
    sentences = functions.read_list(root_dir + '/data/sentences.txt')
    story_sentences = functions.read_list(root_dir +
                                          '/data/story_sentences.txt')

    time_format = dict()
    time_format['%I:%M %p'] = 0.6  # e.g. '10:40 AM'
    time_format['%I:%M'] = 0.4  # e.g. '06:35'

    date_format = dict()
    # replaced %d with {d}, so as to add prefix (th, st, nd, rd) in generate_date function
    date_format['%A, %B {d}'] = 0.5  # e.g. 'Sunday, November 19th'
    date_format['%B {d}'] = 0.3  # e.g. 'March 11th'
    date_format['{d} of %B'] = 0.2  # e.g. '24th of December'

    # define weights for number of digits to be generated for street numbers
    num_digit = dict()
    num_digit[1] = 9
    num_digit[2] = 90
    num_digit[3] = 100
    num_digit[4] = 100

    time_format = dict()
    time_format['%I:%M %p'] = 0.6  # e.g. '10:40 AM'
    time_format['%I:%M'] = 0.4  # e.g. '06:35'

    def generate_time(self):
        """ Generate random time
        Format is configured in time_format variable
        Sample output: '10:40 AM', '03:17 PM', '06:35'
        """
        dt = datetime.datetime(2000, 01, 01, randint(0, 23),
                               randint(0, 11) * 5)
        time_str = dt.strftime(functions.weighted_random(self.time_format))
        if (time_str[0] == '0'):
            time_str = time_str[1:]
        return time_str

    def suffix(self, d):
        return 'th' if 11 <= d <= 13 else {
            1: 'st',
            2: 'nd',
            3: 'rd'
        }.get(d % 10, 'th')

    def custom_strftime(self, format, t):
        return t.strftime(format).replace('{d}',
                                          str(t.day) + self.suffix(t.day))

    date_format = dict()
    # replaced %d with {d}, so as to add prefix (th, st, nd, rd) in generate_date function
    date_format['%A, %B {d}'] = 0.5  # e.g. 'Sunday, November 19th'
    date_format['%B {d}'] = 0.3  # e.g. 'March 11th'
    date_format['{d} of %B'] = 0.2  # e.g. '24th of December'

    def generate_date(self):
        """ Generate random date
        Format is configured in date_format variable
        Sample output: '10:40 AM', '03:17 PM', '06:35'
        """
        dt = datetime.datetime(2000, randint(1, 12), randint(1, 29))
        date_str = self.custom_strftime(
            functions.weighted_random(self.date_format), dt)
        # date_str = dt.strftime(weighted_random(date_format))
        return date_str

    def generate_street_num(self, num_digit):
        street_num = ''
        for i in range(num_digit):
            if (i == 0):
                digit = randint(1, 9)
            else:
                digit = randint(0, 9)
            street_num += str(digit)
        return street_num

    def generate_street_name(self):
        street_name_with_num = self.generate_street_num(
            functions.weighted_random(
                self.num_digit)) + ' ' + functions.weighted_random(
                    self.street_names)
        # add city_state_name with 30% and 10% prob
        city_state_name = ''
        rand_num = random()
        if (rand_num < 0.3):
            city_state_name = city_state_name + ', ' + functions.random_ele(
                self.city_names)
            if (rand_num < 0.1):
                city_state_name = city_state_name + ', ' + functions.random_ele(
                    self.state_names)
        return street_name_with_num + city_state_name

    def generate_bay_area_address(self):
        return functions.random_ele(self.real_bay_area_address)

    def generate_phone_number(self):
        phone_num = []
        for i in range(10):
            count = i + 1
            if (count == 1):
                digit = str(randint(1, 9))
                phone_num.append(digit)
            elif (count == 3 or count == 6):
                digit = str(randint(0, 9))
                phone_num.append(digit)
                phone_num.append('-')
            else:
                digit = str(randint(0, 9))
                phone_num.append(digit)
        return ' '.join(phone_num)

    def generate_name_with_phone_number(self):
        actions = ['Call', 'Dail', 'Make a call to']
        name = self.generate_first_name()
        phone_num = self.generate_phone_number()
        action = actions[randint(0, len(actions) - 1)]
        return action + ' %s at %s' % (name, phone_num)

    def generate_query(self):
        query = functions.random_ele(self.queries)
        match_subs = re.findall(r'@([^ ]+)', query)
        if len(match_subs) > 0:
            for match_term in match_subs:
                # print ('Replacing ' + match_term)
                query = re.sub(r'@' + match_term,
                               self.generate_phrase(match_term),
                               query).capitalize()
        return query

    def generate_city(self):
        return functions.random_ele(self.city_names)

    def generate_day_of_week(self):
        return functions.random_ele(self.day_of_week)

    def generate_person_famous(self):
        return functions.random_ele(self.person_famous)

    def generate_first_name(self):
        if (randint(0, 1) % 2 == 0):
            first_name = functions.weighted_random(self.female_first_names)
        else:
            first_name = functions.weighted_random(self.male_first_names)
        return first_name

    def generate_last_name(self):
        last_name = functions.weighted_random(self.last_names)
        return last_name

    def generate_name(self):
        name = self.generate_first_name() + ' ' + self.generate_last_name()
        return name

    def generate_restaurant_type(self):
        return functions.random_ele(self.restaurant_types)

    def generate_restaurant_food(self):
        return functions.random_ele(self.restaurant_food)

    def generate_restaurant_name(self):
        return functions.random_ele(self.restaurant_names)

    def generate_retailer(self):
        return functions.random_ele(self.retailers)

    def generate_website(self):
        return functions.random_ele(self.websites)

    def generate_starting_notice(self):
        notice = list()
        notice.append('Now it\'s time to get started.')
        notice.append(
            'I understand that the data collected via this App will be used for development purposes.'
        )
        notice.append('We thank you in advance for your help.')
        return '\n'.join(notice)

    def generate_ending_notice(self):
        notice = list()
        notice.append(
            'This reading task is now complete, thank you for your time.')
        return '\n'.join(notice)

    def generate_simple_sentences(self):
        samples = list()
        samples.append('Check for new messages.')
        samples.append('Hello.')
        samples.append('Goodbye.')
        samples.append('Yes.')
        samples.append('No.')
        samples.append('Help.')
        samples.append('Open Facebook.')
        samples.append('Start navigation.')
        samples.append('Create a new Email.')
        return '\n'.join(samples)

    def generate_story_sentences(self):
        sample_length = 25
        start_index = randint(0, len(self.story_sentences) - sample_length)
        end_index = start_index + sample_length
        sample_sentences = self.story_sentences[start_index:end_index]
        return '\n'.join(sample_sentences)

    def generate_sentences(self):
        return functions.random_ele(self.sentences)

    def generate_phrase(self, phrase_type):
        phrase = ''
        if (phrase_type == 'CITY'):
            phrase = self.generate_city()
        elif (phrase_type == 'DAY-OF-WEEK'):
            phrase = self.generate_day_of_week()
        elif (phrase_type == 'PERSON-FAMOUS'):
            phrase = self.generate_person_famous()
        elif (phrase_type == 'PERSON-FIRSTNAME'):
            phrase = self.generate_first_name()
        elif (phrase_type == 'PERSON-LASTNAME'):
            phrase = self.generate_last_name()
        elif (phrase_type == 'RESTAURANT-TYPE'):
            phrase = self.generate_restaurant_type()
        elif (phrase_type == 'RESTAURANT-FOOD'):
            phrase = self.generate_restaurant_food()
        elif (phrase_type == 'RESTAURANT-NAME'):
            phrase = self.generate_restaurant_name()
        elif (phrase_type == 'RETAILER'):
            phrase = self.generate_retailer()
        elif (phrase_type == 'TIME'):
            phrase = self.generate_time()
        elif (phrase_type == 'WEBSITE'):
            phrase = self.generate_website()
        return phrase

    def generate_sentence(self, sentence_type):
        sentence = ''
        if (sentence_type == 'STARTING_NOTICE'):
            sentence = self.generate_starting_notice()
        elif (sentence_type == 'SIMPLE_SENTENCE'):
            sentence = self.generate_simple_sentences()
        elif (sentence_type == 'NUMBER'):
            sentence = self.generate_street_num(
                functions.weighted_random(self.num_digit))
        elif (sentence_type == 'TIME'):
            sentence = self.generate_time()
        elif (sentence_type == 'DAY_OF_WEEK'):
            sentence = self.generate_day_of_week()
        elif (sentence_type == 'DATE'):
            sentence = self.generate_date()
        elif (sentence_type == 'PHONE_NUMBER'):
            sentence = self.generate_phone_number()
        elif (sentence_type == 'NAME_WITH_PHONE_NUMBER'):
            sentence = self.generate_name_with_phone_number()
        elif (sentence_type == 'NAME'):
            sentence = self.generate_name()
        elif (sentence_type == 'STREET_ADDRESS'):
            sentence = self.generate_street_name()
        elif (sentence_type == 'BAY_AREA_ADDRESS'):
            sentence = self.generate_bay_area_address()
        elif (sentence_type == 'QUERY'):
            sentence = self.generate_query()
        elif (sentence_type == 'SENTENCE'):
            sentence = self.generate_sentences()
        elif (sentence_type == 'ENDING_NOTICE'):
            sentence = self.generate_ending_notice()
        return sentence
Exemple #6
0
def get_list_dev():
    list_dev = functions.read_list(path_devices)
    return (list_dev)