Spaces:
Running
Running
File size: 6,638 Bytes
c9ecd6c da52b9e c9ecd6c da52b9e c9ecd6c 4df7720 710b736 4df7720 c9ecd6c da52b9e 7a6fcc0 c9ecd6c da52b9e c9ecd6c dba73a2 c9ecd6c da52b9e c9ecd6c da52b9e c9ecd6c da52b9e 820a81f dba73a2 f97bbf2 bbdde2c dba73a2 f97bbf2 7a6fcc0 c9ecd6c 7a6fcc0 da52b9e dba73a2 c9ecd6c 7a6fcc0 5c0241b da52b9e 4df7720 e097190 da52b9e 5c0241b c9ecd6c f97bbf2 c9ecd6c da52b9e c9ecd6c |
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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
import gradio as gr
import io
import datetime
from pytz import timezone
from login import catch_qr, get_uid_key
from nft import having_card_id_list, card_id_set_ava
sid_map = {
"SHN48荣耀时刻": 1,
"无": 2,
"无2": 3,
"胶囊计划": 4,
"天官赐福": 5,
"A - AKB48TSH四周年": 6,
"B - AKB48TSH四周年": 7,
"C - AKB48TSH四周年": 8,
"D - AKB48TSH四周年": 9,
"E - AKB48TSH四周年": 10,
"F - AKB48TSH四周年": 11,
"G - AKB48TSH四周年": 12,
"H - AKB48TSH四周年": 13,
"三体动画": 14,
"百大卡": 15
}
def qr(ava_image):
if ava_image:
qr_img, info = catch_qr(ava_image)
return {image_qr: qr_img, login_info: info}
return {image_qr: None, login_info: None}
def verify_login(info, u_verify, u_id, u_key, sid):
sid_num = sid_map[sid]
code = "请刷新页面并重新扫码登录"
if not u_verify:
result, u_id, u_key, code = get_uid_key(info)
if not result:
return False, "", "", sid_num, code
else:
u_verify = True
return u_verify, u_id, u_key, sid_num, code
def back_card_id_list(info, u_verify, u_id, u_key, sid):
if info:
u_verify, u_id, u_key, sid_num, code = verify_login(info, u_verify, u_id, u_key, sid)
if u_verify:
result, had_card_id_list, code = having_card_id_list(u_id, u_key, sid_num)
if result:
print("获取卡牌列表成功")
card_name_list = list(had_card_id_list.keys())
return {verify: u_verify, uid: u_id, key: u_key, card_id_list: had_card_id_list,
card_list_drop: gr.update(choices=card_name_list, value=card_name_list[0]), code_output: code}
else:
print("获取卡牌列表失败")
return {verify: u_verify, uid: u_id, key: u_key, card_list_drop: gr.update(choices=[]),
code_output: code}
else:
return {code_output: "请先上传头像和扫码登录"}
def name_get_card_id(card_id_list_dict, card_list_drop_name):
if card_id_list_dict and card_list_drop_name:
for card_name in card_id_list_dict.keys():
if card_name == card_list_drop_name:
cid = card_id_list_dict[card_name]
return {card_id: cid}
return {card_id: ""}
def login_up_nft(info, u_verify, u_id, u_key, sid, cid, ava_image):
if info and ava_image:
u_verify, u_id, u_key, sid_num, code = verify_login(info, u_verify, u_id, u_key, sid)
if u_verify:
if not cid:
result, had_card_id_list, code = having_card_id_list(u_id, u_key, sid_num)
if had_card_id_list:
cid = list(had_card_id_list.values())[0]
bytes_object = io.BytesIO()
ava_image.save(bytes_object, format='PNG')
img_data = bytes_object.getvalue()
result, code = card_id_set_ava(cid, u_key, img_data)
tz = timezone('Asia/Shanghai')
now = datetime.datetime.now(tz)
print("提交完成:", now)
return {verify: u_verify, uid: u_id, key: u_key, code_output: code}
else:
return {verify: u_verify, uid: u_id, key: u_key, code_output: code}
return "请先上传头像和扫码登录"
with gr.Blocks() as demo:
login_info = gr.State([])
card_id_list = gr.State({})
card_id = gr.State("")
verify = gr.State(False)
key = gr.State("")
uid = gr.State("")
with gr.Tab("bili_NFT自定义头像(已被关闭,等新接口中)"):
gr.Markdown("30秒自定义钻石头像(NFT),一站式操作仅三步,无需下载安装,代码开源免费,拿我项目收费的都是骗子")
gr.Markdown("""
使用视频教程(欢迎三连):[视频地址](https://www.bilibili.com/video/BV1t8411P7HD/)
https://www.bilibili.com/video/BV1t8411P7HD/
""")
gr.Markdown("源码:https://huggingface.co/spaces/cynika/NFT_avatar")
gr.Markdown("第一步:")
gr.Markdown("""领取三体数字藏品R级别,作为自定义NFT头像底图.
[三体数字藏品领取地址](https://www.bilibili.com/h5/mall/v2/card/collection?act_id=14&hybrid_set_header=2)""")
gr.Markdown("""https://www.bilibili.com/h5/mall/v2/card/collection?act_id=14&hybrid_set_header=2""")
gr.Markdown("第二步:")
with gr.Row():
with gr.Column():
gr.Markdown(
"""确保第一步领取三体数字藏品后,上传新头像,头像尽量为正方形并长宽小于1024像素,右上角画笔按钮可裁剪,
然后等待生成二维码并扫码登录进行授权(左上传头像,右扫码登录))""")
image_ava = gr.Image(type="pil", label="上传头像")
image_qr = gr.Image(type="pil", label="b站客户端扫码登录")
gr.Markdown("第三步:")
with gr.Row():
gr.Markdown(
"""第二步完成后,选择拥有的卡组,并等待加载出所拥有的卡,再指定底卡,不选默认随机三体卡,(指定三体卡需切换一下卡组)
最后点击按钮<验证并提交头像>等待完成显示结果(成功可能需要时间审核)""")
with gr.Row():
sid_drop = gr.Dropdown(label="卡组", choices=list(sid_map.keys()), value="三体动画")
card_list_drop = gr.Dropdown(label="指定已有底卡")
set_button = gr.Button("验证并提交头像")
code_output = gr.Textbox(label="消息输出", placeholder="点击提交按钮才会提交")
with gr.Accordion("代码引用及郑重提醒"):
gr.Markdown("https://github.com/wdvipa/custom_bilibili_nft")
gr.Markdown("https://github.com/XiaoMiku01/custom_bilibili_nft")
gr.Markdown("https://github.com/cibimo/bilibiliLogin")
gr.Markdown("本软件纯属娱乐,不得用于其他用途,秋后算账别怨我!")
image_ava.change(qr, inputs=[image_ava], outputs=[image_qr, login_info])
sid_drop.change(back_card_id_list, inputs=[login_info, verify, uid, key, sid_drop],
outputs=[card_id_list, verify, uid, key, card_list_drop, code_output])
card_list_drop.change(name_get_card_id, inputs=[card_id_list, card_list_drop], outputs=[card_id])
set_button.click(login_up_nft, inputs=[login_info, verify, uid, key, sid_drop, card_id, image_ava],
outputs=[verify, uid, key, code_output])
demo.launch()
|