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

作者:穆雄雄 时间:2023-02-08 16:20:43 

前言

最近新整了个博客网站,同事在gitee上找的,还不错,gitee上的地址在这里:拾壹博客管理系统。

别人的业务,再好也有不满足自己的地方,所以我就拉下来源码看了看,改了些bug,其中我觉得这个需求是有人需要用到的——每日新闻推送到微信群中。

效果图如下:

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

每天定时凌晨5.20推送。

why

在说功能之前先说说为什么要做这么件事儿,之前我是从比的微信群中将每日新闻复制到自己的群的,因为群需要互动互动,不能成为一个死群,所以我就每天手动发,偶尔有几次不发,就有群友问我,为啥不发了呢,他们觉的这个东西还挺好(虽然发了之后也没有人回复,大家可能只是在默默的观察关注吧)

于是后面我就每天都发,但是吧,手动发,有时候记得,有时候忘记,并且别的群不发的话,我就没地方找去,还得自己去网上找,所以就想着自己写一个吧。

思路

网上有专门的这种接口,用来拿到每日新闻简要

将新闻整理成一篇文章,发送到博客中

利用别的途径,将新闻标题(因为微信发文字会有字数限制),推送到群中(智能微秘书)

然后按照这个思路我们去实现。

代码实现

1.首先我们去天行数据,注册一个账号,然后找到每日新闻,申请改接口。

注册地址:天行数据,找到接口:

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

申请下来之后,去个人中心,看看自己的key是多少,我们在请求接口的时候需要拿着这个key去。

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

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实现将每日新闻添加到自己博客中

来源:https://blog.csdn.net/qq_34137397/article/details/128361018

标签:Java,添加,新闻,博客
0
投稿

猜你喜欢

  • 解决Android屏幕四周闪现红框的问题

    2023-09-03 19:17:01
  • C#身份证验证小例子

    2022-06-22 05:22:01
  • C#保存listbox中数据到文本文件的方法

    2023-02-20 10:37:27
  • Android自定义view实现有header和footer作为layout使用的滚动控件

    2023-07-31 19:29:54
  • Java 设计模式之责任链模式及异步责任链详解

    2021-08-08 19:14:23
  • 基于Ok+Rxjava+retrofit实现断点续传下载

    2021-08-27 02:21:49
  • Java拦截器Interceptor和过滤器Filte的执行顺序和区别

    2022-06-01 20:37:11
  • 利用Jetpack Compose绘制可爱的天气动画

    2022-04-06 18:50:35
  • Java 定时任务技术趋势详情

    2021-10-29 14:48:13
  • Java 栈与队列超详细分析讲解

    2023-08-15 01:09:07
  • Java 创建两个线程模拟对话并交替输出实现解析

    2022-01-10 02:37:02
  • MybatisPlus实现对象嵌套关联查询一对多List集合查询

    2022-04-27 16:00:12
  • SpringCloud Feign多参数传递及需要注意的问题

    2022-05-25 11:11:58
  • 如何将写好的.py/.java程序变成.exe文件详解

    2022-04-06 09:22:14
  • java.util.concurrent.ExecutionException 问题解决方法

    2022-12-09 21:15:04
  • Eclipse设置断点调试的方法

    2022-11-05 07:45:56
  • Spring Utils工具类常用方法实例

    2023-05-01 05:37:37
  • Android UI设计与开发之仿人人网V5.9.2最新版引导界面

    2022-10-10 17:34:16
  • Java精确抽取网页发布时间

    2022-03-24 17:20:11
  • Spring Boot与RabbitMQ结合实现延迟队列的示例

    2021-08-31 02:02:01
  • asp之家 软件编程 m.aspxhome.com