File size: 2,609 Bytes
c2f1466
 
 
cf7a07e
5aca742
b0d9242
 
 
a7feab8
7192ffe
da9b438
c2f1466
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c634b2
e380b26
8c634b2
c5667e0
 
8c634b2
 
 
 
 
 
 
 
 
 
 
 
 
 
e380b26
8c634b2
 
 
 
 
 
 
 
c2f1466
e380b26
 
 
 
 
 
 
 
8c634b2
 
e380b26
 
 
8c634b2
2a1d68d
8c634b2
c5667e0
 
e380b26
5be15aa
d79f686
5be15aa
8c634b2
 
c5667e0
8c634b2
c5667e0
 
8c634b2
c5667e0
5be15aa
8c634b2
 
 
 
 
 
 
 
 
 
e380b26
8c634b2
 
 
 
e380b26
 
 
 
 
 
8c634b2
 
 
 
1979413
8c634b2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import gradio as gr
from gradio import routes
from typing import List, Type

import requests, os, re, asyncio, queue
import math
import time
import datetime
import requests, json

loop = asyncio.get_event_loop()
# Monkey patch
def get_types(cls_set: List[Type], component: str):
    docset = []
    types = []
    if component == "input":
        for cls in cls_set:
            doc = inspect.getdoc(cls)
            doc_lines = doc.split("\n")
            docset.append(doc_lines[1].split(":")[-1])
            types.append(doc_lines[1].split(")")[0].split("(")[-1])
    else:
        for cls in cls_set:
            doc = inspect.getdoc(cls)
            doc_lines = doc.split("\n")
            docset.append(doc_lines[-1].split(":")[-1])
            types.append(doc_lines[-1].split(")")[0].split("(")[-1])
    return docset, types
routes.get_types = get_types

user_data = dict()
live_user = dict()
chat_history = []


def register(id, pw):
    if not id in user_data:
        user_data[id] = pw
        return "ok"
    else:
        return "fail"

def login(id, pw):
    if not id in user_data:
        return "fail"
    else:
        if user_data[id] != pw:
            return "fail"
        else:
            live_user[id] = 100
            return "ok"

def chat(name, text):
    if not name in user_data:
        return "no id"
    else:
        chat_history.append({"name": name, "text":text})
    return "ok"

def get_data(name):
    for u in live_user.keys():
        if u == name:
            live_user[u] += 20
        else:
            live_user[u] -= 1
            if live_user[u] < 0:
                del live_user[u]
    return chat_history

def get_live_user():
    return live_user

def clear_data():
    global chat_history
    chat_history = []
    return "ok"


with gr.Blocks() as demo:
    count = 0
    aa = gr.Interface(
      fn=chat,
      inputs=["text", "text"],
      outputs="text",
      description="chat",
    )
    bb = gr.Interface(
      fn=login,
      inputs=["text", "text"],
      outputs="text",
      description="login",
    )
    cc = gr.Interface(
      fn=register,
      inputs=["text", "text"],
      outputs="text",
      description="register",
    )
    dd = gr.Interface(
      fn=get_data,
      inputs=["text"],
      outputs="text",
      description="get_data",
    )
    gg = gr.Interface(
      fn=get_live_user,
      inputs=[],
      outputs="text",
      description="get_live_user",
    )
    ss = gr.Interface(
      fn=clear_data,
      inputs=[],
      outputs="text",
      description="clear_data",
    )
    demo.queue(max_size=32).launch()