| import gradio as gr | |
| import pandas as pd | |
| from datatable import (dt, f,fread, by, ifelse, update, sort,count, min, max, mean, sum, rowsum,rowmean,rowcount,shift,rbind,cbind,union) | |
| import requests | |
| import openpyxl | |
| import docx | |
| from docx import Document | |
| ''' | |
| import hashlib | |
| import tempfile | |
| from TTS.utils.manage import ModelManager | |
| from TTS.utils.synthesizer import Synthesizer | |
| def fx(x:str): | |
| hash=hashlib.md5() | |
| hash.update(x.encode(encoding='utf-8')) | |
| return hash.hexdigest() | |
| manager = ModelManager() | |
| model_path, config_path, model_item = manager.download_model("tts_models/zh-CN/baker/tacotron2-DDC-GST") | |
| synthesizer = Synthesizer( | |
| model_path, config_path, None, None, None, | |
| ) | |
| def inference(text: str): | |
| wavs = synthesizer.tts(text) | |
| with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp: | |
| synthesizer.save_wav(wavs, fp) | |
| return fp.name | |
| ''' | |
| def fx_m(s:str): | |
| headers= {"Content-Type": "application/json"} | |
| url="https://m-formatter.azurewebsites.net/api/v2" | |
| data={'code':s,'resultType':'text'} | |
| respose=requests.post(url,json=data,headers=headers) | |
| ms=respose.json() | |
| return ms['result'] | |
| def fx_dax(s:str): | |
| url="https://www.daxformatter.com/" | |
| data = {"embed":"1","l":"short","fx":s} | |
| ct=requests.post(url = url,data = data) | |
| html=ct.text | |
| s1=html.split('<div class="result">')[1] | |
| s2='<div class="result">'+s1.split('<a href')[0]+'<a href="https://pbihub.cn/users/44" target="_top"><img src="https://pbihub.cn/uploads/avatars/44_1536391253.jpg?imageView2/1/w/380/h/380" alt="万剑归宗" class="badge" width="380" height="380"></a>' | |
| return s2 | |
| def fx_datatable(code:str): | |
| namespace = {} | |
| fun = compile(code,'<string>','exec') | |
| exec(fun,namespace) | |
| return namespace['py_exe'] | |
| def xz(): | |
| x=pd.DataFrame([{'姓名':'畅心','成绩':100},{'姓名':'吹水','成绩':66}]) | |
| y=x.to_excel('statics/test.xlsx',index=False) | |
| return 'statics/test.xlsx' | |
| def fx_rq(date:str): | |
| chinese_data_dict = {'1': '一','2': '二','3': '三','4': '四','5': '五','6': '六','7': '七','8': '八','9': '九','0': '〇'} | |
| chinese_data2_dict = {'一': '十','二': '二十','三': '三十'} | |
| for c in date: | |
| if c in chinese_data_dict: | |
| date = date.replace(c, chinese_data_dict[c]) | |
| y = date.split('-')[0] | |
| m = date.split('-')[1] | |
| temp = '' | |
| if len(m) == 2: | |
| temp += chinese_data2_dict[m[0]] | |
| if m[1] != "〇": | |
| temp += m[1] | |
| m = temp | |
| d = date.split('-')[2] | |
| temp = '' | |
| if len(d) == 2: | |
| temp += chinese_data2_dict[d[0]] | |
| if d[1] != "〇": | |
| temp += d[1] | |
| d = temp | |
| date = y + '年' + m + '月' + d + '日' | |
| return date | |
| def wd(x): | |
| doc=Document(x) | |
| all_paragraphs = document.paragraphs | |
| t=[y.text for paragraph in all_paragraphs] | |
| return t | |
| ''' | |
| def fx_dd(tk:str,s:str): | |
| headers= {"Content-Type": "application/json"} | |
| url="https://oapi.dingtalk.com/robot/send?access_token="+tk | |
| data={'msgtype':'text','text':{'title': '吹牛逼',"content": s}, 'at': {'atMobiles': [], 'isAtAll': True}} | |
| response=requests.post(url,json=data,headers=headers) | |
| return response.text | |
| def dd_ocr(tk,sl,dt): | |
| headers= {"Content-Type": "application/json"} | |
| url="https://oapi.dingtalk.com/topapi/ocr/structured/recognize?access_token="+tk | |
| dc={"身份证":"idcard","增值税发票":"invoice","营业执照":"blicense","银行卡":"bank_card","车牌":"car_no","机动车发票":"car_invoice","驾驶证":"driving_license","行驶证":"vehicle_license","火车票":"train_ticket","定额发票":"quota_invoice","出租车发票":"taxi_ticket","机票行程单":"air_itinerary","审批表单":"approval_table","花名册":"roster"} | |
| data={"image_url":sl,"type":dc[dt]} | |
| response=requests.post(url,json=data,headers=headers) | |
| return response.json() | |
| def fx_dt(dc,x,y): | |
| DT=fread(dc) | |
| gr.JSON(DT.names) | |
| D_table=DT[:,sum(f[int(y-1)]),by(f[int(x-1)])] | |
| return D_table.to_pandas() | |
| ''' | |
| ''' | |
| with gr.TabItem("测试1"): | |
| with gr.Column(): | |
| text_input=gr.Textbox(placeholder='请输入测试字符串',label="请输入需要MD5加密的测试内容") | |
| text_output=gr.Textbox(label="输出",visible=False) | |
| text_input.change(fn=lambda visible: gr.update(visible=True), inputs=text_input, outputs=text_output) | |
| bb_button=gr.Button("运行") | |
| bb_button.click(fx, inputs=text_input, outputs=text_output,api_name='md5') | |
| with gr.Column(): | |
| gr.Markdown("# TTS文本字符串转语音合成训练") | |
| TTS_input=gr.Textbox(label="输入文本") | |
| TTS_button=gr.Button("合成") | |
| TTS_button.click(inference, inputs=TTS_input, outputs=gr.Audio(label="输出合成结果"),api_name='tts') | |
| with gr.TabItem("钉钉群消息推送"): | |
| gr.Markdown("# 推送测试") | |
| dd_input=[gr.Textbox(label="请填写机器人token"),gr.Textbox(label="请填写需要推送的信息",lines=10)] | |
| dd_output=gr.Textbox(label="推送提示") | |
| dd_button=gr.Button("提交") | |
| dd_button.click(fx_dd, inputs=dd_input, outputs=dd_output,api_name='dingding_robot') | |
| with gr.TabItem("钉钉ocr"): | |
| gr.Markdown("# 网络图片OCR识别") | |
| ocr_input=[gr.Textbox(label="请填写ocr_token"),gr.Textbox(label="请填写图片网址"),gr.Radio(["身份证","增值税发票","营业执照","银行卡","车牌","机动车发票","驾驶证","行驶证","火车票","定额发票","出租车发票","机票行程单","审批表单","花名册"],value="营业执照增值税发票",label="请选择识别类型:")] | |
| ocr_button=gr.Button("开始识别>>") | |
| ocr_output=gr.JSON(label="识别结果") | |
| ocr_button.click(dd_ocr, inputs=ocr_input, outputs=ocr_output,api_name='dingding_ocr') | |
| with gr.TabItem("datatable"): | |
| gr.Markdown("# datatable测试") | |
| dt_input=[gr.File(label="选择需要读取的文档",type='bytes'),gr.Number(label='请输入分组列序号'),gr.Number(label='请输入聚合列序号')] | |
| dt_output=gr.DataFrame(label="输出",max_rows=10,wrap=True) | |
| dt_button=gr.Button("分类汇总") | |
| dt_button.click(fx_dt, inputs=dt_input, outputs=dt_output,api_name='datatable') | |
| ''' | |
| demo=gr.Blocks(css="#jsc:hover{background-color: red;}") | |
| with demo: | |
| with gr.Tabs(): | |
| with gr.TabItem("M-Formatter"): | |
| gr.Markdown("# PowerQuery M语言脚本格式化测试") | |
| M_input=gr.Textbox(label="请填写需要格式化的M脚本",lines=18) | |
| M_button=gr.Button("开始格式化>>") | |
| M_output=gr.Textbox(label="格式化结果",lines=50) | |
| M_button.click(fx_m, inputs=M_input, outputs=M_output,api_name='M') | |
| with gr.TabItem("DAX-Formatter"): | |
| gr.Markdown("# DAX表达式格式化测试") | |
| with gr.Row(): | |
| DAX_input=gr.Textbox(label="请填写需要格式化的DAX表达式",lines=28) | |
| DAX_button=gr.Button("格式化>>") | |
| DAX_output=gr.HTML(label="DAX表达式格式化结果") | |
| DAX_button.click(fx_dax, inputs=DAX_input, outputs=DAX_output,api_name='DAX') | |
| with gr.TabItem("Python-Execute"): | |
| gr.Markdown("# Python脚本测试") | |
| test_code='''from datatable import (dt, f,fread, by, ifelse, update, sort,count, min, max, mean, sum, rowsum) | |
| DT=fread('https://huggingface.co/spaces/changxin/test/raw/main/statics/test.csv') | |
| d_t=DT[:,sum(f.销量),by('小组')] | |
| py_exe=d_t.to_pandas()''' | |
| d_input=gr.Textbox(label="请填写需要datatable库处理的脚本(最终输出使用变量名py_exe)",lines=18,value=test_code) | |
| d_button=gr.Button("开始编译>>") | |
| d_output=gr.DataFrame(label="输出>",overflow_row_behaviour="paginate") | |
| d_button.click(fx_datatable, inputs=d_input, outputs=d_output,api_name='pyexe') | |
| with gr.TabItem("js"): | |
| gr.Markdown("# js处理测试") | |
| a=gr.Textbox(label='请输入需要js处理的字符串') | |
| js_output=gr.Textbox(label="JS输出") | |
| js_button1=gr.Button("js_test") | |
| js_button2=gr.Button("js_test2") | |
| js_button=gr.Button("js逆序字符串处理") | |
| js_button3=gr.Button("调用js引用",elem_id="jsc") | |
| js_button1.click(None,a,js_output,_js="x=>'你好:'+x") | |
| js_button2.click(None,a,js_output,_js="x=>`你好:${x},欢迎吹水!`") | |
| js_button.click(None,a,js_output,_js="(x) => [...x].reverse().join('')",api_name='js') | |
| js_button3.click(None,a,js_output,_js='(x)=>md5(x);<script src="https://huggingface.co/spaces/changxin/test/raw/main/statics/md5.js"></script>') | |
| with gr.TabItem("画册展示"): | |
| gr.Markdown("# 画册展示_khc") | |
| S='<iframe style="height: 600px; width: 100%;" src="https://app.kuhuace.com/player/index.html?id=60" allowfullscreen="allowfullscreen"><iframe>' | |
| gr.HTML(S) | |
| with gr.TabItem("下载测试"): | |
| with gr.Row(): | |
| xz_button=gr.Button("绑定下载资源>>") | |
| xz_button.click(xz,[], gr.File(label="输出下载资源"),api_name='xz') | |
| with gr.TabItem("date转换"): | |
| dt_input=gr.Textbox(label='请输入需要处理的日期字符串') | |
| dt_button=gr.Button("转换日期>>") | |
| dt_output=gr.Textbox(label='输出处理的日期字符串') | |
| dt_button.click(fx_rq,dt_input,dt_output,api_name='date_chinese') | |
| with gr.TabItem("读取word"): | |
| file_input = gr.File(file_count="single",label="请选择需要读取的word文件",show_label=True) | |
| text_output = gr.Textbox(label="输出读取文本",show_label=True) | |
| dq_button = gr.Button("开始读取>>") | |
| dq_button.click(wd, inputs=file_input, outputs=text_output,api_name="word-text") | |
| demo.launch() | |