吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10718|回复: 35
收起左侧

[其他原创] 开源一个天气APP,Mini天气

  [复制链接]
初亦泽 发表于 2020-2-29 20:43
本帖最后由 初亦泽 于 2020-2-29 23:02 编辑

Mini天气

by 亦泽


Mini天气是我抓取腾讯天气API之后,制作的一款天气APP,现在开源,支持所抓取的接口支持大部分生活中需要的信息,目前在Mini天气中,添加了必要的信息,后续还会完善。

成品地址:
https://github.com/bestyize/MiniWeather/tree/8ad815282f05ea7065f5d94a2e865db353fc94bb/app/release

开源地址:https://github.com/bestyize/MiniWeather

效果截图

效果截图

1、腾讯天气API抓取


天气状况请求接口

这是腾讯天气的通用请求接口

https://wis.qq.com/weather/common
请求参数
参数 含义
source 请求来源,可以填 pc 即来自PC端
province 省,比如山东省
city 市,比如临沂市
country 县区,比如兰山区
weather_type 请求的天气类型,这里是最重要的,参数有:observe(观测站数据,例如温度大气压),forecast_1h(按小时预报),forecast_24h(按天预报),index(指数,比如穿衣指数等),alarm(警告),limit,tips(小提示),rise(日出日落,月出月落),air(空气质量)等
使用说明

GET请求后面的weather_type内容参数之间用 | 分割,然后再进行URL编码。province和city也要经过URL编码。

代码实现
    private static String txWeatherURLBuilder(Map<String,String> map){
        StringBuilder sb=new StringBuilder();
        for(String key:map.keySet()){
            try {
                sb.append(key+"=");
                sb.append(URLEncoder.encode(map.get(key),"utf-8"));
                sb.append("&");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        sb.append("source=pc");
        String baseApi="https://wis.qq.com/weather/common";
        return baseApi+"?"+sb.toString();
    }

    public static String txWeatherURLBuilder(CityShip ship){
        Map<String,String> map=new HashMap<String, String>();
        map.put("province",ship.province);
        map.put("city",ship.city);
        map.put("country",ship.country);
        //默认获取观测站的情况,一小时天气预报,24 小时天气预报,指数,小贴士,日出日落,空气质量
        map.put("weather_type","observe|forecast_1h|forecast_24h|index|tips|rise|air");
        return txWeatherURLBuilder(map);
    }

    public static String txWeatherURLBuilder(CityDetailBean bean){
        Map<String,String> map=new HashMap<String, String>();
        map.put("province",bean.getProvince());
        map.put("city",bean.getCity());
        map.put("country",bean.getCountry());
        //默认获取观测站的情况,一小时天气预报,24 小时天气预报,指数,小贴士,日出日落,空气质量
        map.put("weather_type","observe|forecast_1h|forecast_24h|index|tips|rise|air");
        return txWeatherURLBuilder(map);
    }

2、城市列表的接口

下面是通用接口

https://wis.qq.com/city/like
参数 含义
source 请求来源,可以填 pc 即来自PC端
city 请求的位置,比如临沂,或者兰山区,返回一个模糊匹配结果集

请求示例

https://wis.qq.com/city/like?source=pc&city=临沂

3、天气图标抓取

天气图标是根据weatherCode字段,然后请求不同的链接,weatherCode字段是如同 "00" "01"之类的字符串
比如00表示晴转晴,01表示晴转多云。

判断白天黑夜的方法也很简单,抓取时间转为小时,白天时间为06:00-18:00

下面是使用方法

    public static String getWeatherStateIcon(String weatherCode,boolean day){
        if(day){
            return "http://mat1.gtimg.com/pingjs/ext2020/weather/pc/icon/weather/day/"+weatherCode+".png";
        }else {
            return "http://mat1.gtimg.com/pingjs/ext2020/weather/pc/icon/weather/night/"+weatherCode+".png";
        }
    }




免费评分

参与人数 11吾爱币 +17 热心值 +11 收起 理由
lvhao3456 + 1 + 1 我很赞同!
zhinian1 + 1 + 1 谢谢@Thanks!
小橙紫 + 2 + 1 用心讨论,共获提升!
知意执意 + 1 + 1 谢谢@Thanks!
Carrot-Chou + 3 + 1 牛B完事
wushaominkk + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
北辰東閣 + 1 我很赞同!
多幸运遇见baby + 1 + 1 鼓励转贴优秀软件安全工具和文档!
启示 + 1 + 1 热心回复!
东哲他爹 + 1 + 1 我很赞同!
你好,再见 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 初亦泽 发表于 2020-4-14 11:33
527979279952 发表于 2020-4-12 14:08
可不可以显示昨天的天气

可以,在下面七天天气预报里面实际上有8个,也就是加上了昨天的天气预报
527979279952 发表于 2020-4-14 11:54
初亦泽 发表于 2020-4-14 11:33
可以,在下面七天天气预报里面实际上有8个,也就是加上了昨天的天气预报

VERY GOOD!!!
梦幻王子刘 发表于 2020-2-29 20:56
hunter0611 发表于 2020-2-29 21:03
谢谢分享
andyle 发表于 2020-2-29 21:03
感谢分享,支持一下
lss1155 发表于 2020-2-29 21:04
支持楼主,学习了
启示 发表于 2020-2-29 21:27
感谢分享,学习
多幸运遇见baby 发表于 2020-3-1 09:27
鼓励转贴优秀软件安全工具和文档!
多幸运遇见baby 发表于 2020-3-1 09:28
效果图挂了
VICENAYA 发表于 2020-3-1 10:30
支持一个哦
suifeng165 发表于 2020-3-3 20:45
支持开源共享!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表