Java实现将每日新闻添加到自己博客中

 更新时间:2022年12月30日 14:51:37   作者:穆雄雄  
这篇文章主要为大家详细介绍了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添加新闻到博客内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java利用哈夫曼编码实现字符串压缩

    Java利用哈夫曼编码实现字符串压缩

    赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法。本文将利用哈夫曼树实现哈夫曼编码进行字符串压缩,需要的可以参考一下
    2022-09-09
  • MyBatis查询 、修改 、删除操作示例代码

    MyBatis查询 、修改 、删除操作示例代码

    MyBatis 作为一款灵活的持久层框架,提供了直接编写 SQL 语句的能力,避免了其他 ORM 框架可能带来的性能和功能限制,本文介绍 MyBatis 中如何高效执行这三种操作,并通过代码示例展示最佳实践,感兴趣的朋友一起看看吧
    2024-08-08
  • java实现解析json复杂数据的第三种思路详解

    java实现解析json复杂数据的第三种思路详解

    这篇文章主要为大家信息介绍了java实现解析json复杂数据的第三种思路,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • Spring RestTemplate远程调用过程

    Spring RestTemplate远程调用过程

    这篇文章主要介绍了Spring RestTemplate远程调用过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java中的setting和getting使用方法

    Java中的setting和getting使用方法

    为了保障数据的安全性,通常将数据成员定义为private(封装或私有化),这样外部代码就无法直接访问这些数据,只能通过类提供的公共方法来进行访问,这种方法主要包括setter和getter方法,以及构造方法,setter方法用于给私有属性赋值
    2024-09-09
  • Java中I/O流读取数据不完整的问题解决

    Java中I/O流读取数据不完整的问题解决

    本文主要介绍了ava中I/O流读取数据不完整的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Java使用Scanner类获取用户输入实例详解

    Java使用Scanner类获取用户输入实例详解

    在本篇文章里小编给大家整理了关于Java使用Scanner类获取用户输入实例内容,有兴趣的朋友们学习下。
    2019-11-11
  • spring boot实战之使用JSP的示例

    spring boot实战之使用JSP的示例

    本篇文章主要介绍了spring boot实战之使用JSP的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • MyBatis如何使用PageHelper实现分页查询

    MyBatis如何使用PageHelper实现分页查询

    这篇文章主要介绍了MyBatis如何使用PageHelper实现分页查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • springboot3请求参数种类及接口测试案例小结

    springboot3请求参数种类及接口测试案例小结

    这篇文章主要介绍了springboot3请求参数种类及接口测试案例小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10

最新评论