2022已經正式來臨,距離中國人的農曆春節僅剩十幾天了,春節必不可少的就是春聯了,下面本篇文章看看怎麼實現春節「智能迎春對聯」小程序,希望對大家有所幫助!
新年將至,做個智能迎春對聯小程式給大夥助助興!提前祝各位掘友們,2022年新年快落!新春快落!
隨機春聯
#指定姓氏
#體驗位址
#微信掃描下面的二維碼or 微信搜尋寶藏程式
二、準備工作##原始碼位址
Gitee:https://gitee.com/nanfangzhe/wechat_demo
#掌握語言:微信小程式語言
技術要點:①微信小程式雲開發 ②百度AI智能創作平台-智能寫春聯
遊戲流程:可以點選
隨機春聯與
指定姓氏
來取得所想要的春聯~名詞解釋
1️⃣註冊微信小程式流程,開啟雲端開發
2️⃣註冊百度AI平台—》控制台—》創建自然語言處理的應用程式— 》百度認證授權,拿到token——》再拿token去智慧春聯API介面
1 隨機春聯的邏輯解說
由於百度提供的智慧春聯API介面是需要傳參的,所以我們可以事先預備一個小型資料集合,透過點擊的時候能進行傳值,然後回傳需要的對聯。因此,是收集了部分迎春過年的字詞、詞語。var RANDOM_TEXT_LIST = ["虎", "虎年", "迎春", "春节", "过年", "年兽", "过春节", "初一", "年初", "红红火火", "红火", "开心", "开开心心", "健康", "健健康康", "长寿", "平安", "平平安安", "家庭", "家庭和睦", "和睦", "子子孙孙", "勤劳", "福气", "福", "致富", "富裕", "富", "合家欢喜", "合家", "欢喜", "喜庆", "喜", "囍", "生意兴隆", "恭喜发财", "大富大贵", "富贵", "富裕", "丰年", "子孙满堂", "心欢喜", "人间喜", "灯火", "灯笼", "烟花", "爆竹"]
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
小程式開發教學】
以上是一文看看如何擼出春節「智慧迎春對聯」小程式!的詳細內容。更多資訊請關注PHP中文網其他相關文章!