龙空技术网

编程不难: 几句代码调用 Edge 逼真语音,一句代码同步浏览器 Cookie

aardio 1008

前言:

现时咱们对“webview 获取cookie”可能比较讲究,兄弟们都想要分析一些“webview 获取cookie”的相关资讯。那么小编在网上网罗了一些对于“webview 获取cookie””的相关内容,希望小伙伴们能喜欢,看官们快快来学习一下吧!

前几天有人问通过 WebSocket 调用语音遇到的问题。我就稍微封装了一下。

几个要点注意一下:

1、这个接口在连接 WebSocket 以后,来回每个消息前面有类 HTTP 格式头。而 HTTP 头的拼接要很小心,少了一个回车符、换行符都会出错。

其实 aardio 里有个 web.joinHeaders() 做这事很方便,这个函数的参数可以传很多不同奇奇怪怪的格式进去,然后自动修正错误,规一化为正确的格式。

而我今天基于这个函数又为 aardio 新增了一个 string.http 库,专门用来生成与解析 Edge 接口的这种消息格式(其实挺好用)。

2、每次语音转文本要重新连接 WebSocket ,这是容易误解和出错的地方。套接字断开了就不要用了,重新创建一个 WebSocket 再连上去就可以了。

首先在 aardio 里画一个界面,aardio 做这些事很简单:

然后切换到代码视图,输入代码如下:

import bass.channel; import web.edgeTextToSpeech;import win.ui;/*DSG{{*/var winform = win.form(text="Edge 大声朗读")winform.add(button={cls="button";text="文本转语音";left=472;top=384;right=705;bottom=445;color=14120960;db=1;dr=1;font=LOGFONT(h=-14);note="调用 Edge WebSocket 大声朗读接口";z=2};cmbVoice={cls="combobox";left=67;top=390;right=297;bottom=416;db=1;dl=1;edge=1;items={};mode="dropdownlist";z=3};edit={cls="edit";left=8;top=10;right=741;bottom=370;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1};static={cls="static";text="速度:";left=0;top=432;right=56;bottom=456;align="right";center=1;transparent=1;z=5};static2={cls="static";text="语音:";left=0;top=392;right=56;bottom=416;align="right";center=1;transparent=1;z=6};tbRate={cls="trackbar";left=56;top=424;right=344;bottom=454;max=100;min=0;z=4})/*}}*///响应按钮点击事件winform.button.oncommand = function(id, event) {          //禁用按钮,显示加载动画    winform.button.disabledText = {"✶";"✸";"✹";"✺";"✹";"✷"}        //创建文本转语音服务    var tts = web.edgeTextToSpeech(winform.edit.text,"\tts.mp3")        //设置语音    tts.voiceOptions.name = winform.cmbVoice.selText        //设置速度    tts.voiceOptions.rate = (winform.tbRate.pos - 100) + "%"         //识别完成    tts.OnResponseEnd = function(path){                 //启用按钮,停止动画        winform.button.disabledText = null;                 //播放声音        bass.channel.open(string.load(path)).play()    }        //连接服务器,合成语音    tts.ConnectAsync();}//设置滑块范围(语音速度)winform.tbRate.setRange(0,200);winform.tbRate.pos = 100;//可选语音列表winform.cmbVoice.items = {  "zh-CN-XiaoxiaoNeural"; "zh-CN-XiaoyiNeural"; "zh-CN-YunjianNeural"; "zh-CN-YunxiNeural"; "zh-CN-YunxiaNeural"; "zh-CN-YunyangNeural"; "zh-CN-shaanxi-XiaoniNeural"; "zh-CN-liaoning-XiaobeiNeural"; "zh-TW-HsiaoChenNeural"; "zh-TW-YunJheNeural"; "zh-TW-HsiaoYuNeural";  "zh-HK-HiuGaaiNeural"; "zh-HK-HiuMaanNeural"; "zh-HK-WanLungNeural";}winform.cmbVoice.selIndex = 1;winform.show();win.loopMessage();

按 F5 运行就可以了。有兴趣可以阅读一下扩展库的源代码,也没几句代码。

再说一个最近跟浏览器有关的的更新。

kanadeblisst 写了一篇很棒的文章:

aardio爬虫实战篇:采集自己的公众号粉丝列表。开源地址: 

我最近改进了一下文中提到的 Cookie 有关的功能。经过改进以后,现在只要一句代码就能自动把 WebView2 浏览器控件的 Cookie 提取出来用于自己创建的 HTTP 客户端。

就用 kanadeblisst 这个很棒的案例我们做一下演示:

import win.ui;/*DSG{{*/var winform = win.form(text="取粉丝列表") /*}}*/import web.view;var wb = web.view(winform);  wb.go(";);winform.show();//等待网址,获取网址内 token 参数var token = wb.waitUrlParam("cgi-bin/home","token");//创建 HTTP 客户端import web.rest.jsonLiteClient;var http = web.rest.jsonLiteClient();//获取 web.view 的 Cookiehttp.setCookie(wb);//声明 API var mp = http.api(";);//调用 API var result = mp.get({    "token": token,    "action": "get_user_list",    "groupid": -2,    "limit": 20,    "offset": 0,     "lang": "zh_CN",    "f": "json",    "backfoward": 1,    "ajax": 1,    "random": "0." + string.random(16, "0123456789"),    "begin_create_time": 11111}) //查看返回数据import console;console.dumpJson(result);win.loopMessage();

按 F5 运行看效果,是不是方便多了?

标签: #webview 获取cookie