Java實現將每日新聞添加到自己博客中

前言

最近新整瞭個博客網站,同事在gitee上找的,還不錯,gitee上的地址在這裡:拾壹博客管理系統。

別人的業務,再好也有不滿足自己的地方,所以我就拉下來源碼看瞭看,改瞭些bug,其中我覺得這個需求是有人需要用到的——每日新聞推送到微信群中。

效果圖如下:

每天定時凌晨5.20推送。

why

在說功能之前先說說為什麼要做這麼件事兒,之前我是從比的微信群中將每日新聞復制到自己的群的,因為群需要互動互動,不能成為一個死群,所以我就每天手動發,偶爾有幾次不發,就有群友問我,為啥不發瞭呢,他們覺的這個東西還挺好(雖然發瞭之後也沒有人回復,大傢可能隻是在默默的觀察關註吧)

於是後面我就每天都發,但是吧,手動發,有時候記得,有時候忘記,並且別的群不發的話,我就沒地方找去,還得自己去網上找,所以就想著自己寫一個吧。

思路

網上有專門的這種接口,用來拿到每日新聞簡要

將新聞整理成一篇文章,發送到博客中

利用別的途徑,將新聞標題(因為微信發文字會有字數限制),推送到群中(智能微秘書)

然後按照這個思路我們去實現。

代碼實現

1.首先我們去天行數據,註冊一個賬號,然後找到每日新聞,申請改接口。

註冊地址:天行數據,找到接口:

申請下來之後,去個人中心,看看自己的key是多少,我們在請求接口的時候需要拿著這個key去。

2. 在java中實現調用該接口,拿到數據發佈到博客中。

關鍵代碼如下:

 /**
     * 獲取每日新聞,添加到文章裡面
     * @param
     * @return
     */
    @Override
    public ResponseResult getDaysNews() {
        //調用每日簡報的接口
        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);
        //發送到微信群裡面的信息
        JSONObject contentObject = new JSONObject();
        contentObject.put("todayDate",todayDate);
        JSONArray array = new JSONArray();

        //遍歷接口返回來的json數據
        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/>");
            //標題
            arrayObject.put("title",itemObject.getString("title"));
            //內容
            arrayObject.put("digest",itemObject.getString("digest"));
            //時間
            arrayObject.put("mtime",itemObject.getString("mtime"));
            array.add(arrayObject);
        });
        contentObject.put("list",array);
        stringBuilder.append("(本文所有數據均來自天行數據api,如有侵權,聯系即刪~)");
        //將拿到的內容放在Markdown中
        String newContent = stringBuilder.toString();
        MutableDataSet options = new MutableDataSet();
        String markdown = FlexmarkHtmlConverter
                .builder(options)
                .build()
                .convert(newContent)
                .replace("lang-java","java");
        //構建文章的實體
        BlogArticle entity = BlogArticle.builder()
                .userId(7L)
                .contentMd(markdown)
                .categoryId(DAYYS_NEWS)
                .isOriginal(YesOrNoEnum.NO.getCode())
                //轉載地址
                .originalUrl("https://www.tianapi.com/")
                .isPublish(1)
                .keywords("每日新聞,穆雄雄,新聞簡報,早安")
                .title(todayDate+"新聞簡要")
                .avatar(imgUrl.toString())
                .content(newContent)
                .build();
        baseMapper.insert(entity);
        //添加標簽
        tagsMapper.saveArticleTags(entity.getId(),new ArrayList<Long>() {{add(63L);}});
        log.info("每日新聞添加到文章成功:"+ JSON.toJSONString(entity));
        contentObject.put("aid",entity.getId());
        //調用推送到微信的方法
        sendWechat(contentObject);
        return ResponseResult.success("發送成功");
    }

需要註冊的是:記得吧DAYS_NEWS_API 和 TIAN_KEY的值換一下,換成你自己的,然後生成的文章如下所示:

到此這篇關於Java實現將每日新聞添加到自己博客中的文章就介紹到這瞭,更多相關Java添加新聞到博客內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: