aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据;

pip install readmdict 

dump_pickle.py

import os
import sys
import time
import pickle
from readmdict import MDX, MDDos.chdir("/mdict")mdxfile = "your.mdx"
if not os.path.exists(mdxfile):print("{mdxfile} not found!")sys.exit(1)start_time = time.time()
mdx = MDX(mdxfile)
headwords = [*mdx]
print('headwords:', len(headwords))with open("your_wordls.pik", 'wb') as f:pickle.dump(headwords,f)
end_time = time.time()
print('cost %f second' % (end_time - start_time))

运行 dump_pickle.py  生成文件 your_wordls.pik 放在 res/

load_pickle.py 放在 res/

import json
import pickledef load_pickle():with open("res/your_wordls.pik", 'rb') as f:headwords = pickle.load(f)alist = []for hw in headwords:hws = hw.decode()alist.append(hws)return json.dumps(alist)

main.aardio 见下面

import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio2";right=889;bottom=467)
mainForm.add(
button={cls="button";text="go";left=335;top=22;right=399;bottom=41;z=2};
button2={cls="button";text="prefix";left=426;top=21;right=497;bottom=40;z=4};
button3={cls="button";text="sound";left=533;top=19;right=592;bottom=39;z=5};
button4={cls="button";text="TTS读音";left=621;top=17;right=681;bottom=39;z=7};
custom={cls="custom";text="WebView2";left=165;top=55;right=889;bottom=469;z=3};
edit={cls="edit";left=17;top=19;right=317;bottom=43;edge=1;z=1};
listbox={cls="listbox";left=7;top=56;right=161;bottom=463;edge=1;items={};vscroll=1;z=6}
)
/*}}*/import web.view;
var wb = web.view(mainForm.custom);import web.json;
import console;import io;
import sys;
import fsys.media;
import py3;
//导入 Python 模块
//var pickle = py3.import("pickle");
var pycode = string.load("\res\load_pickle.py");
py3.exec(pycode);
var pyobj = py3.main.load_pickle();
var alist = web.json.parse(tostring(pyobj));
//console.log(type(alist));var basepath = "D:\mdict\data";var js = /**window.onload = function(){document.body.addEventListener('click', function(event){var target = event.target || event.srcElement;      // 兼容处理if (target.nodeName.toLocaleLowerCase() === "a") {  // 判断是否匹配目标元素if (event.preventDefault) {     // 对捕获到的 a 标签进行处理event.preventDefault();var addr = target.getAttribute('href');if (addr.indexOf('sound://')==0){alert(addr);} else {alert('href='+addr);}}}       });}
**/var baseurl = "http://localhost:8888/";
//响应按钮事件
mainForm.button.oncommand = function(id,event){var txt = mainForm.edit.text ;var str = string.trim(txt);if (string.startWith(str, "http://") or string.startWith(str, "https://")){wb.go(str);} elseif(string.startWith(str, "D:\") or string.endWith(str,".htm")){wb.go(str);} else {url = baseurl + "trans?txt=" + str;wb.go(url);//wb.doScript(js);}
}// prefix 前缀匹配
mainForm.button2.oncommand = function(id,event){mainForm.button2.disabled = true;var txt = mainForm.edit.text;var str = string.lower(string.trim(txt));if (string.startWith(str, "http://") or string.startWith(str, "https://")){wb.go(str);} else {mainForm.listbox.clear();//遍历 table array 对象成员for( k,v in alist){word = string.lower(v);if (string.startWith(word, str)){//console.log(v);mainForm.listbox.add(v);}}if (mainForm.listbox.count ==0){mainForm.listbox.add("null");}mainForm.listbox.selIndex = 1;}mainForm.button2.disabled = false;
}// 播放本地 .mp3
mainForm.button3.oncommand = function(id,event){mainForm.button3.disabled = true;var txt = mainForm.edit.text ;if (string.startWith(txt, "sound://")){if (string.endWith(txt, ".mp3")){var str = string.slice(txt,8,-1,true);var path = basepath + string.replace(str,"/","\");if(! io.exist(path)){mainForm.msgbox(path+" not found.");return;}mediaFile = fsys.media(path);if (mediaFile) {mediaFile.play();}}}mainForm.button3.disabled = false;		
}import com.sapi.voice; //导入语音组件
var voice = com.sapi.voice(); //创建语音对象
// TTS 读单词
mainForm.button4.oncommand = function(id,event){mainForm.button4.disabled = true;voice.speakAsync(mainForm.edit.text,1);//异步非阻塞朗读voice.waitOne(); //等待朗读结束mainForm.button4.disabled = false;	
}mainForm.listbox.oncommand = function(id,event){if( event == 0x1/*_LBN_SELCHANGE*/ ){str = mainForm.listbox.selText;url = baseurl + "trans?txt=" + str;wb.go(url);}
}//响应回车键弹起的消息
mainForm.edit.wndproc = function(hwnd,message,wParam,lParam){if(message == 0x101/*_WM_KEYUP*/ && wParam == 0xD/*_VK_ENTER*/){var url = mainForm.edit.text ;if (string.startWith(url, "http://") or string.startWith(url, "https://")){wb.go(url);} else {url = baseurl + "trans?txt=" + string.trim(url)wb.go(url);//wb.doScript(js);}}//无返回值则继续调用默认回调函数
}mainForm.show();
return win.loopMessage();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记-JVM-对象结构及生命周期

申明:文章内容是本人学习极客时间课程所写,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。 原资料地址:课程资料 对象的创建流程 常量池检查:检查new指令是否能在常…

6.利用matlab完成 符号矩阵的秩和 符号方阵的逆矩阵和行列式 (matlab程序)

1.简述 利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。 例2-2 利用M文件建立MYMAT矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:(2) 把…

LeetCode面向运气之Javascript—第121题-买卖股票的最佳时机-97.77%

LeetCode第121题-买卖股票的最佳时机 题目要求 给定一个数组prices ,它的第i个元素prices[i]表示一支给定股票第i天的价格。 你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回…

【云原生】Kubernetes 概述

Kubernetes 概述 1.Kubernetes 简介 Kubernetes 是一个可移植的、可扩展的、用于管理容器化工作负载和服务的开源平台,它简化(促进)了声明式配置和自动化。它有一个庞大的、快速增长的生态系统。Kubernetes 的服务、支持和工具随处可见。 K…

Jay17 2023.8.12日报

8.12 今天做了2题,CTFshow 红包挑战8(PHP create_function())和BUU [RoarCTF 2019]Easy Java(web.xml泄露)。 此外一直在打NepCTF,出了一题(ez_java_checkin)简单了解了java中shri…

02 - git 文件重命名

第一种方式: mv kongfu_person.txt kongfu.txt git add .第二种方式: git mv kongfu_person.txt kongfu.txt

Jmeter请求接口返回值乱码解决

乱码示例 解决步骤: 1.打开Jmeter安装目录下的bin目录,找到jmeter.properties 2.使用记事本或其他编译工具打开jmeter.properties文件,然后全局搜索sampleresult.default.encoding 3.在文件中添加sampleresult.default.encodingutf-8,保存…

TSINGSEE青犀视频安防监控视频平台EasyCVR设备在线,视频无法播放的原因排查

可支持国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等多种协议接入的安防监控视频平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、…

【CSS学习笔记】

学习内容 1.css是什么 2.CSS怎么用(快速入门) 3.CSS选择器(重点 难点) 4.美化页面(文字、阴影、超链接、列表、渐变…) 5.盒子模型 6.浮动 7.定位 8.网页动画(特效) 1.什么是CSS C…

【计算机视觉|生成对抗】用深度卷积生成对抗网络进行无监督表示学习(DCGAN)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 链接:[1511.06434] Unsupervised Representation Learning with Deep Conv…

利用ApiPost实现Mock Server服务

APIPOST可以让你在没有后端程序的情况下能真实地返回接口数据,你可以用APIPOST实现项目初期纯前端的效果演示,也可以用APIPOST实现开发中的数据模拟从而实现前后端分离。在使用APIPOST之前,你的团队实现数据模拟可能是下面的方案中的一种或者…

Linux命令200例:pwd用于显示当前工作目录的绝对路径

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…