Ejemplo n.º 1
0
def get_right_shoulder_pitch(kinect_pos, world=None):
    if world is None:
        world = get_robot_world(kinect_pos)
    shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_RIGHT]]
    spine_shoulder = kinect_pos[kinecthandler.joints_map[joints.SPINE_SHOULDER]]
    spine_mid = kinect_pos[kinecthandler.joints_map[joints.SPINE_MID]]
    elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_RIGHT]]
    finger_tip = kinect_pos[kinecthandler.joints_map[joints.HAND_TIP_RIGHT]]
    head = kinect_pos[kinecthandler.joints_map[joints.HEAD]]
    wrist = kinect_pos[kinecthandler.joints_map[joints.WRIST_RIGHT]]

    shoulder_elbow = utils.get_vector(elbow, shoulder, transform=world[0])
    shoulder_elbow = utils.normalize(shoulder_elbow)
    shoulder_spin_shoulder = utils.get_vector(spine_shoulder, shoulder, transform=world[0])
    shoulder_spin_shoulder = utils.normalize(shoulder_spin_shoulder)
    modified_spine_mid = [shoulder[0], spine_mid[1], spine_mid[2]]
    # spine_shoulder_spine_mid = utils.get_vector(modified_spine_mid, spine_shoulder, transform=world[0])
    spine_shoulder_spine_mid = utils.get_vector(modified_spine_mid, shoulder, transform=world[0])
    spine_shoulder_spine_mid = utils.normalize(spine_shoulder_spine_mid)
    cross = np.cross(spine_shoulder_spine_mid, shoulder_spin_shoulder)
    cross = np.reshape(utils.normalize(cross), (3, 1))
    # Only z and y needed
    cross = [cross[2], cross[1]]
    cross = utils.normalize(cross)
    # Only z and y needed
    shoulder_elbow = [shoulder_elbow[2], shoulder_elbow[1]]
    shoulder_elbow = utils.normalize(shoulder_elbow)
    sign = 1
    # If the elbow is higher than the shoulder
    if shoulder_elbow[1] < 0 or finger_tip[1] > head[1] or wrist[1] > shoulder[1]:
        sign = -1
    res = sign * np.arccos(np.dot(shoulder_elbow, cross)[0])
    res = max(res, -1.57)
    res = min(res, 1.57)
    return res
Ejemplo n.º 2
0
def get_left_elbow_yaw(kinect_pos, shoulder_roll=None, shoulder_pitch=None, world=None):
    if world is None:
        world = get_robot_world(kinect_pos)
    if shoulder_roll is None:
        shoulder_roll = get_left_shoulder_roll(kinect_pos, world)
    if shoulder_pitch is None:
        shoulder_pitch = get_left_shoulder_pitch(kinect_pos, world)
    shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_LEFT]]
    elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_LEFT]]
    wrist = kinect_pos[kinecthandler.joints_map[joints.WRIST_LEFT]]
    pitch_matrix = np.matrix([[1, 0, 0],
                              [0, np.cos(shoulder_pitch), -np.sin(shoulder_pitch)],
                              [0, np.sin(shoulder_pitch), np.cos(shoulder_pitch)]])
    roll_matrix = np.matrix([[np.cos(shoulder_roll), 0, np.sin(shoulder_roll)],
                             [0, 1, 0],
                             [-np.sin(shoulder_roll), 0, np.cos(shoulder_roll)]])
    transform = world[0] * pitch_matrix * roll_matrix
    elbow_shoulder = utils.get_vector(shoulder, elbow, transform=transform)
    elbow_shoulder = utils.normalize(elbow_shoulder)
    modified_elbow = [elbow[0], elbow[1] + 2, elbow[2]]
    elbow_vertical = utils.get_vector(modified_elbow, elbow, transform=transform)
    elbow_wrist = utils.get_vector(wrist, elbow, transform=transform)
    elbow_wrist = utils.normalize([elbow_wrist[0], elbow_wrist[1]])
    cross_arm = np.cross(elbow_vertical, elbow_shoulder)
    cross_arm = utils.normalize([cross_arm[0], cross_arm[1]])
    # cross_arm = np.array([cross_arm[0], cross_arm[1]])
    # elbow_wrist = np.array([elbow_wrist[0], elbow_wrist[1]])
    sign = -1
    if elbow_wrist[1] > 0:
        sign = 1
    dot = utils.normalized_dot(elbow_wrist, cross_arm)
    return sign * (np.arccos(dot))
Ejemplo n.º 3
0
def get_left_knee_pitch(kinect_pos, world=None):
    if world is None:
        world = get_robot_world(kinect_pos)
    hip = kinect_pos[kinecthandler.joints_map[joints.HIP_LEFT]]
    knee = kinect_pos[kinecthandler.joints_map[joints.KNEE_LEFT]]
    ankle = kinect_pos[kinecthandler.joints_map[joints.ANKLE_LEFT]]
    hip_knee = utils.get_vector(knee, hip, transform=world[0])
    knee_ankle = utils.get_vector(ankle, knee, transform=world[0])
    res = np.arccos(utils.normalized_dot(hip_knee, knee_ankle))
    res = min(np.pi/2., res)
    return res
Ejemplo n.º 4
0
def get_left_elbow_roll(kinect_pos, world=None):
    if world is None:
        world = get_robot_world(kinect_pos)
    shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_LEFT]]
    elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_LEFT]]
    wrist = kinect_pos[kinecthandler.joints_map[joints.WRIST_LEFT]]
    shoulder_elbow = utils.get_vector(elbow, shoulder, transform=world[0])
    elbow_wrist = utils.get_vector(wrist, elbow, transform=world[0])
    res = -np.arccos(utils.normalized_dot(shoulder_elbow, elbow_wrist))
    res = min(res, -0.069)
    res = max(res, -1.483)
    return res
Ejemplo n.º 5
0
def get_left_ankle_pitch(kinect_pos, world=None):
    # TODO : Test
    if world is None:
        world = get_robot_world(kinect_pos)
    knee = kinect_pos[kinecthandler.joints_map[joints.KNEE_LEFT]]
    ankle = kinect_pos[kinecthandler.joints_map[joints.ANKLE_LEFT]]
    foot = kinect_pos[kinecthandler.joints_map[joints.FOOT_LEFT]]
    ankle_foot = utils.get_vector(foot, ankle, transform=world[0])
    ankle_knee = utils.get_vector(knee, ankle, transform=world[0])
    res = -1*(np.pi/2 - np.arccos(utils.normalized_dot(ankle_foot, ankle_knee)))
    res = max(-np.pi/4., res)
    res = min(0, res)
    return res
Ejemplo n.º 6
0
def get_muse_vectors(source_texts: List, target_texts: List,
                     source_model_path: str, target_model_path: str):
    source_model = KeyedVectors.load_word2vec_format(source_model_path,
                                                     encoding='utf-8')
    target_model = KeyedVectors.load_word2vec_format(target_model_path,
                                                     encoding='utf-8')
    source_vecs = [
        get_vector(text.lower().split(), source_model) for text in source_texts
    ]
    target_vecs = [
        get_vector(text.lower().split(), target_model) for text in target_texts
    ]
    return source_vecs, target_vecs
Ejemplo n.º 7
0
def get_hip_pitch(kinect_pos, ankle_pitch=None, world=None):
    # TODO : Test
    if world is None:
        world = get_robot_world(kinect_pos)
    if ankle_pitch is None:
        ankle_pitch = get_right_ankle_pitch(kinect_pos, world=world)
    spine_base = kinect_pos[kinecthandler.joints_map[joints.SPINE_BASE]]
    spine_shoulder = kinect_pos[kinecthandler.joints_map[joints.SPINE_SHOULDER]]
    modified_spine_base = [spine_base[0], spine_base[1] - 1, spine_base[2]]
    spine = utils.get_vector(spine_shoulder, spine_base, transform=world[0])
    vertical_spine = utils.get_vector(spine_base, modified_spine_base, transform=world[0])
    angle = -np.arccos(utils.normalized_dot(vertical_spine, spine))
    res = angle + ankle_pitch
    res = min(res, 0.34)
    res = max(res, -1.39)
    return res
Ejemplo n.º 8
0
def get_head_pitch(kinect_pos, world=None, must_filter=True):
    if world is None:
        world = get_robot_world(kinect_pos)
    head = kinect_pos[kinecthandler.joints_map[joints.HEAD]]
    neck = kinect_pos[kinecthandler.joints_map[joints.NECK]]
    modified_neck = [neck[0], neck[1] - 1, neck[2]]
    neck_head = utils.get_vector(head, neck, transform=world[0])
    modified_neck_head = utils.get_vector(head, modified_neck, transform=world[0])
    res = np.arccos(utils.normalized_dot(neck_head, modified_neck_head))
    sign = 1
    if head[2] > neck[2]:
        sign = -1
    res *= sign
    res = max(res, -0.66)
    res = min(res, 0.5)
    if must_filter:
        res = utils.value_filter("h_pitch", res)
    return res
Ejemplo n.º 9
0
def get_left_shoulder_roll(kinect_pos, world=None):
    if world is None:
        world = get_robot_world(kinect_pos)
    cross = np.cross(world[1][1], world[1][2])
    shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_LEFT]]
    elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_LEFT]]
    shoulder_elbow = utils.get_vector(elbow, shoulder, transform=world[0])
    res = -1 * ((np.pi / 2.) - np.arccos(utils.normalized_dot(shoulder_elbow, cross)))
    res = max(res, -0.085)
    res = min(res, 1.13)
    return res
Ejemplo n.º 10
0
def get_robot_world(kinect_pos):
    hip_right = kinect_pos[kinecthandler.joints_map[joints.HIP_RIGHT]]
    hip_left = kinect_pos[kinecthandler.joints_map[joints.HIP_LEFT]]
    spine_shoulder = kinect_pos[kinecthandler.joints_map[joints.SPINE_SHOULDER]]
    hip_vector = utils.get_vector(hip_right, hip_left)
    spine_shoulder_to_hip = utils.get_vector(hip_right, spine_shoulder)
    z = utils.normalized_cross(hip_vector, spine_shoulder_to_hip)
    x = utils.normalize(hip_vector)
    y = np.cross(z, x)
    z_0 = np.array([0, 0, 1])
    y_0 = np.array([0, 1, 0])
    x_0 = np.array([1, 0, 0])

    x1 = utils.normalized_dot(x, x_0)
    x2 = utils.normalized_dot(x, y_0)
    x3 = utils.normalized_dot(x, z_0)
    y1 = utils.normalized_dot(y, x_0)
    y2 = utils.normalized_dot(y, y_0)
    y3 = utils.normalized_dot(y, z_0)
    z1 = utils.normalized_dot(z, x_0)
    z2 = utils.normalized_dot(z, y_0)
    z3 = utils.normalized_dot(z, z_0)
    A = np.matrix([[x1, x2, x3], [y1, y2, y3], [z1, z2, z3]])
    return [A, np.array([x, y, z])]
import tensorflow as tf
import numpy as np
import utils
from capsNet import CapsNet

if __name__ == "__main__":
    vec, label, map_label = utils.get_vector('train', 12, None)
    vec = np.array(vec).astype(np.float)
    vec_test, label_test, _ = utils.get_vector('test', 12, map_label)
    vec_test = np.array(vec_test).astype(np.float)
    vec = np.array(vec.reshape(-1, 12, 25, 1)).astype(np.float32)
    vec_test = vec_test.reshape(-1, 12, 25, 1)

    caps_model = CapsNet()
    earlyStopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss',
                                                     patience=8)
    reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss',
                                                     factor=0.2,
                                                     patience=3,
                                                     min_lr=1e-5)
    #tensorBoard = tf.keras.callbacks.TensorBoard(log_dir='logs')
    caps_model.compile(optimizer=tf.keras.optimizers.Adam(1e-3),
                       loss=caps_model.margin_loss,
                       metrics=['accuracy'])
    caps_model.fit(vec,
                   label,
                   batch_size=32,
                   epochs=50,
                   validation_data=(vec_test, label_test),
                   callbacks=[earlyStopping, reduce_lr])
Ejemplo n.º 12
0
def get_word_vecs(line, glove):
    l = []
    for word in line.split():
        l.append(get_vector(word.lower(), glove))
    return l
Ejemplo n.º 13
0
def get_bets_olimp(bets_olimp,
                   match_id,
                   proxies_olimp,
                   proxy,
                   time_out,
                   pair_mathes,
                   place,
                   n=0):
    global sport_list
    key_id = str(match_id)

    match_exists = False
    for pair_match in pair_mathes:
        if match_id in pair_match:
            match_exists = True
            minute_complite = if_exists(sport_list, 'name', pair_match[2],
                                        'min')
            my_sport_name = pair_match[2]
    if match_exists is False:
        err_str = 'Олимп: матч ' + str(
            match_id
        ) + ' не найден в спике активных, поток get_bets_olimp завершен.'
        raise OlimpMatchСompleted(err_str)
    resp_temp = ''
    try:
        res, time_resp = get_match_olimp(match_id, proxies_olimp, proxy,
                                         time_out, pair_mathes, place)
        resp = res.json().get('data')
        if res.status_code == 404:
            # res: {"error":{"err_code":404,"err_desc":"Прием ставок приостановлен"},"data":null}, status_code: 404
            # prnts('Олимп ' + key_id + '. Получен пустой ответ при запросе матча, ставим math_block=True, time_resp: ' + str(time_resp) + ', res: ' + str(res.text) + ', status_code: ' + str(res.status_code))
            math_block = True
        math_block = False
        resp_temp = str(resp)
        time_start_proc = time.time()
        if not math_block:
            if place == 'pre':
                if resp:
                    math_block = resp.get('ms', False)
                else:
                    math_block = False
            else:
                math_block = True if not resp or str(resp.get(
                    'ms', '1')) != '2' or resp.get('error', {
                        'err_code': 0
                    }).get('err_code') == 404 else False
                # 1 - block, 2 - available
                if str(resp.get('ms', '')) == '4':
                    err_str = 'Олимп: матч, ' + my_sport_name + ' - ' + str(
                        match_id) + ' завершен, т.к. ms=4'
                    raise OlimpMatchСompleted(err_str)

        if not math_block:
            timer = resp.get('t', '')
            minute = -1  # (2:0) Перерыв
            try:
                minute = int(
                    re.findall('\d{1,2}\\"', resp.get('sc',
                                                      ''))[0].replace('"', ''))
            except:
                pass

            if minute_complite:
                if minute >= (int(minute_complite) - 2):
                    err_str = 'Олимп: матч, ' + my_sport_name + ' - ' + str(
                        match_id) + ' завершен, т.к. ' + str(
                            minute_complite - 2) + ' минут прошло.'
                    raise OlimpMatchСompleted(err_str)
            skId = resp.get('sport_id')
            skName = resp.get('sn')
            sport_name = resp.get('cn')
            champid = sport_name  # NOT FOUND
            name = resp.get('n')
            # if name == 'Ювентус - Удинезе':
            #     print('resp: ' + str(resp))
            start_time = int(resp.get('t', 0))
            start_after_min = math.floor((start_time - int(time.time())) / 60)
            if place == 'pre':
                if start_after_min:
                    if start_after_min <= 5:
                        err_str = 'Олимп: pre матч, ' + skName + ' - ' + str(
                            match_id) + ' завершен, т.к. ' + str(
                                start_after_min) + ' минут до начала матча.'
                        raise OlimpMatchСompleted(err_str)
            if not start_after_min:
                start_after_min = 0
            if start_after_min <= -120:
                err_str = 'Олимп: матч, ' + skName + ' - ' + str(
                    match_id) + ' завершен, т.к. прошло ' + str(
                        abs(start_after_min)) + ' минут от начала матча.'
                raise OlimpMatchСompleted(err_str)
            score = ''
            sc1 = 0
            sc2 = 0
            try:
                score = resp.get('sc', '0:0').split(' ')[0]
                try:
                    sc1 = int(score.split(':')[0])
                except Exception as e:
                    pass
                    # prnts('err util_olimp sc1: ' + str(e))
                try:
                    sc2 = int(score.split(':')[1])
                except Exception as e:
                    pass
                    # prnts('err util_olimp sc2: ' + str(e))
            except:
                if DEBUG:
                    prnts('err util_olimp error split: ' +
                          str(resp.get('sc', '0:0')))

            try:
                bets_olimp[key_id].update({
                    'sport_id': skId,
                    'place': place,
                    'sport_name': skName,
                    'league': sport_name,
                    'liga_id': champid,
                    'name': name,
                    'score': score,
                    'time_start': timer,
                    'start_after_min': start_after_min,
                    'start_time': start_time,
                    'time_req': round(time.time())
                })
            except:
                bets_olimp[key_id] = {
                    'bk_name': 'olimp',
                    'sport_id': skId,
                    'place': place,
                    'sport_name': skName,
                    'league': sport_name,
                    'liga_id': champid,
                    'name': name,
                    'score': score,
                    'time_start': timer,
                    'start_after_min': start_after_min,
                    'start_time': start_time,
                    'time_req': round(time.time()),
                    # 'time_change_total': round(time.time()),
                    # 'avg_change_total': [],
                    'kofs': {}
                }

            for c in resp.get('it', []):
                # del: угловые
                group_kof = c.get('n', '').replace(' ', '').lower()
                group_kof = group_kof.replace('азиатские', '')
                if group_kof in [
                        'основные', 'голы', 'инд.тотал', 'доп.тотал',
                        'исходыпотаймам', 'победасучетомфоры', 'форы',
                        'тоталы', 'инд.тоталы'
                ]:
                    for d in c.get('i', []):
                        if 'обе забьют: '.lower() \
                                in d.get('n', '').lower() \
                                or 'забьет: '.lower() \
                                in d.get('n', '').lower() \
                                or 'никто не забьет: '.lower() \
                                in d.get('n', '').lower() \
                                or 'победа '.lower() \
                                in d.get('n', '').lower() \
                                or d.get('n', '').lower().endswith(' бол') \
                                or d.get('n', '').lower().endswith(' мен') \
                                or 'с форой'.lower() \
                                in d.get('n', '').lower() \
                                or 'первая не проиграет'.lower() \
                                in d.get('n', '').lower() \
                                or 'вторая не проиграет'.lower() \
                                in d.get('n', '').lower() \
                                or 'ничьей не будет' \
                                in d.get('n', '').lower() \
                                or 'ничья'.lower() \
                                in d.get('n', '').lower() \
                                or 'форы' in group_kof:
                            c1 = str(resp.get('c1', ''))
                            c2 = str(resp.get('c2', ''))
                            if 'форы' in group_kof:
                                key_r = d.get('n', '').replace(
                                    c1, 'П1сфорой').replace(c2, 'П2сфорой')
                                key_r = key_r.replace(' ', '')
                            else:
                                key_r = d.get('n', '').replace(c1,
                                                               'Т1').replace(
                                                                   c2, 'Т2')
                            coef = str([
                                abbreviations[c.replace(' ', '')] if c.replace(
                                    ' ', '') in abbreviations.keys() else
                                c.replace(' ', '') if '(' not in c.replace(
                                    ' ', '') else to_abb(c) for c in [key_r]
                            ][0])
                            if coef:
                                value = d.get('v', 0)
                                kof_order = bets_olimp[key_id].get(
                                    'kofs',
                                    {}).get(coef, {}).get('hist',
                                                          {}).get('order', [])
                                time_change = bets_olimp[key_id].get(
                                    'kofs', {}).get(coef,
                                                    {}).get('hist', {}).get(
                                                        'time_change',
                                                        time.time())
                                avg_change = bets_olimp[key_id].get(
                                    'kofs',
                                    {}).get(coef,
                                            {}).get('hist',
                                                    {}).get('avg_change', [])

                                try:
                                    if value != kof_order[-1]:
                                        kof_order.append(value)
                                        avg_change.append(0)
                                        time_change = time.time()
                                    elif value == kof_order[-1]:
                                        avg_change[-1] = round(time.time() -
                                                               time_change)
                                except IndexError:
                                    # firs
                                    kof_order.append(value)
                                    avg_change.append(0)
                                try:
                                    bets_olimp[key_id]['kofs'].update({
                                        coef: {
                                            'time_req': round(time.time()),
                                            'value': value,
                                            'apid': d.get('apid', ''),
                                            'factor': d.get('v', 0),
                                            'sport_id': skId,
                                            'event': match_id,
                                            'vector':
                                            get_vector(coef, sc1, sc2),
                                            'hist': {
                                                'time_change': time_change,
                                                'avg_change': avg_change,
                                                'order': kof_order
                                            }
                                        }
                                    })
                                except:
                                    pass
            # if key_id == '52495128':
            #     prnts(key_id)
            #     prnts(bets_olimp)
            #     prnts(resp)
        else:
            if bets_olimp.get(key_id):
                if DEBUG:
                    prnts(
                        'Олимп матч {}, {} заблокирован:{}'.format(
                            place, key_id, math_block), 'hide')
            else:
                if DEBUG:
                    prnts(
                        'Олимп матч {}, {} заблокирован и это первое добаление:{}'
                        .format(place, key_id, math_block), 'hide')
            if bets_olimp.get(key_id):
                bets_olimp[key_id].update({'time_req': round(time.time())})
            else:
                pass
                # prnts('Олимп, не смог обновить время time_req, т.к. матч ' + str(key_id) + ' заблокирован и это первое добавление?')

            try:
                if bets_olimp.get(key_id):
                    for j in list(bets_olimp[key_id].get('kofs', {})):
                        try:
                            kof_order = bets_olimp[key_id]['kofs'][j].get(
                                'hist', {}).get('order', [])
                            time_change = bets_olimp[key_id]['kofs'][j].get(
                                'hist', {}).get('time_change', time.time())
                            avg_change = bets_olimp[key_id]['kofs'][j].get(
                                'hist', {}).get('avg_change', [])
                            try:
                                if 0 != kof_order[-1]:
                                    kof_order.append(0)
                                    # avg_change.append(round(time.time() - time_change))
                                    avg_change.append(0)
                                    time_change = time.time()
                                elif 0 == kof_order[-1]:
                                    avg_change[-1] = round(time.time() -
                                                           time_change)
                            except IndexError:
                                # firs
                                kof_order.append(0)
                                avg_change.append(0)
                            if bets_olimp.get(key_id, {}).get('kofs',
                                                              {}).get(j):
                                bets_olimp[key_id]['kofs'][j]['value'] = 0
                                bets_olimp[key_id]['kofs'][j]['factor'] = 0
                                bets_olimp[key_id]['kofs'][j][
                                    'time_req'] = round(time.time())
                                if bets_olimp[key_id]['kofs'][j].get(
                                        'hist') is None:
                                    bets_olimp[key_id]['kofs'][j]['hist'] = {}
                                bets_olimp[key_id]['kofs'][j]['hist'][
                                    'avg_change'] = avg_change
                                bets_olimp[key_id]['kofs'][j]['hist'][
                                    'time_change'] = time_change
                                bets_olimp[key_id]['kofs'][j]['hist'][
                                    'kof_order'] = kof_order
                                if kof_order[-1]:
                                    # prnts('Олимп x, матч заблокирован, знач. выставил в 0: ' + key_id + ' ' + str(j), 'hide')
                                    prnts(
                                        'Олимп x, матч заблокирован, знач. выставил в 0: '
                                        + key_id + ' ' + str(j) +
                                        'math_block: ' + str(math_block) +
                                        ' запрос №: ' + n)
                            else:
                                pass
                                # prnts('Олимп x, матч заблокирован и это первое добавлени значение не выставляю в 0: ' + key_id + ' ' + str(j), 'hide')
                                prnts(
                                    'Олимп x, матч заблокирован и это первое добавлени: '
                                    + key_id + ' ' + str(j) + ' math_block: ' +
                                    str(math_block) + ' запрос №: ' + n)
                        except Exception as e:
                            exc_type, exc_value, exc_traceback = sys.exc_info()
                            err_str = 'error: ' + str(e) + ' (' + str(
                                repr(
                                    traceback.format_exception(
                                        exc_type, exc_value,
                                        exc_traceback))) + ')'
                            prnts(
                                'Олимп x, матч:' + key_id +
                                ' ошибка 00 при удалении старой котирофки: ' +
                                str(err_str) + ' math_block: ' +
                                str(math_block) + ' запрос №: ' + n)
                            time.sleep(5)
            except Exception as e:
                exc_type, exc_value, exc_traceback = sys.exc_info()
                err_str = 'error: ' + str(e) + ' (' + str(
                    repr(
                        traceback.format_exception(exc_type, exc_value,
                                                   exc_traceback))) + ')'
                prnts('Олимп x, матч:' + key_id +
                      ' ошибка 0 при удалении установке в 0 котирофки: ' +
                      str(err_str) + ' math_block: ' + str(math_block) +
                      ' запрос №: ' + n)
                time.sleep(5)
            return time_resp + (time.time() - time_start_proc)

        # for val in bets_olimp.get(key_id, {}).get('kofs', {}).values():
        #     time_change_kof = val.get('hist', {}).get('time_change')
        #     time_change_tot = bets_olimp.get(key_id, {}).get('time_change_total')
        #     avg_change_total = bets_olimp.get(key_id, {}).get('avg_change_total', [])
        #     if round(time_change_tot) < round(time_change_kof):
        #         avg_change_total.append(round(time_change_kof - time_change_tot))
        #         bets_olimp[key_id].update({'time_change_total': round(time_change_kof)})
        #         bets_olimp[key_id].update({'avg_change_total': avg_change_total})

        try:
            for i in list(bets_olimp):
                if str(i) == key_id:
                    for j in list(bets_olimp[i].get('kofs', {})):
                        hide_time = 4
                        if bets_olimp[i].get('place') == 'pre':
                            hide_time = TIMEOUT_PRE_MATCH + hide_time
                        if round(
                                float(time.time() -
                                      float(bets_olimp[i]['kofs'][j].get(
                                          'time_req', 0)))
                        ) > hide_time and bets_olimp[i]['kofs'][j].get(
                                'value', 0) > 0:
                            try:
                                bets_olimp[i]['kofs'][j]['value'] = 0
                                bets_olimp[i]['kofs'][j]['factor'] = 0
                                bets_olimp[i]['kofs'][j]['time_req'] = round(
                                    time.time())
                                if DEBUG:
                                    prnts('2: ' + i + ' ' + j +
                                          ' - выставил в 0')
                                    prnts(
                                        'Олимп, матч:' + key_id +
                                        ' данные по котировке из БК не получены более '
                                        + str(hide_time) +
                                        ' сек., знач. выставил в 0: ' +
                                        str(j) + ' ' + str(i) + ' запрос №: ' +
                                        n)
                            except Exception as e:
                                exc_type, exc_value, exc_traceback = sys.exc_info(
                                )
                                err_str = 'error: ' + str(e) + ' (' + str(
                                    repr(
                                        traceback.format_exception(
                                            exc_type, exc_value,
                                            exc_traceback))) + ')'
                                prnts(
                                    'Олимп, матч:' + key_id +
                                    ' ошибка 1 при удалении старой котирофки: '
                                    + str(err_str) + ' запрос №: ' + n)
                                time.sleep(5)
        except Exception as e:
            exc_type, exc_value, exc_traceback = sys.exc_info()
            err_str = 'error: ' + str(e) + ' (' + str(
                repr(
                    traceback.format_exception(exc_type, exc_value,
                                               exc_traceback))) + ')'
            prnts('Олимп, матч:' + key_id +
                  ' ошибка 2 при удалении старой котирофки: ' + str(err_str) +
                  ' запрос №: ' + n)
            time.sleep(5)
        return time_resp + (time.time() - time_start_proc)
    except OlimpMatchСompleted as e:
        if bets_olimp.get(key_id):
            bets_olimp.pop(key_id)
        raise OlimpMatchСompleted('4 ' + str(e))
    except Exception as e:
        exc_type, exc_value, exc_traceback = sys.exc_info()
        prnts('Олимп, матч: ' + key_id + ' фатальная ошибка:' + str(
            repr(traceback.format_exception(
                exc_type, exc_value, exc_traceback))) + ' запрос №: ' + n +
              '\ndata:' + str(resp_temp))
        # if bets_olimp.get(key_id):
        #     bets_olimp.pop(key_id)
        raise ValueError(e)
Ejemplo n.º 14
0
def getMostSimilar(ID, articles): # What info do these articles contain?
	articles = sorted(articles, 
        key = lambda x: getSimilarity(getWeights(ID), utils.get_vector(x)))
Ejemplo n.º 15
0
def userUpdate(ID, article):
    vect = np.array(utils.get_vector(article))
    IDvect = np.array(getWeights(ID))
    newVect = vect + IDvect
    updateClient(ID, newVect)
Ejemplo n.º 16
0
def get_suggested_responses(query, model_name, model, pro_vecs, con_vecs, texts_pro, texts_con, responses, lowercase_to_uppercase, num_responses=5, classify_responses=True, responses_to_response=False, is_indexed=False, **kwargs):
	pre_path = ""#"python/"
	# import time
	# start = time.time()
	config_path = pre_path + "kialo_config.json"
	most_similar, stances = [], []
	distances_pro, distances_con, most_similar_pro, most_similar_con = [], [], [], []
	query_text = query.lower()
	query_vec = []
	
	if model_name == 'tfidf':
		texts_pro.append(query_text)
		texts_con.append(query_text)
		distances_pro, most_similar_pro = utils.get_tfidf_sim(texts_pro, num_responses, query_text)
		distances_con, most_similar_con = utils.get_tfidf_sim(texts_con, num_responses, query_text)
	else:
		if model_name == 'sbert':
			query_vec = utils.get_sbert_vec(model, query_text)
		else:
			query_vec = utils.get_vector(model, query_text)
		if model_name == 'sbert' and is_indexed:
			query_vec /= np.linalg.norm(query_vec, keepdims=True)
			distances_pro, most_similar_pro = faiss_index.search(pro_vecs, query_vec, texts_pro, num_responses)
			distances_con, most_similar_con = faiss_index.search(con_vecs, query_vec, texts_con, num_responses)
		else:
			if model_name == 'sbert' and False: #add check encoder check instead of false
				distances_pro, most_similar_pro = utils.get_sbert_mostsimilar_crossencoder(pro_vecs, query_text, query_vec, num_responses)
				distances_con, most_similar_con = utils.get_sbert_mostsimilar_crossencoder(con_vecs, query_text, query_vec, num_responses)
				print(distances_pro)
			else:
				distances_pro, most_similar_pro = utils.most_sim_cos(pro_vecs, query_vec, num_responses)
				distances_con, most_similar_con = utils.most_sim_cos(con_vecs, query_vec, num_responses)
	stances = ["pro"] * len(most_similar_pro)
	stances.extend(["con"] * len(most_similar_con))
	most_similar = most_similar_pro
	most_similar.extend(most_similar_con) 
	distances = distances_pro
	distances.extend(distances_con)
	if not classify_responses:
		distances, most_similar, stances = zip(*sorted(zip(distances, most_similar, stances), reverse=True))
		most_similar = most_similar[:num_responses]
		stances = stances[:num_responses]

	if responses_to_response:
		stances = []
		most_similar_response = []
		for claim in most_similar:
			if claim in responses:
				for response in responses[claim]:
					r = response.lower()
					most_similar_response.append(r)
					if r in texts_pro:
						stances.append('pro')
					else:
						stances.append('con')
		if classify_responses:
			most_similar = []
			temp_stances = []
			pro_count, con_count = 0, 0
			for i, claim in enumerate(most_similar_response):
				if stances[i] == 'pro' and pro_count < num_responses:
					most_similar.append(claim)
					pro_count += 1
					temp_stances.append('pro')
				elif stances[i] == 'con' and con_count < num_responses:
					most_similar.append(claim)
					con_count += 1
					temp_stances.append('con')
			stances = temp_stances
		else:
			most_similar = most_similar_response[:num_responses]
			stances = stances[:num_responses]
	
	#format return values
	return_array = []
	for i, text in enumerate(most_similar):
		return_array.append({"text": lowercase_to_uppercase[text], "stance": stances[i]})

	#format of returned value
	# {
	# 	"suggested_responses": [
	# 		{
	# 			"text": text1,
	# 			"stance": stance1
	# 		},
	# 		{
	# 			"text": text2,
	# 			"stance": stance2
	# 		}
	# 	]
	# }
	return json.dumps({"suggested_responses": return_array})
Ejemplo n.º 17
0
def get_fonbet_info(match_id, factor_id, param, bet_type=None):
    dop_stat = dict()
    sc1 = None
    sc2 = None

    prnt('get_fonbet_info: match_id:{}, factor_id:{}, param:{}, bet_type:{}'.
         format(match_id, factor_id, param, bet_type))

    header = copy.deepcopy(fb_headers)
    url = url_fonbet + "/line/eventView?eventId=" + str(match_id) + "&lang=ru"
    prnt('FORK_RECHECK.PY: get_fonbet_info rq: ' + url + ' ' + str(header),
         'hide')
    resp = requests_retry_session().get(url,
                                        headers=header,
                                        timeout=10,
                                        verify=False)
    prnt('FORK_RECHECK.PY: get_fonbet_info rs: ' + str(resp.text), 'hide')
    res = resp.json()

    result = res.get('result')

    if result == "error":
        prnt('fonbet err : ' + str(res))
        return 0, '0:0', round(resp.elapsed.total_seconds(), 2), {}

    for event in res.get("events"):
        if event.get('id') == match_id:
            sc = event.get('score', '0:0').replace('-', ':')
            period = 1
            time_break_fonbet = False
            if re.match('\(\d+:\d+\)', event.get('scoreComment', '').replace('-', ':').replace(' ', '')) and \
                    str(event.get('timer', '')) == '45:00' and \
                    event.get('timerSeconds', 0) == 45.0:
                time_break_fonbet = True
                period = 2
            elif re.match('\(\d+:\d+\)', event.get('scoreComment', '').replace('-', ':').replace(' ', '')) and \
                    event.get('timerSeconds', 0) / 60 > 45.0:
                period = 2
            try:
                sc1 = int(sc.split(':')[0])
            except:
                pass
            try:
                sc2 = int(sc.split(':')[1])
            except:
                pass

            dop_stat = {
                'cur_score':
                sc,
                'sc1':
                sc1,
                'sc2':
                sc2,
                '1st_half_score':
                event.get('scoreComment'),
                'minutes':
                round(event.get('timerSeconds', 0) / 60) +
                (event.get('timerSeconds', 0) % 60 / 100),
                'timer':
                event.get('timer'),
                'period':
                period,
                'timebreak':
                time_break_fonbet
            }
            if bet_type:
                dop_stat.update({'vector': get_vector(bet_type, sc1, sc2)})

            for cat in event.get('subcategories'):
                for kof in cat.get('quotes'):
                    if kof.get('factorId') == factor_id:

                        if param:
                            err_str = None
                            if kof.get('pValue') != param:
                                prnt(
                                    'Изменилась тотал ставки, param не совпадает: '
                                    + 'new: ' + str(kof.get('pValue')) +
                                    ', old: ' + str(param))

                                if bet_type:
                                    prnt('поиск нового id тотала: ' + bet_type)
                                    new_wager = get_new_bets_fonbet(match_id,
                                                                    proxies={})
                                    new_wager = new_wager.get(
                                        str(match_id),
                                        {}).get('kofs', {}).get(bet_type)
                                    if new_wager:
                                        prnt('Тотал найден: ' + str(new_wager))
                                        k = new_wager.get('value', 0)
                                        sc = new_wager.get('score',
                                                           '0:0').replace(
                                                               '-', ':')
                                        return k, sc, round(
                                            resp.elapsed.total_seconds(),
                                            2), dop_stat
                                    else:
                                        err_str = 'Тотал не найден: ' + str(
                                            new_wager)
                                else:
                                    err_str = 'Тип ставки, например 1ТМ(2.5) - не задан: bet_type:' + bet_type
                            if err_str:
                                prnt(err_str)
                                raise BetIsLost(err_str)
                        k = kof.get('value', 0)
                        prnt('fonbet kof is blocked ' +
                             str(kof.get('blocked', 'None')))
                        if kof.get('blocked'):
                            prnt('fonbet kof is blocked ' + str(kof))
                            k = 0
                        prnt('fonbet score: ' + sc)
                        dop_stat.update({'val': k})
                        prnt('FORK_RECHECK.PY: get_olimp_info end work',
                             'hide')
                        return k, sc, round(resp.elapsed.total_seconds(),
                                            2), dop_stat
Ejemplo n.º 18
0
def get_bets_fonbet(bets_fonbet, match_id, proxies_fonbet, proxy, time_out,
                    pair_mathes, arr_fonbet_top_kofs, place):
    global VICTS, TTO, TTU, TT1O, TT1U, TT2O, TT2U, BASE_LINE, FORA
    global sport_list

    match_exists = False
    for pair_match in pair_mathes:
        if match_id in pair_match:
            match_exists = True
    if match_exists is False:
        err_str = 'Фонбет: матч ' + str(
            match_id
        ) + ' не найден в спике активных, поток get_bets_fonbet завершен.'
        raise FonbetMatchСompleted(err_str)

    key_id = str(match_id)
    try:
        resp, time_resp = get_match_fonbet(match_id, proxies_fonbet, proxy,
                                           time_out, pair_mathes)
        # if key_id == '18967969':
        #     print(resp)
        time_start_proc = time.time()
        TT = []
        for bet in [TTO, TTU, TT1O, TT1U, TT2O, TT2U, FORA]:
            TT.extend(bet)

        for event in resp.get("events"):
            if event.get('parentId') == 0:
                score = event.get('score', '0:0').replace('-', ':')
                sc1 = 0
                sc2 = 0
                try:
                    scs = re.findall('[0-9]:[0-9]', score)[0]
                    try:
                        sc1 = int(scs.split(':')[0])
                    except Exception as e:
                        prnts('err util_fonbet sc1: ' + str(match_id) +
                              ' score=' + str(score) + ' ' + str(e))
                    try:
                        sc2 = int(scs.split(':')[1])
                    except Exception as e:
                        prnts('err util_fonbet sc2: ' + str(match_id) +
                              ' score=' + str(score) + ' ' + str(e))
                except Exception as e:
                    prnts('err util_fonbet scs: ' + str(match_id) + ' score=' +
                          str(score) + ' ' + str(e))

                timer = event.get('timer', '00:00')
                minute = event.get('timerSeconds', 0) / 60

                skId = event.get('skId')
                liga_id = event.get('sportId')
                skName = event.get('skName')

                minute_complite = if_exists(sport_list, 'fonbet', skId, 'min')
                if minute_complite:
                    if minute >= (minute_complite - 2):
                        err_str = 'Фонбет: матч, ' + skName + ' - ' + str(
                            match_id) + ' завершен, т.к. ' + str(
                                minute_complite - 2) + ' минут прошло.'
                        raise FonbetMatchСompleted(err_str)

                sport_name = event.get('sportName')
                name = event.get('name')
                # print('name:' + str(name))
                # if name == 'SKA-1946 – HK Riga':
                #     import json
                #     print(json.dumps(event, ensure_ascii=False))
                priority = event.get('priority')
                score_1st = event.get('scoreComment', '').replace('-', ':')
                start_time = int(event.get('startTimeTimestamp', 0))
                start_after_min = math.floor(
                    (start_time - int(time.time())) / 60)
                # start_after_min = event.get('time')
                # if DEBUG:
                #     prnts('key_id: {}, start_after_min_cal: {}, start_after_min:{}'.format(key_id, start_after_min_cal, start_after_min))
                if place == 'pre':
                    if start_after_min:
                        if start_after_min <= 5:
                            err_str = 'Фонбет: pre матч, ' + skName + ' - ' + str(
                                match_id) + ' завершен, т.к. ' + str(
                                    start_after_min
                                ) + ' минут до начала матча.'
                            raise FonbetMatchСompleted(err_str)
                if not start_after_min:
                    start_after_min = 0
                if start_after_min <= -120:
                    err_str = 'Фонбет: матч, ' + skName + ' - ' + str(
                        match_id) + ' завершен, т.к. прошло ' + str(
                            abs(start_after_min)) + ' минут от начала матча.'
                    raise FonbetMatchСompleted(err_str)
                # place_in = event.get('place')
                if event.get('parentId'
                             ) == 0 or 'st half' in name or 'nd half' in name:
                    if event.get('parentId') == 0:
                        try:
                            bets_fonbet[key_id].update({
                                'sport_id':
                                skId,
                                'liga_id':
                                liga_id,
                                'place':
                                place,
                                'sport_name':
                                skName,
                                'league':
                                sport_name,
                                'name':
                                name,
                                'priority':
                                priority,
                                'score':
                                score,
                                'score_1st':
                                score_1st,
                                'time':
                                timer,
                                'minute':
                                minute,
                                'start_time':
                                start_time,
                                'start_after_min':
                                start_after_min,
                                'time_req':
                                round(time.time())
                            })
                        except Exception as e:
                            bets_fonbet[key_id] = {
                                'bk_name': 'fonbet',
                                'sport_id': skId,
                                'liga_id': liga_id,
                                'place': place,
                                'sport_name': skName,
                                'league': sport_name,
                                'name': name,
                                'priority': priority,
                                'score': score,
                                'score_1st': score_1st,
                                'time': timer,
                                'minute': minute,
                                'start_time': start_time,
                                'start_after_min': start_after_min,
                                'time_req': round(time.time()),
                                # 'time_change_total': round(time.time()),
                                # 'avg_change_total': [],
                                'kofs': {}
                            }

                    half = ''
                    if 'st half' in name or 'nd half' in name:
                        half = name.replace('st half',
                                            '').replace('nd half', '')

                    for cat in event.get('subcategories', {}):
                        cat_name = cat.get('name')
                        cat_name_list = [
                            '1X2 (90 min)', '1X2', 'Goal - no goal', 'Total',
                            'Totals', 'Team Totals-1', 'Team Totals-2', 'Hcap'
                        ]
                        if place == 'pre':
                            cat_name_list.append('By games')
                        if cat_name in cat_name_list:
                            for kof in cat.get('quotes'):

                                factorId = str(kof.get('factorId'))
                                pValue = kof.get('pValue', '')
                                p = kof.get('p', '').replace('+', '')

                                kof_is_block = kof.get('blocked', False)
                                if kof_is_block:
                                    value = 0
                                else:
                                    value = kof.get('value', 0)

                                for vct in VICTS:
                                    coef = half + str(vct[0])
                                    if str(vct[1]) == factorId:

                                        kof_order = bets_fonbet[key_id].get(
                                            'kofs', {}).get(coef, {}).get(
                                                'hist', {}).get('order', [])
                                        time_change = bets_fonbet[key_id].get(
                                            'kofs',
                                            {}).get(coef,
                                                    {}).get('hist', {}).get(
                                                        'time_change',
                                                        time.time())
                                        avg_change = bets_fonbet[key_id].get(
                                            'kofs', {}).get(coef, {}).get(
                                                'hist',
                                                {}).get('avg_change', [])

                                        try:
                                            if value != kof_order[-1]:
                                                kof_order.append(value)
                                                avg_change.append(0)
                                                time_change = time.time()
                                            elif value == kof_order[-1]:
                                                avg_change[-1] = round(
                                                    time.time() - time_change)
                                        except IndexError:
                                            # firs
                                            kof_order.append(value)
                                            avg_change.append(0)

                                        is_hot = False
                                        if int(factorId
                                               ) in arr_fonbet_top_kofs.get(
                                                   key_id, []):
                                            is_hot = True

                                        is_base_line = False
                                        if int(factorId) in BASE_LINE:
                                            is_base_line = True

                                        bets_fonbet[key_id]['kofs'].update({
                                            coef: {
                                                'time_req':
                                                round(time.time()),
                                                'event':
                                                event.get('id'),
                                                'liga_id':
                                                liga_id,
                                                'value':
                                                value,
                                                'param':
                                                '',
                                                'factor':
                                                factorId,
                                                'base_line':
                                                is_base_line,
                                                'score':
                                                score,
                                                'vector':
                                                get_vector(coef, sc1, sc2),
                                                'is_hot':
                                                is_hot,
                                                'hist': {
                                                    'time_change': time_change,
                                                    'avg_change': avg_change,
                                                    'order': kof_order
                                                }
                                            }
                                        })
                                        # if is_hot:
                                        #     print(bets_fonbet[key_id])

                                for stake in TT:
                                    coef = half + str(
                                        stake[0].format(p))  # + num_team
                                    if str(stake[1]) == factorId:

                                        kof_order = bets_fonbet[key_id].get(
                                            'kofs', {}).get(coef, {}).get(
                                                'hist', {}).get('order', [])
                                        time_change = bets_fonbet[key_id].get(
                                            'kofs',
                                            {}).get(coef,
                                                    {}).get('hist', {}).get(
                                                        'time_change',
                                                        time.time())
                                        avg_change = bets_fonbet[key_id].get(
                                            'kofs', {}).get(coef, {}).get(
                                                'hist',
                                                {}).get('avg_change', [])

                                        try:
                                            if value != kof_order[-1]:
                                                kof_order.append(value)
                                                avg_change.append(0)
                                                time_change = time.time()
                                            elif value == kof_order[-1]:
                                                avg_change[-1] = round(
                                                    time.time() - time_change)
                                        except IndexError:
                                            # firs
                                            kof_order.append(value)
                                            avg_change.append(0)

                                        is_hot = False
                                        if int(factorId
                                               ) in arr_fonbet_top_kofs.get(
                                                   key_id, []):
                                            is_hot = True

                                        bets_fonbet[key_id]['kofs'].update({
                                            coef: {
                                                'time_req':
                                                round(time.time()),
                                                'event':
                                                event.get('id'),
                                                'liga_id':
                                                liga_id,
                                                'value':
                                                value,
                                                'param':
                                                pValue,
                                                'factor':
                                                factorId,
                                                'score':
                                                score,
                                                'vector':
                                                get_vector(coef, sc1, sc2),
                                                'is_hot':
                                                is_hot,
                                                'hist': {
                                                    'time_change': time_change,
                                                    'avg_change': avg_change,
                                                    'order': kof_order
                                                }
                                            }
                                        })

        # for val in bets_fonbet.get(key_id, {}).get('kofs', {}).values():
        #     time_change_kof = val.get('hist', {}).get('time_change')
        #     time_change_tot = bets_fonbet.get(key_id, {}).get('time_change_total')
        #     avg_change_total = bets_fonbet.get(key_id, {}).get('avg_change_total', [])
        #     if round(time_change_tot) < round(time_change_kof):
        #         avg_change_total.append(round(time_change_kof - time_change_tot))
        #         bets_fonbet[key_id].update({'time_change_total': time_change_kof})
        #         bets_fonbet[key_id].update({'avg_change_total': avg_change_total})

        try:
            for i in list(bets_fonbet):
                if str(i) == key_id:
                    for j in list(bets_fonbet[i].get('kofs', {})):
                        hide_time = 4
                        if bets_fonbet[i].get('place') == 'pre':
                            hide_time = TIMEOUT_PRE_MATCH + hide_time
                        if round(
                                float(time.time() -
                                      float(bets_fonbet[i]['kofs'][j].get(
                                          'time_req', 0)))
                        ) > hide_time and bets_fonbet[i]['kofs'][j].get(
                                'value', 0) > 0:
                            try:
                                bets_fonbet[i]['kofs'][j]['value'] = 0
                                if DEBUG:
                                    prnts(
                                        'Фонбет, данные по котировке из БК не получены более '
                                        + str(hide_time) +
                                        ' сек., знач. выставил в 0: ' +
                                        str(j) + ' ' + str(i))
                            except Exception as e:
                                exc_type, exc_value, exc_traceback = sys.exc_info(
                                )
                                err_str = 'error: ' + str(e) + ' (' + str(
                                    repr(
                                        traceback.format_exception(
                                            exc_type, exc_value,
                                            exc_traceback))) + ')'
                                prnts(
                                    'Фонбет, ошибка 1 при удалении старой котирофки: '
                                    + str(err_str))
                                time.sleep(5)
        except Exception as e:
            exc_type, exc_value, exc_traceback = sys.exc_info()
            err_str = 'error: ' + str(e) + ' (' + str(
                repr(
                    traceback.format_exception(exc_type, exc_value,
                                               exc_traceback))) + ')'
            prnts('Фонбет, ошибка 2 при удалении старой котирофки: ' +
                  str(err_str))
            time.sleep(5)
        return time_resp + (time.time() - time_start_proc)
    except FonbetMatchСompleted as e:
        if bets_fonbet.get(key_id):
            bets_fonbet.pop(key_id)
        raise FonbetMatchСompleted('4 ' + str(e))
    except Exception as e:
        prnts(e)
        # if bets_fonbet.get(key_id):
        #     bets_fonbet.pop(key_id)
        raise ValueError(e)