那美克星神龙 发表于 2020-11-12 09:23

根据论坛内<海王1.1>gui改版的web版海王工具

昨天在论坛内看到一个有意思的帖子 工具名叫 海王1.1   具体地址:海王1.1的地址, 使用的是百度AI 自然语言处理中的 对话情感分析 和 图灵机器人接口. 突然奇想改成了web版,手里正好有服务器就部署上了 ,简单页面内容如下:


代码使用nodejs编写接口,前端页面使用bootstrap4编写,使用ajax请求接口.代码粗糙且简单....
代码中需要使用到百度AI的appkey和秘钥,图灵机器人的appkey和用户id,代码中已经用汉字替换出你要填写的地发放.
使用nodejs做了web服务, 端口为3030(可以自行修改成其他的端口),可以自己配置下nginx用域名访问.
我会把代码打包放上来,首先要确保你的电脑安装了nodejs ,在目录下使用 npm install 安装所需要的包,使用 node (文件名).js 运行程序就可以了



服务端代码如下:

//1. 加载http模块
var uu = require('url');
var http = require('http');
var rp = require('request-promise');
var fs = require('fs')


var label1 = {
    'pessimistic':'负向情绪','neutral':'中性情绪','optimistic':'正向情绪'
}
var label2 = {
    'happy':'开心','thankful':'感谢','complaining':'抱怨','angry':'愤怒','like':'喜爱','disgusting':'厌恶','fearful':'恐惧','sad':'悲伤'
}

var qs = require('querystring');

const param = qs.stringify({
    'grant_type': 'client_credentials',
    'client_id': '你的百度accesskey',
    'client_secret': '你的百度密钥'
});
var request = require('request');
const { decode } = require('punycode');

//获取百度access_token
async function getAct() {
    var access_token = '';
    await rp({
      method: 'GET',
      uri: 'https://aip.baidubce.com/oauth/2.0/token?' + param,
      json: true // Automatically stringifies the body to JSON
    }).then(d => {
      access_token = d.access_token
    })
    return access_token
}

//获取情感分析内容
async function postData(text) {
    var a = await getAct()
    var rq = {    }
    var dd = [];
    var tlr = await getTuling(text)
    rq.tl = tlr
    await rp({
      method: 'POST',
      uri: 'https://aip.baidubce.com/rpc/2.0/nlp/v1/emotion?charset=UTF-8&access_token=' + a,
      json: true, // Automatically stringifies the body to JSON
      headers: {
            'Content-Type': 'application/json'
      },
      body: {
            "text": text
      }
    }).then( body=> {
      for (var i =0;i<body.items.length;i++){
            var lb = '';
            var pro = '';
            if(body.items.subitems.length>0){
                if(body.items.subitems.prob){
                  pro = body.items.subitems.prob
                }
                if(body.items.subitems.label){
                  lb = label2.subitems.label]
                }
            }
            dd={
                'type':label1.label],
                'prob':body.items.prob,
                'pro':pro,
                'lb':lb
            }
      }
      rq.dd = dd
    })
    return rq
}

//获取图灵回复文本
async function getTuling(text) {
    var dd = ''
    await rp({
      method: 'POST',
      uri: 'http://openapi.tuling123.com/openapi/api/v2',
      json: true, // Automatically stringifies the body to JSON
      headers: {
            'Content-Type': 'application/json'
      },
      body: {
            "reqType": 0,
            "perception": {
                "inputText": {
                  "text": text
                },
            },
            "userInfo": {
                "apiKey": "填写你的机器人key",
                "userId": "填写你的机器人用户名"
            }
      }
    }).then(d => {
      dd = d.results.values.text
    })
    return dd
}


var server = http.createServer(async function (request, response) {

    var parseObj = uu.parse(request.url, true);
    // console.log(parseObj);

    var pathname = parseObj.pathname; //相当于无参数的url路径
    // 这里将解析拿到的查询字符串对象作为一个属性挂载给 req 对象,这样的话在后续的代码中就可以直接通过 req.query 来获取查询字符串了
    request.query = parseObj.query;
    var t= request.query.text
    var url= request.url;
    if(pathname === '/'){
      response.write('Hello, welcome!')
      response.write('Behind every successful man, there is a woman. And behind every unsuccessful man, there are two.')
      response.end()
    }else if(pathname === '/getD'){
      var d = await postData(t)
      response.writeHead(200, {"Content-Type": "text/json;charset=UTF-8"});
      response.end(JSON.stringify(d) );
      
    }else if(pathname ==='/page'){
         fs.readFile('./index.html',function(err, data){
            if(!err){
                response.writeHead(200, {"Content-Type": "text/html;charset=UTF-8"});
                response.end(data);
            }else{
                throw err;
            }
      })
    console.log('有人访问page')

    }

})



//3. 绑定端口
server.listen(3030)

//4. 执行
console.log('执行了3030')



附件在这里:
第一次发帖好紧张,请大哥大姐们指指点点



那美克星神龙 发表于 2020-11-12 15:06

chenchuanshuai 发表于 2020-11-12 13:24
软件版的我点分析 直接就闪退了 啥情况

软件版的,我没下载,只是根据他写的内容,按自己思路又重写了一边。 用到的接口应该都是一样的。

那美克星神龙 发表于 2020-11-17 08:36

jzdhr 发表于 2020-11-16 19:22
这个太好用了,可以哄人

:Dweeqw   图灵机器人 每日调用次数会有限制, 每天一百次

chenchuanshuai 发表于 2020-11-12 13:24

软件版的我点分析 直接就闪退了 啥情况

那美克星神龙 发表于 2020-11-16 10:31

tangjh 发表于 2020-11-16 10:28
厉害,我也去研究一下看看

:lol 有问题的话可以来讨论下

itlink 发表于 2020-11-16 16:36

厉害,看来也是个编程高手

jzdhr 发表于 2020-11-16 19:22

这个太好用了,可以哄人

那美克星神龙 发表于 2020-11-17 08:35

itlink 发表于 2020-11-16 16:36
厉害,看来也是个编程高手

:lol 小菜鸟只会瞎写

smilings 发表于 2020-11-18 14:34

原来也是个编程大佬。

随身的丶 发表于 2020-12-2 17:50

只有package-lock.json文件没法install。。。。
页: [1] 2
查看完整版本: 根据论坛内<海王1.1>gui改版的web版海王工具