11<div align =" center " >
22
3- # 新冠肺炎实时接口 {docsify-ignore}
3+ # 新冠肺炎实时接口 : id =intro {docsify-ignore}
44
55<p >
66 <!-- Place this tag where you want the button to render. -->
2828本项目的数据来源为[ ` 丁香园 ` ] ( http://ncov.dxy.cn/ncovh5/view/pneumonia ) ,定时获取疫
2929情数据,保存疫情数据变更情况,以备跟踪研究和数据图表化展示。
3030
31+ 由于现在疫情高发地已从国内转向国外,所以本项目也会逐渐增加* 数据源* 以便提供关于* 国外某国某州(某省)* 的疫情数据接口。
32+
33+ 现已新增美国各州最新疫情以及各州每日疫情统计接口,可前往 [ 各国各州接口] ( #/?id=states ) 查看接口文档。
34+
3135# 快速开始 : id =quick-start
3236
3337请按照以下步骤完成项目的初始化和启动。
3438
35- ## 代码仓库
39+ ## 代码仓库 : id =repo
3640
3741项目开源,需要源代码可以前往仓库自行获取。
3842
3943前往获取源码 [ https://github.com/leafcoder/django-covid19 ] ( https://github.com/leafcoder/django-covid19 ) 。
4044
41- ## 线上示例
45+ ## 线上示例 : id =demo
4246
4347使用本项目的接口开发了一个数据大屏的示例页面,代码在项目根目录的 ` demo/ ` 文件夹中。
4448
4549前往在线示例 [ 新冠肺炎实时数据大屏] ( http://ncov.leafcoder.cn/demo )
4650
51+ [ ![ 在线数据大屏] ( https://raw.githubusercontent.com/leafcoder/django-covid19/master/docs/images/dashboard.png )] ( http://111.231.75.86/dashboard )
52+
4753## 安装 : id =install
4854
4955可以直接通过 ` pip ` 命令安装;
6369
6470## 初始化 : id =init
6571
66- ### 跨域
72+ ### 跨域 : id =corsheaders
6773
6874将应用 ` corsheaders ` 和相关应用添加到你项目配置文件的 ` INSTALLED_APPS ` 。
6975
113119 'Pragma',
114120 )
115121
116- ### 数据库
122+ ### 数据库 : id =database
117123
118124项目示例中使用 ` sqlite3 ` 作为数据库存储数据(推荐使用 ` MySQL ` );
119125
135141 }
136142 }
137143
138- ### 缓存
144+ ### 缓存 : id =cache
145+
146+ > 如果使用* 内存* 等无法跨进程访问的方式作为缓存后端,会导致爬虫更新数据后,缓存并不会自动删除。
147+ > 建议使用 ` Redis ` 等可跨进程访问的缓存后端。
139148
140149项目缓存配置建议使用 ` Redis ` 作为缓存后端(项目也支持* 文件* 、* 内存* 等缓存方式);
141150
151160 }
152161
153162
154- ### 数据库初始化
163+ ### 数据库初始化 : id =migrate
155164
156165并运行以下命令完成项目数据库的初始化;
157166
177186
178187 CRONTAB_LOCK_JOBS = True
179188 CRONJOBS = (
180- # 每分钟抓取一次
181- ('*/1 * * * *', 'django.core.management.call_command', ['crawl']),
182- )
189+ # 每分钟抓取丁香园数据一次
190+ ('*/1 * * * *', 'django.core.management.call_command', ['crawl', 'dxy']),
183191
192+ # 每天下午4-6点间每10分钟抓取 covidtracking 数据一次(covidtracking 每天下午4-5点间更新数据)
193+ # 抓取美国各州疫情数据
194+ ('*/10 16-18 * * *', 'django.core.management.call_command', ['crawl', 'covidtracking'])
184195
185- 要创建自动抓取丁香园新冠数据任务需要运行如下命令,创建定时任务;
196+ )
197+
198+ 要创建自动抓取丁香园、covidtracking 新冠数据任务需要运行如下命令,创建定时任务;
186199
187200 $ ./manage.py crontab add
188201
189- 如果想要立即爬取数据,可通过项目自定义命令获取;如果丁香园数据未发生变更 ,爬虫并不会爬取数据。
202+ 如果想要立即爬取数据,可通过项目自定义命令获取;如果数据未发生变更 ,爬虫并不会爬取数据。
190203
191- $ ./manage.py crawl
204+ $ ./manage.py crawl dxy
205+ $ ./manage.py crawl covidtracking
192206
193207## 项目启动 : id =start
194208
198212
199213运行成功后,通过浏览器访问 [ ` http://localhost:8000/api/statistics/ ` ] ( http://localhost:8000/api/statistics/ ) 即可看到统计数据。
200214
201- # 示例项目
215+ # 示例项目 : id =demo-project
202216
203217通过 ` pip ` 安装好应 ` django_covid19 ` 后,可以直接运行源码文件中的示例项目 ` demo_proj ` 查看效果。
204218
@@ -384,7 +398,7 @@ http://111.231.75.86:8000/api/statistics/
384398]
385399```
386400
387- ## 国家疫情 : id =country
401+ ## 各国疫情 : id =country
388402
389403### 日统计 : id =country-daily
390404
@@ -478,7 +492,7 @@ http://111.231.75.86:8000/api/countries/?continents=南美洲,北美洲&countryN
478492]
479493```
480494
481- ### 国家详情 : id =country-detail
495+ ### 各国详情 : id =country-detail
482496
483497根据国家名称获取某个国家的疫情统计数据;
484498
@@ -514,9 +528,9 @@ http://111.231.75.86:8000/api/countries/巴西/
514528}
515529```
516530
517- ## 省/自治区/直辖市
531+ ## 省/自治区/直辖市 : id =province
518532
519- ### 日统计
533+ ### 日统计 : id =province-daily
520534
521535通过` 短省份名 ` 获取某个中国省份(自治区、直辖市)的疫情从 2020-01-19 到目前的疫情列表数据;
522536
@@ -568,7 +582,7 @@ http://111.231.75.86:8000/api/provinces/澳门/daily/
568582]
569583```
570584
571- ### 省列表
585+ ### 省列表 : id =province-list
572586
573587获取中国各中国省/自治区/直辖市的疫情统计数据;
574588
@@ -604,7 +618,7 @@ http://111.231.75.86:8000/api/provinces/?provinceShortNames=四川,香港
604618]
605619```
606620
607- ### 省详情
621+ ### 省详情 : id =province-detail
608622
609623通过` 短省份名 ` 获取某个中国省份(自治区、直辖市)的疫情统计数据;
610624
@@ -636,9 +650,9 @@ http://111.231.75.86:8000/api/provinces/澳门/
636650}
637651```
638652
639- ## 城市或直辖市某区
653+ ## 城市或直辖市某区 : id =city
640654
641- ### 城市列表
655+ ### 城市列表 : id =city-list
642656
643657获取中国各个城市或直辖市某个区的疫情数据。
644658
@@ -673,7 +687,7 @@ http://111.231.75.86:8000/api/cities/?cityNames=大庆,万州区
673687]
674688```
675689
676- ### 城市详情
690+ ### 城市详情 : id =city-detail
677691
678692
679693接口地址:/api/cities/\< CITY_NAME\> /
@@ -697,3 +711,142 @@ http://111.231.75.86:8000/api/cities/大庆/
697711 "deadCount": 4
698712}
699713```
714+
715+
716+ ## 各国各州 : id =state
717+
718+ 现阶段暂时仅支持获取 * 美国各州* 最新数据和每日数据,数据来源为 [ https://covidtracking.com/ ] ( https://covidtracking.com/ ) ,每日 * 下午 4-5 点* 更新数据;
719+
720+ 特此感谢 [ ccjhpu] ( https://github.com/ccjhpu ) 在 [ issues-8] ( https://github.com/leafcoder/django-covid19/issues/8 ) 中提出的需求以及数据来源。
721+
722+ ### 美国 : id =state-USA
723+
724+ > 各国疫情统计数据中,美国整体疫情数据依旧来源于 [ ` 丁香园 ` ] ( http://ncov.dxy.cn/ncovh5/view/pneumonia ) ,
725+ 仅美国各州疫情数据来源于 [ https://covidtracking.com/ ] ( https://covidtracking.com ) ;
726+
727+ 不过由于各个数据源间统计方式的不同,所以也会将 [ https://covidtracking.com/ ] ( https://covidtracking.com ) 原始数据提供出来,以供选择;
728+
729+ 原始数据的文档请自行参考 [ https://covidtracking.com/api ] ( https://covidtracking.com/api ) ;
730+
731+ #### 州列表 : id =state-USA-list
732+
733+ 获取中国各个城市或直辖市某个区的疫情数据。
734+
735+ 接口地址:/api/states/USA/
736+
737+ 原始数据:/api/states/raw/USA/
738+
739+ 请求方法:GET
740+
741+ 请求参数:
742+
743+ 参数 | 描述
744+ ------------------- | -------
745+ stateNames | 州名,如:Alaska,Alabama;以逗号分割多个值;大小写敏感;
746+ states | 州缩写,如:AK(Alaska),AL(Alabama);大小写敏感;
747+
748+ 示例链接:
749+
750+ http://111.231.75.86:8000/api/states/USA/
751+
752+ http://111.231.75.86:8000/api/states/USA/?states=AL,AK
753+
754+ http://111.231.75.86:8000/api/states/USA/?stateNames=Alaska,Alabama
755+
756+
757+ 返回结果:
758+
759+ ```
760+ [
761+ {
762+ "currentConfirmedCount": 56,
763+ "confirmedCount": 434,
764+ "curedCount": 368,
765+ "deadCount": 10,
766+ "suspectedCount": null,
767+ "stateName": "Alaska",
768+ "state": "AK",
769+ "countryShortCode": "USA"
770+ },
771+ {
772+ "currentConfirmedCount": 7917,
773+ "confirmedCount": 17903,
774+ "curedCount": 9355,
775+ "deadCount": 631,
776+ "suspectedCount": null,
777+ "stateName": "Alabama",
778+ "state": "AL",
779+ "countryShortCode": "USA"
780+ },
781+ ...
782+ 其他各州
783+ ]
784+ ```
785+
786+ #### 某州最新疫情 : id =state-USA-detail
787+
788+
789+ 接口地址:/api/states/USA/\< STATE\> /
790+
791+ 原始数据:/api/states/raw/USA/\< STATE\> /
792+
793+ 请求方法:GET
794+
795+ 示例链接:
796+
797+ http://111.231.75.86:8000/api/states/USA/AL/
798+
799+ http://111.231.75.86:8000/api/states/USA/AK/
800+
801+ 返回结果:
802+
803+ ```
804+ {
805+ "currentConfirmedCount": 7917,
806+ "confirmedCount": 17903,
807+ "curedCount": 9355,
808+ "deadCount": 631,
809+ "suspectedCount": null,
810+ "stateName": "Alabama",
811+ "state": "AL",
812+ "countryShortCode": "USA"
813+ }
814+ ```
815+
816+ #### 某州日统计 : id =state-USA-daily
817+
818+
819+ 接口地址:/api/states/USA/\< STATE\> /daily
820+
821+ 原始数据:/api/states/raw/USA/\< STATE\> /daily
822+
823+ 请求方法:GET
824+
825+ 示例链接:
826+
827+ http://111.231.75.86:8000/api/states/USA/AL/daily/
828+
829+ 返回结果:
830+
831+ ```
832+ [
833+ // 更早日期疫情
834+ ...
835+ {
836+ "state": "AL",
837+ "date": "20200531",
838+ "stateName": "Alabama",
839+ "countryShortCode": "USA",
840+ "currentConfirmedCount": 7917,
841+ "confirmedCount": 17903,
842+ "curedCount": 9355,
843+ "deadCount": 631,
844+ "suspectedCount": null,
845+ "currentConfirmedIncr": 531,
846+ "confirmedIncr": 544,
847+ "curedIncr": null,
848+ "deadIncr": 13,
849+ "suspectedIncr": 5352
850+ }
851+ ]
852+ ```
0 commit comments