rdp-studio commited on
Commit
9a48f11
1 Parent(s): cb2e969

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -12
app.py CHANGED
@@ -7,6 +7,9 @@ from pytz import timezone
7
  from login import catch_qr, get_uid_key
8
  from nft import having_card_id_list, card_id_set_ava
9
 
 
 
 
10
  sid_map = {
11
  "SHN48荣耀时刻": 1,
12
  "无": 2,
@@ -71,7 +74,8 @@ def name_get_card_id(card_id_list_dict, card_list_drop_name):
71
  return {card_id: ""}
72
 
73
 
74
- def login_up_nft(info, u_verify, u_id, u_key, sid, cid, ava_image):
 
75
  if info and ava_image:
76
  u_verify, u_id, u_key, sid_num, code = verify_login(info, u_verify, u_id, u_key, sid)
77
  if u_verify:
@@ -83,40 +87,46 @@ def login_up_nft(info, u_verify, u_id, u_key, sid, cid, ava_image):
83
  ava_image.save(bytes_object, format='PNG')
84
  img_data = bytes_object.getvalue()
85
  result, code = card_id_set_ava(cid, u_key, img_data)
86
-
87
  tz = timezone('Asia/Shanghai')
88
  now = datetime.datetime.now(tz)
89
- print("提交完成:", now)
90
-
 
 
 
91
  return {verify: u_verify, uid: u_id, key: u_key, code_output: code}
92
  else:
93
  return {verify: u_verify, uid: u_id, key: u_key, code_output: code}
94
  return "请先上传头像和扫码登录"
95
 
96
 
97
- with gr.Blocks() as demo:
98
  login_info = gr.State([])
99
  card_id_list = gr.State({})
100
  card_id = gr.State("")
101
  verify = gr.State(False)
102
  key = gr.State("")
103
  uid = gr.State("")
104
- with gr.Tab("bilibili NFT自定义头像"):
 
105
  gr.Markdown("第一步:")
106
- gr.Markdown("""获取一个最低R级的数字周边,很简单,多关注官方活动。""")
107
  gr.Markdown("第二步:")
108
  with gr.Row():
109
  with gr.Column():
110
  gr.Markdown(
111
  """成功领取后,下方上传新头像,头像尽量为正方形并长宽小于1024像素,右上角画笔按钮可裁剪,
112
- 然后等待生成二维码并扫码登录进行授权(左上传头像,右扫码登录))""")
 
113
  image_ava = gr.Image(type="pil", label="上传头像")
114
  image_qr = gr.Image(type="pil", label="客户端扫码登录")
115
  gr.Markdown("第三步:")
116
  with gr.Row():
117
  gr.Markdown(
118
  """第二步完成后,选择拥有的卡组,并等待加载出所拥有的卡,再指定底卡,务必重新选择,否则无法工作
119
- 最后点击按钮<验证并提交头像>等待完成显示结果(成功可能需要时间审核)""")
 
 
120
  with gr.Row():
121
  sid_drop = gr.Dropdown(label="卡组", choices=list(sid_map.keys()), value="无")
122
  card_list_drop = gr.Dropdown(label="指定已有底卡")
@@ -124,13 +134,29 @@ with gr.Blocks() as demo:
124
  code_output = gr.Textbox(label="消息输出", placeholder="点击提交按钮才会提交")
125
 
126
  with gr.Accordion("警告"):
127
- gr.Markdown("本服务基于bilibili未公开API制作,因此稳定性无法保证,敬请谅解。")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
 
129
  image_ava.change(qr, inputs=[image_ava], outputs=[image_qr, login_info])
130
  sid_drop.change(back_card_id_list, inputs=[login_info, verify, uid, key, sid_drop],
131
  outputs=[card_id_list, verify, uid, key, card_list_drop, code_output])
132
  card_list_drop.change(name_get_card_id, inputs=[card_id_list, card_list_drop], outputs=[card_id])
133
- set_button.click(login_up_nft, inputs=[login_info, verify, uid, key, sid_drop, card_id, image_ava],
134
  outputs=[verify, uid, key, code_output])
135
 
136
- demo.launch()
 
7
  from login import catch_qr, get_uid_key
8
  from nft import having_card_id_list, card_id_set_ava
9
 
10
+ GLOBAL_STATE_SUCCESS = 0
11
+ SUCCESS_UIDS = []
12
+
13
  sid_map = {
14
  "SHN48荣耀时刻": 1,
15
  "无": 2,
 
74
  return {card_id: ""}
75
 
76
 
77
+ def login_up_nft(info, u_verify, u_id, u_key, sid, cid, ava_image, log_into_public):
78
+ global GLOBAL_STATE_SUCCESS, SUCCESS_UIDS
79
  if info and ava_image:
80
  u_verify, u_id, u_key, sid_num, code = verify_login(info, u_verify, u_id, u_key, sid)
81
  if u_verify:
 
87
  ava_image.save(bytes_object, format='PNG')
88
  img_data = bytes_object.getvalue()
89
  result, code = card_id_set_ava(cid, u_key, img_data)
 
90
  tz = timezone('Asia/Shanghai')
91
  now = datetime.datetime.now(tz)
92
+ print("提交完成: ", now)
93
+ print("UID: " + str(u_id))
94
+ if result:
95
+ GLOBAL_STATE_SUCCESS = GLOBAL_STATE_SUCCESS + 1
96
+ SUCCESS_UIDS.append({"uid": u_id, "time": now})
97
  return {verify: u_verify, uid: u_id, key: u_key, code_output: code}
98
  else:
99
  return {verify: u_verify, uid: u_id, key: u_key, code_output: code}
100
  return "请先上传头像和扫码登录"
101
 
102
 
103
+ with gr.Blocks() as application:
104
  login_info = gr.State([])
105
  card_id_list = gr.State({})
106
  card_id = gr.State("")
107
  verify = gr.State(False)
108
  key = gr.State("")
109
  uid = gr.State("")
110
+ with gr.Tab("BiliBili自定义数字头像"):
111
+ gr.Markdown("自本次更新以来,已成功为用户设置 " + str(GLOBAL_STATE_SUCCESS) + " 次头像。")
112
  gr.Markdown("第一步:")
113
+ gr.Markdown("""获取一个最低R级的数字周边,多关注官方活动。如果列表中没有最新的卡组,请耐心等待兼容更新。""")
114
  gr.Markdown("第二步:")
115
  with gr.Row():
116
  with gr.Column():
117
  gr.Markdown(
118
  """成功领取后,下方上传新头像,头像尽量为正方形并长宽小于1024像素,右上角画笔按钮可裁剪,
119
+
120
+ 然后等待生成二维码并扫码登录进行授权(左上传头像,右扫码登录))""")
121
  image_ava = gr.Image(type="pil", label="上传头像")
122
  image_qr = gr.Image(type="pil", label="客户端扫码登录")
123
  gr.Markdown("第三步:")
124
  with gr.Row():
125
  gr.Markdown(
126
  """第二步完成后,选择拥有的卡组,并等待加载出所拥有的卡,再指定底卡,务必重新选择,否则无法工作
127
+
128
+ 最后点击按钮<验证并提交头像>等待完成显示结果(成功可能需要时间审核)""")
129
+ log_into_public = gr.Checkbox(label="展示UID到下方展示区", value=True)
130
  with gr.Row():
131
  sid_drop = gr.Dropdown(label="卡组", choices=list(sid_map.keys()), value="无")
132
  card_list_drop = gr.Dropdown(label="指定已有底卡")
 
134
  code_output = gr.Textbox(label="消息输出", placeholder="点击提交按钮才会提交")
135
 
136
  with gr.Accordion("警告"):
137
+ gr.Markdown("""本服务基于bilibili未公开API制作,因此稳定性无法保证,敬请谅解。
138
+
139
+ 使用本服务后,您的bilibili UID将在此页发布,不希望展示请勾选复选框。
140
+
141
+ 本服务要求也必须登录&访问您的账号,这会导致潜在的安全问题,我们无法保证您的账号不会被盗用,但我们将竭尽全力保证您的数据和隐私安全。
142
+
143
+ 建议您在使用后及时修改密码,以退出所有设备的登陆状态,防止盗号风险。
144
+
145
+ 本服务由方糖网络科技开发。""")
146
+
147
+ with gr.Accordion("用户展示"):
148
+ text = ""
149
+ for u in SUCCESS_UIDS:
150
+ text = text + "UID: " + u["uid"] + " 于 " + u["time"] + " 成功设置数字头像。" + "\n\n"
151
+ if text == "":
152
+ text = "好像从本次更新起还没有人设置数字头像呢~"
153
+ gr.Markdown(text)
154
 
155
  image_ava.change(qr, inputs=[image_ava], outputs=[image_qr, login_info])
156
  sid_drop.change(back_card_id_list, inputs=[login_info, verify, uid, key, sid_drop],
157
  outputs=[card_id_list, verify, uid, key, card_list_drop, code_output])
158
  card_list_drop.change(name_get_card_id, inputs=[card_id_list, card_list_drop], outputs=[card_id])
159
+ set_button.click(login_up_nft, inputs=[login_info, verify, uid, key, sid_drop, card_id, image_ava, log_into_public],
160
  outputs=[verify, uid, key, code_output])
161
 
162
+ application.launch()