Java實現(xiàn)將每日新聞添加到自己博客中
前言
最近新整了個博客網(wǎng)站,同事在gitee
上找的,還不錯,gitee上的地址在這里:拾壹博客管理系統(tǒng)。
別人的業(yè)務(wù),再好也有不滿足自己的地方,所以我就拉下來源碼看了看,改了些bug
,其中我覺得這個需求是有人需要用到的——每日新聞推送到微信群中。
效果圖如下:
每天定時凌晨5.20推送。
why
在說功能之前先說說為什么要做這么件事兒,之前我是從比的微信群中將每日新聞復(fù)制到自己的群的,因為群需要互動互動,不能成為一個死群,所以我就每天手動發(fā),偶爾有幾次不發(fā),就有群友問我,為啥不發(fā)了呢,他們覺的這個東西還挺好(雖然發(fā)了之后也沒有人回復(fù),大家可能只是在默默的觀察關(guān)注吧)
于是后面我就每天都發(fā),但是吧,手動發(fā),有時候記得,有時候忘記,并且別的群不發(fā)的話,我就沒地方找去,還得自己去網(wǎng)上找,所以就想著自己寫一個吧。
思路
網(wǎng)上有專門的這種接口,用來拿到每日新聞簡要
將新聞?wù)沓梢黄恼?,發(fā)送到博客中
利用別的途徑,將新聞標(biāo)題(因為微信發(fā)文字會有字?jǐn)?shù)限制),推送到群中(智能微秘書)
然后按照這個思路我們?nèi)崿F(xiàn)。
代碼實現(xiàn)
1.首先我們?nèi)ヌ煨袛?shù)據(jù),注冊一個賬號,然后找到每日新聞,申請改接口。
注冊地址:天行數(shù)據(jù),找到接口:
申請下來之后,去個人中心,看看自己的key是多少,我們在請求接口的時候需要拿著這個key
去。
2. 在java
中實現(xiàn)調(diào)用該接口,拿到數(shù)據(jù)發(fā)布到博客中。
關(guān)鍵代碼如下:
/** * 獲取每日新聞,添加到文章里面 * @param * @return */ @Override public ResponseResult getDaysNews() { //調(dià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("請求每日新聞的接口出錯,出錯信息:"+body); return ResponseResult.error(); } log.error("請求每日新聞的接口成功:"+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")); //時間 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)建文章的實體 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("每日新聞,穆雄雄,新聞簡報,早安") .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實現(xiàn)將每日新聞添加到自己博客中的文章就介紹到這了,更多相關(guān)Java添加新聞到博客內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實現(xiàn)解析json復(fù)雜數(shù)據(jù)的第三種思路詳解
這篇文章主要為大家信息介紹了java實現(xiàn)解析json復(fù)雜數(shù)據(jù)的第三種思路,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01Spring?RestTemplate遠(yuǎn)程調(diào)用過程
這篇文章主要介紹了Spring?RestTemplate遠(yuǎn)程調(diào)用過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Java中I/O流讀取數(shù)據(jù)不完整的問題解決
本文主要介紹了ava中I/O流讀取數(shù)據(jù)不完整的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05MyBatis如何使用PageHelper實現(xiàn)分頁查詢
這篇文章主要介紹了MyBatis如何使用PageHelper實現(xiàn)分頁查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11springboot3請求參數(shù)種類及接口測試案例小結(jié)
這篇文章主要介紹了springboot3請求參數(shù)種類及接口測試案例小結(jié),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-10-10