当前位置: 代码网 > 移动>腾讯>微信 > 一文看看如何撸出春节“智能迎春对联”小程序!

一文看看如何撸出春节“智能迎春对联”小程序!

2025年03月31日 微信 我要评论
2022已经正式来临,距离中国人的农历春节仅剩十几天了,春节必不可少的就是春联了,下面本篇文章看看怎么实现春节“智能迎春对联”小程序,希望对大家有所帮助!新年将至,做个智能迎春对联小程序给大伙助助兴!

2022已经正式来临,距离中国人的农历春节仅剩十几天了,春节必不可少的就是春联了,下面本篇文章看看怎么实现春节“智能迎春对联”小程序,希望对大家有所帮助!

一文看看如何撸出春节“智能迎春对联”小程序!

新年将至,做个智能迎春对联小程序给大伙助助兴!提前祝各位掘友们,2022新年快落!新春快落!

一、效果展示

随机春联

1.gif

指定姓氏

2.gif

体验地址
微信扫描下面的二维码 or 微信搜索宝藏程序

3.gif

源码地址gitee:https://gitee.com/nanfangzhe/wechat_demo

二、准备工作

掌握语言微信小程序语言
技术要点:①微信小程序语言微信小程序语言

三、游戏流程与规则

游戏流程:可以通过点击随机春联和指定姓氏来获取所想要的春联~
名词解释:①随机春联,随机显示一对春联。 ②指定姓氏:输入你的姓氏,生成对联。

四、部署步骤

1️⃣注册微信小程序流程,开启云开发
2️⃣注册百度ai平台——》控制台——》创建自然语言处理的应用——》百度认证授权,拿到token——》再拿token去智能春联api接口
3️⃣需要修改的地方:appid(用微信开发者工具打开时输入的appid)、百度token(在couplet文件夹里的index.js文件)、云开发环境env(在app.js文件)

五、逻辑讲解与核心代码

1 随机春联的逻辑讲解

由于百度提供的智能春联api接口是需要传参的,所以我们可以提前预备一个小型数据集合,通过点击的时候能进行传值,然后返回需要的对联。因此,是收集了部分迎春过年的字词、词语。

var random_text_list = ["虎", "虎年", "迎春", "春节", "过年", "年兽", "过春节", "初一", "年初", "红红火火", "红火", "开心", "开开心心", "健康", "健健康康", "长寿", "平安", "平平安安", "家庭", "家庭和睦", "和睦", "子子孙孙", "勤劳", "福气", "福", "致富", "富裕", "富", "合家欢喜", "合家", "欢喜", "喜庆", "喜", "囍", "生意兴隆", "恭喜发财", "大富大贵", "富贵", "富裕", "丰年", "子孙满堂", "心欢喜", "人间喜", "灯火", "灯笼", "烟花", "爆竹"]
登录后复制

4.png

2 指定姓氏的逻辑讲解

这个和随机春联是类似的逻辑,只不过需要用户输入姓氏,但是用到的api接口有点拉胯,输入单单一个姓的字,输出的内容是有点不合理。所以在这处理办法是拼接加一个“家”字进去,比如输入姓氏:柳,传值的就是柳家;输入的是张,就是张家...

  ok: function () {
    var text = this.data.textv
    if (!text || text.length > 4) {
      wx.showtoast({
        title: '姓氏暂不支持超过4个字哦!',
        icon: 'none'
      })
      return;
    }
    this.getcoupletbytxt(text + "家") // 智能写对联
    this.setdata({
      showmodal: false
    })
  },
登录后复制

3 核心代码

经过前面的逻辑讲解,你可能就知道,核心代码是公共调用的方法。(bingo~ 你猜对了)

随机春联调用的方法

// 随机春联的调用方法
  bindgetrandomcouplet() {
    let that = this
    var num = parseint(math.random() * (max_num - min_num + 1) + min_num, 10); // 生成[n,m]的随机整数
    that.getcoupletbytxt(random_text_list[num]) // 智能写对联
  },
登录后复制

指定姓氏调用的方法

// 随机春联的调用方法
  ok: function () {
    var text = this.data.textv
    if (!text || text.length > 4) {
      wx.showtoast({
        title: '姓氏暂不支持超过4个字哦!',
        icon: 'none'
      })
      return;
    }
    this.getcoupletbytxt(text + "家") // 智能写对联
    this.setdata({
      showmodal: false
    })
  },
登录后复制

调用智能春联的公共方法

  // 智能写对联(api接口来源,参考百度-语言处理技术-智能创作平台-智能写对联:https://ai.baidu.com/ai-doc/nlp/ok53wb6dh)
  getcoupletbytxt(text) {
    let that = this
    console.log(text) // 字符串(限5字符数以内)即作诗的主题
    if (!text || text.length > 5) {
      wx.showtoast({
        title: '主题限制5个字以内哦!',
        icon: 'none'
      })
      return;
    }
    wx.cloud.callfunction({
      name: 'couplet',
      data: {
        action: 'getcoupletbytxt',
        text
      }
    }).then(res => {
      console.log(res)
      if (res.result.error_code) {
        if ("17".indexof(res.result.error_code) != -1) {
          wx.showtoast({
            title: '调用次数用完啦,点击右下角小电话,联系开发者充次钱充次数啦!',
            icon: 'none',
            duration: 3000,
          })
        } else {
          wx.showtoast({
            title: '当前对联不太行,请重试!',
            icon: 'none'
          })
        }
        return;
      }
      that.setdata({
        couplets: res.result.couplets
      })
    })
  },
登录后复制

云函数调用的公共方法

// 注:先看readme.md文件
// 对联生成请求
const cloud = require('wx-server-sdk')
var rp = require('request-promise')
cloud.init({
  env: cloud.dynamic_current_env
})
const db = cloud.database()
// 天行数据的key
var tian_xing_key = ''
// 天行数据的接口api
var tian_xing_api = 'http://api.tianapi.com/duilian/index'
// 百度token
var bai_du_access_token = '' // 这里需要自行去申请咯~
// 百度接口api
var bai_du_api = [
  "https://aip.baidubce.com/rpc/2.0/creation/v1/poem", // 智能写诗
  "https://aip.baidubce.com/rpc/2.0/creation/v1/couplets" // 智能写对联
]


// 云函数入口函数
exports.main = async (event, context) => {
  var { action, text } = event
  var data = {}
  switch (action) {
    case 'getpoembytxt': {
      data.text = text
      if (text == "")
        return {
          message: '缺少参数text'
        }
      // 智能写诗(api接口来源,参考百度-语言处理技术-智能创作平台-智能写诗:https://ai.baidu.com/ai-doc/nlp/ak53wc3o3)
      return new promise((resolve, reject) => {
        try {
          rp({
            method: 'post',
            headers: {
              "content-type": "application/json",
            },
            body: json.stringify(data),
            url: bai_du_api[0] + '?access_token=' + bai_du_access_token, // text必要参数,写诗的主题内容
          }, function (error, response, body) {
            if (error) {
              return reject(error);
            }
            return resolve(json.parse(body));
          })
        } catch (e) {
          return reject(e)
        }
      });
    }
    case 'getcoupletbytxt': {
      data.text = text
      if (text == "")
        return {
          message: '缺少参数text'
        }
      // 智能写对联(api接口来源,参考百度-语言处理技术-智能创作平台-智能写对联:https://ai.baidu.com/ai-doc/nlp/ok53wb6dh)
      return new promise((resolve, reject) => {
        try {
          rp({
            method: 'post',
            headers: {
              "content-type": "application/json",
            },
            body: json.stringify(data),
            url: bai_du_api[1] + '?access_token=' + bai_du_access_token,  // text必要参数,对联的主题内容
          }, function (error, response, body) {
            if (error) {
              return reject(error);
            }
            return resolve(json.parse(body));
          })
        } catch (e) {
          return reject(e)
        }
      });
    }
    case 'getrandomcouplet': {
      // 随机一对对联(无横批)(api接口来源,天行数据:https://www.tianapi.com/console/)
      return new promise((resolve, reject) => {
        rp({
          url: tian_xing_api + '?key=' + tian_xing_key,
          method: "post",
          json: true,
        }, function (error, response, body) {
          console.log("响应" + body)
          resolve(body)
          if (!error && response.statuscode == 200) {
            try { } catch (e) {
              reject()
            }
          }
        })
      })
    }
    default: {
      return {
        message: 'action错误!'
      }
    }
  }

}
登录后复制

(中间有些多余的代码,并不是多余的,只是未整理,并且还在继续开发这个小程序...)

完整代码地址:https://gitee.com/nanfangzhe/wechat_demo

【相关学习推荐:微信小程序语言

以上就是一文看看如何撸出春节“智能迎春对联”小程序!的详细内容,更多请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com