专业的丹阳网站建设,yii2框架做的网站有哪些,东营列表网,手机版怎么做微电影网站背景#xff1a;我有一个《砂舞指南》的小程序#xff0c;主要是分享砂舞最新动态等
最近做了一个小程序#xff0c;想要一些固定的文章展示在小程序里面#xff0c;比如《什么是砂舞》《玩砂舞注意点》等普及砂舞知识的文章
开发流程#xff1a;
1、刚开始测试了 素材…背景我有一个《砂舞指南》的小程序主要是分享砂舞最新动态等
最近做了一个小程序想要一些固定的文章展示在小程序里面比如《什么是砂舞》《玩砂舞注意点》等普及砂舞知识的文章
开发流程
1、刚开始测试了 素材管理/获取永久素材但是结果不甚满意。发表了20篇文章只获取到15个。不知道是平台规则的修改还是什么的无法满足需求
2、翻了半天找个 发布能力/获取成功发布列表。 刚开始获取不到发表的文章列表查了查得知 发布/发表 是俩个文章
发布就是在发表按钮点击后不群发文章。在微信公众号首页能看到文章但是不给粉丝推送 发表勾选推送群发给粉丝
所以发布能力/获取成功发布列表这个接口刚好满足我的需求
实现
我的服务器是用golang来处理的
package wechatFreePublishimport (bytesfmtgithub.com/goccy/go-jsonnet/http
)func GetList(token string, offset, count, noContent int32) []*NewsItem {pageSize : 20totalMaterialCount : 0allMaterialItems : []*NewsItem{}// 第一次请求以获取总数firstUrl : fmt.Sprintf(https://api.weixin.qq.com/cgi-bin/freepublish/batchget?access_token%s, token)//firstUrl : fmt.Sprintf(https://api.weixin.qq.com/cgi-bin/freepublish/batchget?access_token%s, token)// 构建请求参数requestData : []byte(fmt.Sprintf({offset: %d, count: %d, no_content: %d}, offset, count, noContent))firstResp, err : http.Post(firstUrl, application/json, bytes.NewReader(requestData))if err ! nil {fmt.Println(Error:, err)return nil}defer firstResp.Body.Close()var firstResponse NewsMediaResponseif err : json.NewDecoder(firstResp.Body).Decode(firstResponse); err ! nil {fmt.Println(Error decoding JSON:, err.Error())return nil}// 获取总数totalMaterialCount firstResponse.TotalCountprintln(totalMaterialCount)// 开始轮询请求素材列表for offset : 0; offset totalMaterialCount; offset pageSize {secondUrl : fmt.Sprintf(https://api.weixin.qq.com/cgi-bin/freepublish/batchget?access_token%s, token)// 构建请求参数requestData : []byte(fmt.Sprintf({offset: %d, count: %d, no_content: %d}, offset, count, noContent))secondResp, err : http.Post(secondUrl, application/json, bytes.NewReader(requestData))if err ! nil {fmt.Println(Error:, err)return nil}defer secondResp.Body.Close()// 解析JSON响应var response NewsMediaResponseif err : json.NewDecoder(secondResp.Body).Decode(response); err ! nil {fmt.Println(Error decoding JSON:, err)return nil}// 打印解析结果fmt.Printf(Total Count: %d\n, response.TotalCount)fmt.Printf(Item Count: %d\n, response.ItemCount)for _, item : range response.Items {//fmt.Printf(News Media Item %d:\n, i1)//fmt.Printf(Article ID: %s\n, item.ArticleID)//fmt.Printf(Update Time: %d\n, item.UpdateTime)for _, newsItem : range item.Content.NewsItem {allMaterialItems append(allMaterialItems, newsItem)//fmt.Printf( News Item %d:\n, j1)//fmt.Printf( Title: %s\n, newsItem.Title)//fmt.Printf( Author: %s\n, newsItem.Author)//fmt.Printf( Digest: %s\n, newsItem.Digest)//fmt.Printf( Content: %s\n, newsItem.Content)//fmt.Printf( Content Source URL: %s\n, newsItem.ContentSourceURL)//fmt.Printf( Thumb Media ID: %s\n, newsItem.ThumbMediaID)//fmt.Printf( Show Cover Pic: %d\n, newsItem.ShowCoverPic)//fmt.Printf( Need Open Comment: %d\n, newsItem.NeedOpenComment)//fmt.Printf( Only Fans Can Comment: %d\n, newsItem.OnlyFansCanComment)//fmt.Printf( URL: %s\n, newsItem.URL)//fmt.Printf( Is Deleted: %v\n, newsItem.IsDeleted)}}}return allMaterialItems
}type NewsItem struct {Title string json:titleAuthor string json:authorDigest string json:digestContent string json:contentContentSourceURL string json:content_source_urlThumbMediaID string json:thumb_media_idShowCoverPic int json:show_cover_picNeedOpenComment int json:need_open_commentOnlyFansCanComment int json:only_fans_can_commentURL string json:urlIsDeleted bool json:is_deleted
}type NewsMediaItem struct {ArticleID string json:article_idContent struct {NewsItem []NewsItem json:news_item} json:contentUpdateTime int json:update_time
}type NewsMediaResponse struct {TotalCount int json:total_countItemCount int json:item_countItems []NewsMediaItem json:item
}获取成功发布列表后又衍生出个问题我想要获取文章是缩略图。但是数据只提供了个缩略图id并没有直接的URL地址
因微信公众号的接口每天有次数限制那么我只能调用 素材管理/获取永久素材/image将素材库的所有图片存储到我的服务器然后在获取文章的时候在缓存中用图片ID获取图片URL返回给客户端了。
这样微信小程序就有了 文章标题缩略图URL就可以展示自己需要的文章了
后续只要在公众号发布文章即可同步到小程序。