写在开始 此前,研究过木木的 bber,可惜一直部署不成功,直到昨天在木木的指点下,终于实现了!之前使用的黑石BB也完美迁移数据到bber!Json转存也实现了!Blog首页轮播样式调用,十分舒服。
正所谓分享就是为了延续被帮助的感动!所以,记录下踩坑过程,希望对你有帮助。通过本文,你将获得:
一个好用,支持微信、Chrome、Edge、Android “捷径”随时发布闪念的说说功能 获得一个好看的bber样式 预览本站效果 获得 Butterfly 主题中,首页轮播图展示哔哔功能 bber部署 木木大佬的教程已经很详尽了,这里不在赘述。只谈几个坑,补充说明。 《木木的原版教程》
我遇到的问题:
微信绑定成功,但发消息提示“哔哔短路中:404”,其他绑定,命令都正常 浏览器直接访问http服务,发起新消息的请求,提示云函数内部错误 解决方法:
确保按大佬教程,全程成功配置bber云函数 《「哔哔点啥」微信公众号 2.0》 去“数据库”——“talks”——点进去,这个时候应该是空白的,一条内容没有 手动添加一条哔哔内容, “字段”:“content”;“值”:“测试一下” 数据类型默认string 现在回去看,已经正常了! 去微信公众号“哔哔点啥”,发送一条文字说说,再回到刚才的位置,删掉手动添加的数据(没有加date,担心后续有其他bug) bber的 Json 转存 接下来,完善 Json 转存。同样的,先按木木原教程创建好转存的云函数,并删掉原bber函数里的异步转存注释。《熟悉的味道,不一样配方》
你发现,没有找到木木说的“Json下载链接”?别急,再去发一条哔哔,回到这里就有了。设置好 Json 的缓存。
json转存
配置json转存后,删掉bber云函数里异步转存代码前的注释 去发一条新的哔哔 然后云存储里就有json文件了 Json下载链接 处理完上述步骤,在腾讯云——云存储——json——选择下载,等待创建下载任务后,去复制得到下载链接如下:
1 https://626c-blogpkly-13278c-1258453354.tcb.qcloud.la/json/bber.json?sign=d71dfc60e67f23f55f3efa3c6038bf4d&t=1624029212&response-content-disposition=attawchment
其中,前半部分的https://626c-blogpkly-13278c-1258453354.tcb.qcloud.la/json/bber.json就是我们要的 Json 链接,试试浏览器访问,能不能正常展示,若可以则继续下文操作。
黑石BB数据迁移 以下方法,实测迁移了黑石BB的数据到 bber。其他类似说说,应该方法类似。
数据迁移
去 leancloud 将原来的说说数据下载,格式为 Json 推荐一个编辑器 Sublime Text ,打开下载的 Json 选中其中一个字段,然后 Alt + F3 ,会自动选中所有相同字符的内容,更改为 bber 里定义的字段名称 其中时间 date 字段,需要特别注意,得改为:"date":{"$date":"2021-06-12T04:48:41.820Z"},格式 注意,每两组数据之间的那个逗号,需要删除 其他字段及完成后的数据格式,参考下面: 1 2 3 4 5 6 7 8 9 10 11 12 { "content" : "整挺好。" , "date" : { "$date" : "2021-06-05T10:48:47.982Z" } , "_id" : "60bb568f9952573e4f96122a" , "from" : "Android 11" } { "content" : "嘀!第二针接种已完成。感谢医护人员,感谢现场志愿者。" , "date" : { "$date" : "2021-06-12T04:48:41.820Z" } , "_id" : "60c43ca9fbd3a161302a8aa4" , "from" : "Android 11" }
在腾讯云,数据库中,选择导入内容,导入方式为 Insert。搞定!
bber更换皮肤 木木大佬原版的bber比较简洁,我本人喜欢一些花里胡哨的东西,所以这里采用另外大佬的方法:《给 bber 换个皮肤》 ispeak-bber 源代码
Hexo Butterfly Hugo Dream
Hexo Butterfly
实际很简单,自己创建一个 BB 页面,在index.md里,写下以下内容即可。可参考我的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 --- title: 自言自语 date: 2021-06-07 17:29:43 type: "bb" top_img: --- <script > window .TWIKOO_MAGIC_PATH ="自言自语" </script > {% note success %} 说说内容来自 @夜的第八章 的自言自语。🤪🤪 {% endnote %} <style > #article-container img { margin : 0 auto 0 !important ; } </style > <div id ='speak' > </speak > <script type ="text/javascript" src ="https://cdn.guole.fun/js/ispeak-bber%401.4.2.1.min.js" charset ="utf-8" > </script > <script > ispeakBber .init ({ el : '#speak' , name : '夜的第八章 🦄' , envId : 'xxxxxx' , region : 'ap-shanghai' , limit : 7 , avatar : 'https://cdn.guole.fun/img/gl.jpg' , fromColor :'rgb(245, 150, 170)' , loadingImg : 'https://7.dusays.com/2021/03/04/d2d5e983e2961.gif' , dbName :'talks' }) .then (function ( ) { console .log ('哔哔 加载完成' ) }) </script > </div >
Hugo Dream
Hugo 同样可以。在blog/layouts/_default路径下,创建一个模板文件如bb.html,内容可以参考我的(其他 Hugo 主题需要自己改动):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 {{ define "title" }}{{ .Title }}{{ end }} {{ define "css" }} {{ if .Site.Params.highlightjs }} {{ if .Site.Params.highlightjsTheme }} <link rel ="stylesheet" data-highlight href ="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/styles/{{ .Site.Params.highlightjsTheme }}.min.css" /> {{ else }} <link rel ="stylesheet" data-highlight href ="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/styles/default.min.css" /> {{ end }} {{ end }} {{ if .Site.Params.valine }} <script src ='//unpkg.com/valine/dist/Valine.min.js' > </script > {{ end }} {{ end }} {{ define "main" }} <div class ="ui relaxed centered grid dream-grid dream-grid-single" {{ if .Site.Params.reversePostAndAside }}style ="flex-direction: row-reverse;" {{ end }}> {{ $showTOC := ge (len .TableOfContents) 33 }} {{ $shareInAside := .Site.Params.shareInAside }} {{ $showAside := or $showTOC $shareInAside }} <div class ="sixteen wide mobile sixteen wide tablet ten wide computer column markdown-body dream-single" id ="dream-save-post-as-img" > <article class ="ui segment post-disqus-area" data-html2canvas-ignore > <h2 class ="post-title" > {{.Title}}</h2 > <p > 说说内容来自 @夜的第八章 微信发送。🤪🤪</p > <article class ="main" > {{ if and .Params.cover .Site.Params.showSummaryCoverInPost }} <img class ="images" src ="{{ .Params.Img }}" /> {{ end }} {{ .Content | emojify }} </article > <div id ='speak' > </speak > <script type ="text/javascript" src ="https://cdn.jsdelivr.net/npm/ispeak-bber/ispeak-bber.min.js" charset ="utf-8" > </script > <script > ispeakBber .init ({ el : '#speak' , name : '夜的第八章 🦄' , envId : 'blogpkly-13278c' , region : 'ap-shanghai' , limit : 7 , avatar : 'https://cdn.guole.fun/img/gl.jpg' , fromColor :'rgb(245, 150, 170)' , loadingImg : 'https://7.dusays.com/2021/03/04/d2d5e983e2961.gif' , dbName :'talks' }) .then (function ( ) { console .log ('哔哔 加载完成' ) }) </script > </div > </div > <script > window .TWIKOO_MAGIC_PATH ="自言自语" </script > <div class ="sixteen wide mobile sixteen wide tablet ten wide computer column markdown-body dream-single" > <article class ="ui segment post-disqus-area" data-html2canvas-ignore > <span id ="liuyan" name ="liuyan" > </span > <div class ="liuyan" > <p > 评论区</p > </div > <div id ="tcomment" > </div > <script src ="https://cdn.jsdelivr.net/npm/twikoo@1.3.1/dist/twikoo.all.min.js" > </script > <script > twikoo.init ({ envId : 'blogpkly-13278c' , el : '#tcomment' , path : 'window.TWIKOO_MAGIC_PATH||window.location.pathname' , }) </script > </article > </div > {{ if .Site.Params.valine }} <article class ="ui segment" data-html2canvas-ignore > <div id ="vcomments" > </div > </article > <script > new Valine({ el: '#vcomments', appId: {{ .Site.Params.LEANCLOUD_APP_ID }} , appKey: {{ .Site.Params.LEANCLOUD_APP_KEY }} }) </script > {{ end }} </div > {{ end }} {{ define "js" }} {{ if .Site.Params.Experimental.jsDate }} <script src ="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.min.js" > </script > {{ partial "luxon.html" . }} {{ end }} <script src ="{{ " /js /scrollToTop.js " | relURL }}"> </script > {{ if .Site.Params.highlightjs }} <script src ="{{ if .Site.Params.highlightjsCDN }}{{ .Site.Params.highlightjsCDN }}{{ else }}{{ " https: //cdn.jsdelivr.net /gh /highlightjs /cdn-release /build /highlight.min.js " }}{{ end }}"> </script > {{ if .Site.Params.highlightjsExtraLanguages }} {{ range .Site.Params.highlightjsExtraLanguages }} <script src ="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/languages/{{ . }}.min.js" > </script > {{ end }} {{ end }} {{ partial "highlight.html" . }} {{ end }} <script src ="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.1/dist/html2canvas.min.js" > </script > <script src ="{{ " /js /post.js " | relURL }}" defer > </script > {{ end }}
由于 Hugo 我个人魔改了很多,你直接 Copy 可能会有报错,可以自行修改,或哪儿报错,删掉哪部分,页面先跑起来。折腾的这个过程,本身就很有趣,你说呢?
补充说明 以上内容中,我微调了原作者的样式,更换了 js 链接,解决了以下问题:
bber中出现图片时,移动端或PC端尺寸过小的问题 插入图片后,bb页面图片上边距太宽 你可以直接使用我的那个 js 链接,同样是腾讯云 CDN 的。不满意,也可以自行下载原作者 js 文件调整。
Chrome + Edge发布说说 小康大佬,为我们带来了一款 Edge 扩展插件,可以随时 Edge 浏览器中,发布说说。《iSpeak-bber时光机》
但是,一来,大佬写死了from为 🌈Chrome,二来,emjio和文字中间还没有空格,强迫症如我,加上平时Chrome用的更多,于是干脆提取出扩展文件,自己添加到本地浏览器中使用。
提取扩展文件后,做了如下修改:
区分 Chrome 和 Edge,设置不同的 from来源 保存为两个独立的文件夹,请保存在可靠路径,分别添加后使用(文件移动或丢失后,浏览器扩展失效,因为不是云端的) 想要自定义或修改默认的from来源,可在html/popup.html文件中修改点此下载我提取并修改的浏览器插件包 Chrome安装本地插件 Edge安装本地插件 Android 捷径发布
Chrome安装本地插件
访问Chrome——更多工具——扩展程序——左上角“加载已解压的扩展程序”,选择我提供的附件,解压缩后的文件夹1.0.0_0_Chrome,然后回到 Chrome,按下图方式固定插件。然后开始享用吧~~
Edge安装本地插件
同样的,在新版 Edge 浏览器中,选择Edge——扩展——左下角勾选“开发人员模式”——加载解压缩的扩展,选择我提供的附件,解压缩后的文件夹1.0.0_0_Edge。
至此,Chrome + Edge 发布说说搞定!本来考虑打包发布到插件商店,又觉得对原作者不尊重,所以就这样离线使用吧。
可以在这里,给插件作者点个赞!《iSpeak-bber时光机》
Android 捷径发布
使用 Android 设备的朋友,也不用眼馋别人通过 iOS 捷径发布说说了。因为咱们也有!
从 Github 下载安装这款“HTTP 快捷方式”apk,安装后继续下文操作。访问 Github 慢的同学,直接使用我提供的链接吧:Github下载该应用 点此立即下载该应用
打开HTTP 快捷方式App,选择新建快捷方式,自定义名称、描述,在“基本设置”中,设置方法为“POST”或“GET”,URL为
1 https://你后台显示的.ap-shanghai.app.tcloudbase.com/bber?key=
至于key、from,我们设置为常量,text则设置为变量content,每次发布的时候填写说说内容。
点击URL右侧的{},选择添加变量。常量key为你云函数里的key,如果没有特别设置就是bber。from我们设置一个好玩的如📱 Android 11。添加一个变量content。
接着回到URL页面,补充完刚才添加的常量和变量,如以下格式:
1 https://你后台显示的.ap-shanghai.app.tcloudbase.com/bber?key={key}&from={from}&text={content}
右上角,保存这个快捷方式,然后长按发送到桌面,搞定!
现在点击这个快捷方式,写下此刻感受,点确定试试!妙~
小结:
bber是可以同时配置到其他模块并存的云环境的,不用再买一个。比如,我就和 Twikoo 放到一起了 出现错误,请细看原作者教程及上文 Android 捷径若发布错误,看看是不是参数之间忘了加& 欢迎留言一起交流 参考内容 「哔哔点啥」微信公众号 2.0 《熟悉的味道,不一样配方》 《给 bber 换个皮肤》 ispeak-bber 源代码