• 微信公众号推送天气(最近超火的小玩意)


    在抖音上看到了,然后自己试了试。(在评论区有开源代码,仅供参考)

    首先,这个东西并不太难,毕竟代码大佬们已经开源了,我们只需要会改写相关参数就行,我们也算是站在巨人的肩膀上砥砺前行,话不多说,接下来开始正题~

    一、微信公众测试号申请

    首先,我们需要到微信公众平台扫码申请一个测试号,因为我们这个基本就是个人用,那么正常情况下只能申请订阅号,但是订阅号限制太多,并不能实现我们这个每天向别人推送的目的,服务号又只能用需要企业认证,所以我们这里只能用官方提供的测试号。

    申请网址在这里

    微信公众平台

    我们用微信扫码后我们就可以得到我们想要的东西了(下面这两个很重要)

    然后我们向下滚动

    找到这个后我们扫描二维码可以得到我们想要的微信号(这个微信号跟我们微信中的那个不一样) 

     然后我们在向下滚动我们就可以看到这个模板,我们可以把我们想要的编辑上去

    {{riqi.DATA}} {{beizhu.DATA}} 天气:{{tianqi.DATA}} 风向:{{winddir.DATA}} 风级:{{windclass.DATA}} 最低气温: {{low.DATA}}度 最高气温: {{high.DATA}}度 今天是我们恋爱的第{{lianai.DATA}}天 距离小宝生日还有{{shengri2.DATA}}天 距离我的生日还有{{shengri1.DATA}}天 {{caihongpi.DATA}} 今日运势: {{type.DATA}} 每日一句: {{en.DATA}} {{zh.DATA}} {{jinju.DATA}}

    以上就是我的格式,括号中的都是服务器中的资源。可以根据自己的需要更改。

    下面我们开始将服务器的实现过程。

    二、服务器代码

    首先我们这里用到了两个平台接口,百度天气和天行数据。

    百度天气我们需要先注册成为开发者,再在控制台添加新项目获取ak(我们需要的东西)

    注册开发者成功后在我的应用下创建新项目后我们可以得到AK(很重要)

    如果想要先测试我们可以先设置ip为0.0.0.0/0(里面也有提示,这个供我们测试用)

    1. /**
    2. * 天气工具接口
    3. */
    4. public class WeatherUtils {
    5. /**
    6. * 测试
    7. * @param args
    8. */
    9. public static void main(String[] args) {
    10. System.out.println(getWeather());
    11. }
    12. /**
    13. * 获取天气
    14. * @return
    15. */
    16. public static Weather getWeather(){
    17. RestTemplate restTemplate = new RestTemplate();
    18. Map map = new HashMap();
    19. map.put("district_id","130100"); // 地区行政代码
    20. map.put("data_type","all");//这个是数据类型
    21. map.put("ak","xxx");//百度天气ak码
    22. String res = restTemplate.getForObject(
    23. "https://api.map.baidu.com/weather/v1/?district_id={district_id}&data_type={data_type}&ak={ak}",
    24. String.class,
    25. map);
    26. JSONObject json = JSONObject.parseObject(res);
    27. JSONArray forecasts = json.getJSONObject("result").getJSONArray("forecasts");
    28. List weathers = forecasts.toJavaList(Weather.class);
    29. JSONObject now = json.getJSONObject("result").getJSONObject("now");
    30. Weather weather = weathers.get(0);
    31. weather.setText_now(now.getString("text"));
    32. weather.setTemp(now.getString("temp"));
    33. weather.setWind_class(now.getString("wind_class"));
    34. weather.setWind_dir(now.getString("wind_dir"));
    35. return weather;
    36. }
    37. }

     我们用到的第二个平台是天行数据天行数据TianAPI - 开发者API数据平台

     我们注册后我们也是在控制台申请接口

     这个平台挺好的,还提供了调试功能。

    他的代码如下(部分代码)

    1. /**
    2. * 星座接口
    3. * @return
    4. */
    5. public static Map getXZ() {
    6. String httpUrl = "http://api.tianapi.com/star/index?key=317dcef343a561130b81a950990603eb&astro=白羊座";
    7. BufferedReader reader = null;
    8. String result = null;
    9. StringBuffer sbf = new StringBuffer();
    10. try {
    11. URL url = new URL(httpUrl);
    12. HttpURLConnection connection = (HttpURLConnection) url
    13. .openConnection();
    14. connection.setRequestMethod("GET");
    15. InputStream is = connection.getInputStream();
    16. reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    17. String strRead = null;
    18. while ((strRead = reader.readLine()) != null) {
    19. sbf.append(strRead);
    20. sbf.append("\r\n");
    21. }
    22. reader.close();
    23. result = sbf.toString();
    24. } catch (Exception e) {
    25. e.printStackTrace();
    26. }
    27. JSONObject jsonObject = JSONObject.parseObject(result);
    28. JSONArray newslist = jsonObject.getJSONArray("newslist");
    29. String en = newslist.getJSONObject(8).getString("type");
    30. String zh = newslist.getJSONObject(8).getString("content");
    31. Map map = new HashMap<>();
    32. map.put("type",zh);
    33. map.put("content",en);
    34. return map;
    35. }

    实现效果:

     我们还可以实现定时(在服务器上部署)

    1. /**
    2. * 定时每天早上七点半
    3. * 从左到右分别代表秒 分 时 日 月 星期 年(可不填)
    4. * *表示任意
    5. */
    6. @Scheduled(cron = "0 30 7 * * ?")
    7. public void goodMorning(){
    8. Pusher.push();
    9. }

    这是java的springboot框架实现的。本文参考自公众号推送早安问候以及天气预报(JAVA)_cv展示的博客-CSDN博客_微信公众号自动推送天气

    在其基础上加了一些更改。

  • 相关阅读:
    MySQL数据库调优策略
    The Sandbox 归属周来啦!
    移动Web:Less 预处理及Koala工具
    2.线性表——数据结构学习
    正则表达式.exec()
    Ubuntu性能分析-ftrace 底层驱动
    省钱兄短剧短视频小程序是如何运营的?
    Uni-app中实现数据选择并回传给上个页面的方法
    【Vue-Element-UI -el-tree数据格式与组件中的格式不一样】
    python3多进程和多线程使用场景如何区分
  • 原文地址:https://blog.csdn.net/weixin_53011574/article/details/126493614