Skip to main content

A package to use weather.com.cn forecast

Project description

https://travis-ci.org/BennyThink/pyweathercn.svg?branch=master https://badge.fury.io/py/pyweathercn.svg

An weather forecast library from www.weather.com.cn

Installation

To install this package, simply use pip: $ pip3 install pyweathercn.

There’s no plan to support Python 2.

Example

Python Console example:

>>> import pyweathercn
>>> pyweathercn.Weather('重庆').temp()
'重庆:20'
>>> w = pyweathercn.Weather('北京')
>>> w.data
{'city': '北京', 'aqi': '73', 'tip': '紫外线指数中等涂擦SPF大于15、PA+防晒护肤品。穿衣指数较舒适建议穿薄外套或牛仔裤等服装。', 'temp': '11', 'forecast': [{'date': '17日(今天)', 'type': '晴', 'temp': '4℃', 'wind': '无持续风向 <3级'}, {'date': '18日(明天)', 'type': '晴', 'temp': '18℃/5℃', 'wind': '南风 <3级'}, {'date': '19日(后天)', 'type': '多云', 'temp': '18℃/6℃', 'wind': '西南风 <3级'}, {'date': '20日(周六)', 'type': '多云', 'temp': '18℃/7℃', 'wind': '南风 <3级'}, {'date': '21日(周日)', 'type': '多云', 'temp': '18℃/8℃', 'wind': '南风 <3级'}, {'date': '22日(周一)', 'type': '多云转晴', 'temp': '19℃/7℃', 'wind': '南风 <3级'}, {'date': '23日(周二)', 'type': '晴', 'temp': '19℃/5℃', 'wind': '西风 <3级'}]}
>>> w.today()
'北京:23日(今天)晴15℃西南风 3-4级'
>>> w.tomorrow(True)
{'date': '24日(明天)', 'type': '晴', 'temp': '31℃/17℃', 'wind': '南风 3-4级'}
>>> w.tip()
'北京温馨提示:紫外线指数很强涂擦SPF20以上,PA++护肤品,避强光。穿衣指数热适合穿T恤、短薄外套等夏季服装。'
>>> w.forecast(False,5)
'北京:28日(周一)多云25℃/15℃东北风 <3级'

Run as a server:

In order for better performance, please install Redis.

import pyweathercn
# running on http://127.0.0.1:8888
pyweathercn.server(host='127.0.0.1')
# running on http://0.0.0.0:3333
pyweathercn.server(3333)
# support ssl: https://www.example.com:8888
# if you fail to listen on www.example.com, you may try 0.0.0.0 instead.
pyweathercn.server('8888', 'www.example.com', ssl_options={
    "certfile": "fullchain.pem",
    "keyfile": "privkey.pem"})

To access REST API, you may try GET parameter, POST form-data/url-encoded form-data and POST JSON.

Mandatory parameter is city, optional parameter is day.

GET: http://127.0.0.1:8888/weather?city=上海&day=2

POST:http://127.0.0.1:8888/weather with form/json key-value:{“city”,”深圳”}

Run as a server(with API authentication):

import pyweathercn
# running on http://0.0.0.0:3333
pyweathercn.server(auth='/path/to/database.sqlite')

Please refer to sample.sqlite for database format. In this sample:

  • times: total times for access this API

  • restrict: set to 0 avoid time limit

  • key: no more than 32 characters.

You only need to add a parameter called key for your request.

About cURL

If you’re using cURL on Windows(such as git bash, MinGW), you may receive an HTTP 400.

This is because cURL will try to encode query parameters by GBK instead of UTF-8. This might be an implementation bug on Windows, I’m looking on it.

For now the best thing you should do is use url-encode for all your city name.

TODO

  • add server deployment: systemd and docker

  • cURL compatibility

Design

RESETful API Specification

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyweathercn-1.0.8.tar.gz (31.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page