Java實(shí)現(xiàn)將每日新聞添加到自己博客中
前言
最近新整了個(gè)博客網(wǎng)站,同事在gitee上找的,還不錯(cuò),gitee上的地址在這里:拾壹博客管理系統(tǒng)。
別人的業(yè)務(wù),再好也有不滿足自己的地方,所以我就拉下來源碼看了看,改了些bug,其中我覺得這個(gè)需求是有人需要用到的——每日新聞推送到微信群中。
效果圖如下:

每天定時(shí)凌晨5.20推送。
why
在說功能之前先說說為什么要做這么件事兒,之前我是從比的微信群中將每日新聞復(fù)制到自己的群的,因?yàn)槿盒枰?dòng)互動(dòng),不能成為一個(gè)死群,所以我就每天手動(dòng)發(fā),偶爾有幾次不發(fā),就有群友問我,為啥不發(fā)了呢,他們覺的這個(gè)東西還挺好(雖然發(fā)了之后也沒有人回復(fù),大家可能只是在默默的觀察關(guān)注吧)
于是后面我就每天都發(fā),但是吧,手動(dòng)發(fā),有時(shí)候記得,有時(shí)候忘記,并且別的群不發(fā)的話,我就沒地方找去,還得自己去網(wǎng)上找,所以就想著自己寫一個(gè)吧。
思路
網(wǎng)上有專門的這種接口,用來拿到每日新聞簡要
將新聞?wù)沓梢黄恼?,發(fā)送到博客中
利用別的途徑,將新聞標(biāo)題(因?yàn)槲⑿虐l(fā)文字會(huì)有字?jǐn)?shù)限制),推送到群中(智能微秘書)
然后按照這個(gè)思路我們?nèi)?shí)現(xiàn)。
代碼實(shí)現(xiàn)
1.首先我們?nèi)ヌ煨袛?shù)據(jù),注冊一個(gè)賬號(hào),然后找到每日新聞,申請(qǐng)改接口。
注冊地址:天行數(shù)據(jù),找到接口:

申請(qǐng)下來之后,去個(gè)人中心,看看自己的key是多少,我們在請(qǐng)求接口的時(shí)候需要拿著這個(gè)key去。

2. 在java中實(shí)現(xiàn)調(diào)用該接口,拿到數(shù)據(jù)發(fā)布到博客中。
關(guān)鍵代碼如下:
/**
* 獲取每日新聞,添加到文章里面
* @param
* @return
*/
@Override
public ResponseResult getDaysNews() {
//調(diào)用每日簡報(bào)的接口
String body = HttpUtil
.createGet(DAYS_NEWS_API + "?key=" + TIAN_KEY)
.execute()
.body();
JSONObject jsonObjectResult = JSON.parseObject(body);
Integer code = jsonObjectResult.getInteger("code");
if(code!=200){
log.error("請(qǐng)求每日新聞的接口出錯(cuò),出錯(cuò)信息:"+body);
return ResponseResult.error();
}
log.error("請(qǐng)求每日新聞的接口成功:"+body);
JSONObject resultObject = jsonObjectResult.getJSONObject("result");
//獲取新聞列表
JSONArray contentList = resultObject.getJSONArray("list");
//獲取文章的封面信息
String strResult = restTemplate.getForObject(IMG_URL_API, String.class);
JSONObject jsonObject = JSON.parseObject(strResult);
Object imgUrl = jsonObject.get("imgurl");
//將新聞列表封裝成markdown文章
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
String todayDate = simpleDateFormat.format(new Date());
String titleContent = "# "+todayDate+"新聞簡要<br/>";
StringBuilder stringBuilder = new StringBuilder(titleContent);
//發(fā)送到微信群里面的信息
JSONObject contentObject = new JSONObject();
contentObject.put("todayDate",todayDate);
JSONArray array = new JSONArray();
//遍歷接口返回來的json數(shù)據(jù)
contentList.forEach(item->{
JSONObject arrayObject = new JSONObject();
JSONObject itemObject = (JSONObject)item;
stringBuilder.append("??");
stringBuilder.append(itemObject.getString("mtime"));
stringBuilder.append("<br/>");
stringBuilder.append("### ");
stringBuilder.append("???");
stringBuilder.append(itemObject.getString("title"));
stringBuilder.append("<br/>");
stringBuilder.append("??");
stringBuilder.append(itemObject.getString("digest"));
stringBuilder.append("<br/>");
stringBuilder.append("<br/>");
stringBuilder.append("---");
stringBuilder.append("<br/>");
//標(biāo)題
arrayObject.put("title",itemObject.getString("title"));
//內(nèi)容
arrayObject.put("digest",itemObject.getString("digest"));
//時(shí)間
arrayObject.put("mtime",itemObject.getString("mtime"));
array.add(arrayObject);
});
contentObject.put("list",array);
stringBuilder.append("(本文所有數(shù)據(jù)均來自天行數(shù)據(jù)api,如有侵權(quán),聯(lián)系即刪~)");
//將拿到的內(nèi)容放在Markdown中
String newContent = stringBuilder.toString();
MutableDataSet options = new MutableDataSet();
String markdown = FlexmarkHtmlConverter
.builder(options)
.build()
.convert(newContent)
.replace("lang-java","java");
//構(gòu)建文章的實(shí)體
BlogArticle entity = BlogArticle.builder()
.userId(7L)
.contentMd(markdown)
.categoryId(DAYYS_NEWS)
.isOriginal(YesOrNoEnum.NO.getCode())
//轉(zhuǎn)載地址
.originalUrl("https://www.tianapi.com/")
.isPublish(1)
.keywords("每日新聞,穆雄雄,新聞簡報(bào),早安")
.title(todayDate+"新聞簡要")
.avatar(imgUrl.toString())
.content(newContent)
.build();
baseMapper.insert(entity);
//添加標(biāo)簽
tagsMapper.saveArticleTags(entity.getId(),new ArrayList<Long>() {{add(63L);}});
log.info("每日新聞添加到文章成功:"+ JSON.toJSONString(entity));
contentObject.put("aid",entity.getId());
//調(diào)用推送到微信的方法
sendWechat(contentObject);
return ResponseResult.success("發(fā)送成功");
}
需要注冊的是:記得吧DAYS_NEWS_API 和 TIAN_KEY的值換一下,換成你自己的,然后生成的文章如下所示:

到此這篇關(guān)于Java實(shí)現(xiàn)將每日新聞添加到自己博客中的文章就介紹到這了,更多相關(guān)Java添加新聞到博客內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring security登錄認(rèn)證授權(quán)的項(xiàng)目實(shí)踐
SpringSecurity主要實(shí)現(xiàn)了認(rèn)證(Authentication)和授權(quán)(AccessControl),本文就來介紹一下spring security登錄認(rèn)證授權(quán)的項(xiàng)目實(shí)踐,感興趣的可以了解一下2025-01-01
JavaSE實(shí)現(xiàn)電影院系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了JavaSE實(shí)現(xiàn)電影院系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
Java利用Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器的示例代碼
這篇文章主要介紹了Java利用Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Java游戲開發(fā)之俄羅斯方塊的實(shí)現(xiàn)
俄羅斯方塊是一個(gè)最初由阿列克謝帕吉特諾夫在蘇聯(lián)設(shè)計(jì)和編程的益智類視頻游戲。本文和大家分享了利用Java語言實(shí)現(xiàn)這一經(jīng)典的小游戲的示例代碼,需要的可以參考一下2022-05-05
springboot+vue實(shí)現(xiàn)七牛云頭像的上傳
本文將介紹如何在Spring Boot項(xiàng)目中利用七牛云進(jìn)行圖片上傳并將圖片存儲(chǔ)在云存儲(chǔ)中,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
javaWeb如何實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼詳解
這篇文章主要給大家介紹了關(guān)于javaWeb如何實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
JAVA基于Redis實(shí)現(xiàn)計(jì)數(shù)器限流的使用示例
計(jì)數(shù)器法是限流算法里最簡單也是最容易實(shí)現(xiàn)的一種算法,本文主要介紹了JAVA基于Redis實(shí)現(xiàn)計(jì)數(shù)器限流的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
SpringBoot配置類中@Configuration和@Bean的作用
這篇文章主要介紹了SpringBoot配置類中@Configuration和@Bean的作用,@Configuration 指明當(dāng)前類是一個(gè)配置類來替代之前的Spring配置文件,Spring boot的配置類,相當(dāng)于Spring的配置文件,需要的朋友可以參考下2023-11-11

