解决方案:[博客小程序]公众号文章同步至云数据库实现

优采云 发布时间: 2022-10-13 10:20

  解决方案:[博客小程序]公众号文章同步至云数据库实现

  最近,我打算对我的博客小程序进行一次重大改造。原因是基于ghost的博客后台有很多限制。另外,我的服务器可能被用于其他用途,我的博客可能不再维护网站。一些想法

  首先想到的是,博客小程序可以“无需后台、域名、服务器、归档等”完全脱离服务器。整个博客小程序的所有功能都可以基于小程序提供的云开发功能来实现。

  这样减少了很多后端依赖,也方便了很多读者自己构建小程序。毕竟我现有的小程序还是完全依赖ghost的开源博客。

  但是文章的数据源是从哪里来的呢?毕竟博客小程序最终是文章的内容。目前考虑github和微信公众号。可以将这两个地方作为自己的文章数据源,然后通过函数同步对应的文章。

  由于我有公众号,文章也会在公众号上发布,所以我打算用公众号的文章作为我的文章数据源来实现我的新版本. 博客小程序。

  确认可操作性

  既然已经确定公众号的文章为数据源,那么可操作性将得到验证。“毕竟公众号还是有很多限制的,尤其是个人号。”

  首先,确认您是否有相应的接口权限。这主要用于获取与材质相关的接口。可以查看对应的接口文档。个人号还是有相应权限的。

  二是调用前的权限配置问题。查看文档后,公众号需要添加IP白名单才能获取token。

  这有点棘手。所有后端功能完全基于小程序云开发,小程序云功能对应的IP显然不固定。这就是我配置它的方式。

  google了半天,发现还是有很多小伙伴遇到这样的问题。一种是使用代理方式“仍然需要依赖后端服务器”。另一个是详尽的。有朋友实践过。基本上云功能对应的IP如下,都可以在白名单中配置。

  172.81.207.12

172.81.212.74

172.81.235.12

172.81.236.99

172.81.245.51

212.64.65.131

212.64.84.22

212.64.85.139

212.64.85.35

212.64.87.134

212.64.57.239

212.64.68.233

212.64.84.102

212.64.84.30

212.64.84.54

212.64.85.82

212.64.89.109

212.64.89.115

212.64.89.17

212.64.89.18

  解决这两个问题后,应该可以使用云功能将公众号文章同步到云数据库了。

  执行

  实现逻辑比较简单,分为三步:

  获取公众号(不是小程序)的access_token,遍历调用公众号永久素材列表接口获取数据并将相关数据保存到云数据库文章

  首先,获取access_token我就不多说了。在评论推送功能的实现的文章中已经提到过。直接上代码:

  /**

* 获取公众号token

* @param {}

*/

async function getAccessWechatToken() {

const result = await rp({

url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appId=${APPID}&secret=${APPSCREAT}`,

method: 'GET'

});

//TODO:需要验证IP白名单失效问题(ip改变导致无法获取到token)

console.info(result)

<p>

let rbody = (typeof result === &#39;object&#39;) ? result : JSON.parse(result);

return rbody;

}</p>

  然后调用素材列表接口获取对应的文章信息,这里主要获取公众号的图文信息(类型为news)

  /**

* 获取公众号文章信息

* @param {*} accessToken

*/

async function getWechatPosts(accessToken, offset, count) {

let url = `https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=${accessToken}`

var options = {

method: &#39;POST&#39;,

json: true,

uri: url,

body: {

"type": "news",

"offset": offset,

"count": count

}

}

const result = await rp(options)

let rbody = (typeof result === &#39;object&#39;) ? result : JSON.parse(result);

return rbody;

}

  最后将得到的图文信息保存到云数据库中。逻辑比较简单,就不多说了,直接上代码吧。

  /**

* 同步公众号文章至云数据库

*/

async function syncWechatPosts(isUpdate) {

let collection = "mini_posts"

let accessToken = await getCacheAccessToken(1)

var offset = 0

var count = 10

var isContinue = true

while (isContinue) {

var posts = await getWechatPosts(accessToken, offset, count)

if (posts.item.length == 0) {

isContinue = false

break;

}

for (var index in posts.item) {

//判断是否存在

let existPost = await db.collection(collection).where(

{

uniqueId: posts.item[index].media_id,

sourceFrom: "wechat"

}).get();

if (existPost.code) {

continue;

<p>

}

if (!existPost.data.length) {

var data = {

uniqueId: posts.item[index].media_id,

sourceFrom: "wechat",

content: posts.item[index].content.news_item[0].content,

author: posts.item[index].content.news_item[0].author,

title: posts.item[index].content.news_item[0].title,

defaultImageUrl: posts.item[index].content.news_item[0].thumb_url,

createTime: posts.item[index].update_time,

totalComments: 0,//总的点评数

totalVisits: 100,//总的访问数

totalZans: 50,//总的点赞数

label: [],//标签

classify: 0,//分类

contentTyep:"html"

}

await db.collection(collection).add({

data: data

});

}

else {

//不需要更新直接继续

if (!isUpdate) {

continue

}

let id = existPost.data[0]._id;

await db.collection(collection).doc(id).set({

data: {

content: posts.item[index].content.news_item[0].content,

author: posts.item[index].content.news_item[0].author,

title: posts.item[index].content.news_item[0].title,

defaultImageUrl: posts.item[index].content.news_item[0].thumb_url,

createTime: posts.item[index].update_time

}

});

}

}

offset=offset+count

}

}</p>

  至此,公众号的文章已经成功同步到小程序的云库,可以直接从云库中调取小程序渲染的数据源。

  当然,你也可以从一个案例中得出推论。数据源不一定需要通过公众号,也可以通过github或其他渠道同步到小程序的云数据库,让你的博客小程序完全独立。

  总结

  目前,与幽灵开源博客完全分离的小程序仍在开发中。取得一定进展后会开源。有兴趣的可以关注一下。

  官方数据:国内六大免费数据采集器特点分析

  

  国内常见的六大免费数据采集器特征分析定性数据统计分析pdf销售业绩分析模板建筑结构地震破坏分析销售进度分析表京东商城竞争策略分析目前比较流行的网上免费采集器有这样几个:优采云 , 海纳, ET, 三人组, 优采云, 优采云。这里的免费版本是相对的。如果是普通采集的个人,那么免费版一般就足够了。如果是针对企业用户,一般都要付费。毕竟做采集器的人也要吃饭啊!好吧,让我们来看看这些免费的 采集器 都提供了什么!1.优采云采集器优采云应该是国产采集软件的成功典范之一,包括付费用户数在内的用户数应该是最大的。优点:功能齐全,采集比较快,主要针对cms,短时间内可以采集很多,过滤,替换都不错,比较详细;界面比较齐全;支持的扩展比较好,如果能用懂代码,可以用PHP或者C#开发任意功能的扩展;附件采集功能齐全。缺点:采集规则的编写对于很多用户,尤其是不懂代码的用户来说,难度不小。运行时占用内存和CPU资源,资源回收控制不好。另外,授权是绑定在电脑上的,有时会很不方便。2、海纳优势:它可以捕获网站很多关键词文章,似乎适合网站主题,尤其是文章和博客。缺点:分类功能不完善,手动分类容易混淆。对于具体的接口,采集的内容是有限的,一次只能使用一个采集,不能批量使用采集,所以需要和网站连接背景网页。

  

  在安装过程中,需要海纳人员的技术支持比较麻烦。收费的、免费的功能太局限了,而且鸡肋。3.优采云采集器 设备优点:无人值守,自动更新,用户群主要集中在长期驻站潜水站主。软件一目了然,必要的功能也很齐全,而且软件是免费的。缺点:对论坛和 cms 的支持中等。帮助文件很少,上手并不容易。4.三人组采集器优点:适合各大论坛,动人,动人,快速准确。或者为论坛,适合开论坛。缺点:超级复杂,上手困难,对cms支持差。5. 优采云采集器特点:您可以开始拥有大量成员的新论坛。优点:适合 采集discuz 论坛。缺点:过于具体,兼容性差。6.优采云采集器优点:功能齐全,操作简单,无需编写规则。云独有的采集,shutdown也可以在云服务器上运行采集任务。缺点:产品较新,资质比较年轻。初级经济法重点总结下载 党员个人总结TXt 高中句型全文总结.doc 高中句型全文总结.doc 理论力学知识点总结pdf:追求简洁易用,功能比较齐全,您可以选择优采云采集器。如果你是技术人员,对写作规则了如指掌,而追求非常完整的功能,可以选择优采云采集器。优采云采集器和优采云采集器可以快速采集很多资源,可以应用到很多方面。这里只提到六大免费的采集器,其实其他的采集器还有很多,就不一一赘述了。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线