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

License

MIT

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
pyweathercn-1.0.3.tar.gz (30.3 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page