当前位置: 首页 > 后端技术 > Java

Java实现每天给女朋友的微信发早安等微信

时间:2023-04-01 18:10:30 Java

前言据说这个功能最近在抖音上很火,我没有抖音,没看到。但是我在掘金和CSDN上看了,确实有很多相关的案例,但是大家都用的是微信服务号。在我看来,效果很差。其实我的初衷是每天定时给群里推送消息。这个原因在之前的文章中也有提到,这里不再赘述。实现推送到群后,我想,我能不能每天给指定的人发消息?在网上搜了一下,发现有各种各样的实现方法,但是我不喜欢,于是找了一个自己写了一个。网上最常见的情况可能是使用微信服务号推送信息,如图:缺点如下:需要点击订阅号才能看到,没有起到吸引的作用.申请测试服务账号不知道过期多久,你说停止我就停止给你定制的需求。有些人不能满足这一点,所以我自己找到了一种方法。昨晚刚写完,测试了一下。效果相当好。如下图所示:(有点恶心~)实现方法下面来看看它是如何实现的。准备注册一个智能微秘书账号,花20块钱开会员(20块钱一点都不多)注册一个天行数据的账号,申请三个接口(早安消息、每日新闻、本地爱心chat),也可以自己添加其他有意义的内容,直接申请接口即可。准备一个微信号,可以用现有的,也可以申请一个。准备一台服务器,准备一个java项目,在服务器上运行。假设你除了4和5以外的准备工作都已经完成,下面我们从代码层面来看一下如何实现。实现原理调用天行数据的api获取自己想要的数据,封装后调用微秘书只能使用的接口,实现给微信好友发送消息给controller类添加定时任务。实现定时发送的关键代码如下:调用天行数据接口获取早安信息:/***获取每天的早安信息**/publicstaticStringgetGoodMorning(){Stringpath="zaoan/index";//调用每日简报body的接口String=HttpUtil.createGet(Constants.TIAN_XING_API+path+"?key="+TIAN_KEY).execute().body();JSONObjectjsonObjectResult=JSON.parseObject(body);整数代码=jsonObjectResult.getInteger("code");if(code!=200){log.error("请求每日新闻的接口出错,错误信息:"+body);return"一切都是最好的安排~";}log.info("请求每日新闻每日新闻接口成功:"+body);JSONObjectresultObject=jsonObjectResult.getJSONObject("结果");returnresultObject.getString("content");}复制代码调用天行数据接口获取土味情话:/***获取每日土味情话**/publicstaticStringgetLoveWords(){Stringpath="说爱/索引”;//调用每日简报接口Stringbody=HttpUtil.createGet(Constants.TIAN_XING_API+path+"?key="+TIAN_KEY).execute().body();JSONObjectjsonObjectResult=JSON.parseObject(body);整数代码=jsonObjectResult.getInteger("code");if(code!=200){log.error("请求每日新闻的接口出错,错误信息:"+body);return"一切都是最好的安排~";}JSONObjectresultObject=jsonObjectResult.getJSONObject("result");log.info("每日新闻接口请求成功:"+resultObject);returnresultObject.getString("content");}复制代码调用天行数据接口获取天气预报:/***获取天气预报**/publicstaticJSONObjectgetWeather(){Stringpath="tianqi/指数”;//调用每日简报接口Stringbody=HttpUtil.createGet(Constants.TIAN_XING_API+path+"?key="+TIAN_KEY+"&type=1&city=370100").execute().body();JSONObjectjsonObjectResult=JSON.parseObject(body);整数代码=jsonObjectResult.getInteger("代码");if(code!=200){log.error("请求每日新闻的接口出错,错误信息:"+body);返回空值;}返回jsonObjectResult.getJSONObject("结果");/**{"code":200,"msg":"success","result":{"date":"2022-12-19","week":"星期一","province":"上海","area":"上海","areaid":"101020100","weather":"晚","weatherimg":"qing.png","weathercode":"qing","real":"3℃","lowest":"2℃","highest":"9℃","wind":"北风","windspeed":"0","windsc":"0级","sunrise":"06:47","sunset":"16:54","moonrise":"","moondown":"","pcpn":"0","uv_index":"0","aqi":"54","quality":"good","vis":"18","humidity":"48","alarmlist":[],"tips":"晴天紫外线水平较高天,所以出门要注意补水和防晒。天气凉爽,一两件羊毛衫、大衣、皮草套装、皮夹克等适合作为春秋装;年老体弱者应穿风衣、羊毛衫等厚实的春秋装。空气质量好,可以参加各种户外活动。疫情防控不松懈,出门请戴好口罩。"}}**/}复制代码日期处理关键代码获取今天星期几/***获取今天汉字星期几*@paramdateTime*@return*@throwsParseException*/publicstaticStringgetDaysByWeekChina(StringdateTime)throwsParseException{Calendarcal=Calendar.getInstance();SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");Datedate=dateFormat.parse(dateTime);cal.setTime(date);intday=cal.get(Calendar.DAY_OF_WEEK);day=day-1;//汉字表示星期Stringweek="";switch(day){case0:week="day";break;case1:week="one";break;case2:week="two";break;case3:week="three";break;case4:week="four";break;case5:week="five";break;案例6:week="six";休息;}returnweek;}复制代码获取周年纪念日的天数(两个日期之差):/***获取两个日期之间的天数**@paramdate1*@paramdate2*@return*/publicstaticintgetDayByTwoDay(Stringdate1,Stringdate2){SimpleDateFormatmyFormatter=newSimpleDateFormat("yyyy-MM-dd");长日=0L;尝试{java.util.Datedate=myFormatter.parse(date1);爪哇。util.Datemydate=myFormatter.parse(date2);天=(date.getTime()-mydate.getTime())/(24*60*60*1000);}赶上(异常e){返回0;}returnday.intValue();}复制代码向指定微信好友推送消息/***每天向微信个人推送指定信息*/@OverridepublicvoidsendWechatToUser(){Stringurl=WEI_MI_SHU_API+"/openapi/v1/聊天/联系”;WeiZhiMiShuVOweiZhiMiShuVO=newWeiZhiMiShuVO();//发送文字信息weiZhiMiShuVO.setType(1);try{//收到发送的消息列表SimpleDateFormatformat=newSimpleDateFormat("yyyy年MM月dd日");SimpleDateFormatformat_h=newSimpleDateFormat("yyyy-MM-dd");//今天的日期StringtoDate=format_h.format(newDate());//恋爱日期Stringlian="2022-03-28";//两个日期之间的天数intcha=DateUtils.getDayByTwoDay(toDate,lian);StringtodayDate=format.format(newDate());//根据阳历计算农历Calendartoday=Calendar.getInstance();Stringweek=DateUtils.getDaysByWeekChina(toDate);today.setTime(DateUtils.chineseDateFormat.parse(todayDate));DateUtilslunar=newDateUtils(今天);Stringnongli=lunar.toString();nongli=nongli.substring(nongli.indexOf("年")+1);StringBuildersb=newStringBuilder();sb.append("亲爱的老婆~早\n\n").append("充满希望的一天又开始了,今天我会一直开心的,别生我气~").append("\n\n今天是:").append(todayDate).append(",week").append(week).append(",农历").append(nongli).append("\n").append("这是我们相爱的第一天:").append(cha).append("Day").append("\n\n");JSONObjecttianqiObject=TianXingApiUtil.getWeather();sb.append("济南当前天气:").append(tianqiObject.getString("天气")).append("\n").append("当前温度:").append(tianqiObject.getString("real")).append("\n").append("今日最高气温:").append(tianqiObject.getString("highest")).append("\n").append("最低气温:").append(tianqiObject.getString("最低")).append("\n").append("风向:").append(tianqiObject.getString("wind")).append("\n").append("空气质量:").append(tianqiObject.getString("quality")).append("\n").append("空气质量指数:").append(tianqiObject.getString("aqi")).append("\n").append("Tips:").append(tianqiObject.getString("tips"));//TianXingApiUtil.getLoveWords()).append("\n\n【早安消息】").append(goodMorning());weiZhiMiShuVO.setContent(sb.toString());for(Stringstr:SEND_USER){JSONObjectobject=newJSONObject();object.put("apiKey",WEI_MI_SHU_KEY);//好友昵称object.put("name",str);//好友备注object.put("alias",str);object.put("message",weiZhiMiShuVO);Stringbody=HttpUtil.createPost(url).body(JSON.toJSONString(object)).execute().body();System.out.println("传入的参数是:"+JSON.toJSONString(object));System.out.println("发送成功了吗?"+body);}}catch(ParseExceptione){e.printStackTrace();}}复制代码说明:WeiZhiMiShuVO类可以参考文章:java实现定时发消息到微信群??中涉及的常量放在常量类,SEND_USER是要发给微信好友的好友昵称,不是备注哈智能微秘书接口地址:接口地址然后我们在controller中调用这个方法实现:/***发送消息给指定人*/@GetMapping(value="/sendWechatToUser")@Scheduled(cron="008**?")publicvoidsendWechatToUser(){articleService.sendWechatToUser();}复制代码cron="008?是一个玉米词,意思是每天早上8:00向指定的微信好友推送消息。作者:穆雄雄链接:https://juejin.cn/post/717988...来源:稀土掘金版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。