广告位联系
返回顶部
分享到

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

java 来源:互联网 作者:佚名 发布时间:2023-01-01 17:28:46 人浏览
摘要

最近新整了个博客网站,同事在gitee上找的,还不错,gitee上的地址在这里:拾壹博客管理系统。 别人的业务,再好也有不满足自己的地方,所以我就拉下来源码看了看,改了些bug,其

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

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

效果图如下:

每天定时凌晨5.20推送。

why

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

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

思路

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

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

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

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

代码实现

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

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

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

2. 在java中实现调用该接口,拿到数据发布到博客中。

关键代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

/**

    * 获取每日新闻,添加到文章里面

    * @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的值换一下,换成你自己的,然后生成的文章如下所示:


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计