Skip to content
This repository was archived by the owner on May 5, 2023. It is now read-only.

Commit e7242c2

Browse files
authored
Merge pull request #9 from leafcoder/develop
Develop
2 parents 5093b2a + dfc6fd2 commit e7242c2

File tree

20 files changed

+953
-100
lines changed

20 files changed

+953
-100
lines changed

README.md

+8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525

2626
</div>
2727

28+
由于现在疫情高发地已从国内转向国外,所以本项目也会逐渐增加*数据源*以便提供关于*国外某国某州(某省)*的疫情数据接口。
29+
30+
现已新增美国各州最新疫情以及各州每日疫情统计接口,可前往 [各国各州接口](#/?id=states) 查看接口文档。
31+
2832
# 项目文档
2933

3034
本项目使用开源文档工具 [docsify](https://docsify.js.org) 编写了一份开发文档。
@@ -52,6 +56,10 @@
5256
* 推荐使用评论方式提问;
5357
* 推荐使用 isuss 提交 bug;
5458

59+
# 致谢
60+
61+
* [ccjhpu](https://github.com/ccjhpu):在 [issues-8](https://github.com/leafcoder/django-covid19/issues/8) 中提出了加入各国各州的需求以及数据来源。
62+
5563
# 致各位
5664

5765
如果本项目对你有所帮助,请在[此处](http://111.231.75.86:8000/docs/#/?id=detail-1)留下你的项目地址。

demo_proj/ncov/settings.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@
147147
}
148148
}
149149

150+
if DEBUG == True:
151+
CACHES['default']['BACKEND'] = 'django.core.cache.backends.locmem.LocMemCache'
152+
CACHES['default']['LOCATION'] = 'ncov'
153+
150154
# 跨域增加忽略
151155
CORS_ALLOW_CREDENTIALS = True
152156
CORS_ORIGIN_ALLOW_ALL = True
@@ -180,7 +184,10 @@
180184

181185
CRONTAB_LOCK_JOBS = True
182186
CRONJOBS = (
183-
# 每分钟抓取一次
184-
('*/1 * * * *', 'django.core.management.call_command', ['crawl']),
187+
# 每分钟抓取丁香园数据一次
188+
('*/1 * * * *', 'django.core.management.call_command', ['crawl', 'dxy']),
189+
190+
# 下午4点到6点间每10分钟抓取 covidtracking 数据一次
191+
('*/10 16-18 * * *', 'django.core.management.call_command', ['crawl', 'covidtracking'])
185192
)
186193

django_covid19/admin.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,15 @@ class CountryAdmin(BaseAdmin):
8787
)
8888
search_fields = (
8989
'continents', 'countryFullName', 'countryShortCode', 'countryName'
90-
)
90+
)
91+
92+
93+
@admin.register(models.State)
94+
class StateAdmin(BaseAdmin):
95+
96+
list_display = (
97+
'countryShortCode', 'stateName', 'state',
98+
'totalTestResults', 'positive', 'negative', 'pending',
99+
'hospitalized', 'death', 'recovered', 'dateModified'
100+
)
101+
search_fields = ('countryShortCode', 'stateName', 'state')

django_covid19/filters.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import django_filters
22
from django.db.models import Q
3-
from .models import City, Province, Country
3+
from . import models
44

55

66
class CharInFilter(django_filters.BaseInFilter, django_filters.CharFilter):
@@ -24,7 +24,7 @@ class CityFilter(django_filters.rest_framework.FilterSet):
2424
field_name='cityName', lookup_expr='exact')
2525

2626
class Meta:
27-
model = City
27+
model = models.City
2828
fields = ['provinceShortName', 'provinceName', 'cityName']
2929

3030

@@ -41,7 +41,7 @@ class ProvinceFilter(django_filters.rest_framework.FilterSet):
4141
field_name='provinceName', lookup_expr='exact')
4242

4343
class Meta:
44-
model = Province
44+
model = models.Province
4545
fields = ['provinceName', 'provinceShortName']
4646

4747

@@ -55,7 +55,18 @@ class CountryFilter(django_filters.rest_framework.FilterSet):
5555
field_name='countryName', lookup_expr='in')
5656

5757
class Meta:
58-
model = Country
58+
model = models.Country
5959
fields = [
6060
'continents', 'countryShortCode', 'countryName'
6161
]
62+
63+
64+
class StateFilter(django_filters.rest_framework.FilterSet):
65+
66+
states = CharInFilter(field_name='state', lookup_expr='in')
67+
stateNames = CharInFilter(
68+
field_name='stateName', lookup_expr='in')
69+
70+
class Meta:
71+
model = models.State
72+
fields = ['state', 'stateName']

django_covid19/locale/zh_Hans/LC_MESSAGES/django.po

+231-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: PACKAGE VERSION\n"
1010
"Report-Msgid-Bugs-To: \n"
11-
"POT-Creation-Date: 2020-05-22 13:32+0800\n"
11+
"POT-Creation-Date: 2020-05-31 00:10+0800\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -34,9 +34,9 @@ msgstr "国际疫情"
3434
msgid "django_covid19"
3535
msgstr "新冠肺炎疫情"
3636

37-
#: management/commands/crawl.py:27
37+
#: management/commands/crawl.py:32
3838
msgid "Crawl data from DingXiangYuan."
39-
msgstr ""
39+
msgstr "从丁香园抓取数据"
4040

4141
#: models.py:19
4242
msgid "remarks"
@@ -153,3 +153,231 @@ msgstr "国内城市"
153153
#: models.py:112 models.py:113
154154
msgid "Country"
155155
msgstr "国家或地区"
156+
157+
#: models.py:152 models.py:153
158+
msgid "State"
159+
msgstr "州"
160+
161+
#: spider/nCoV/spiders/covidtracking.py:24
162+
msgid "Alabama"
163+
msgstr "阿拉巴马州"
164+
165+
#: spider/nCoV/spiders/covidtracking.py:25
166+
msgid "Alaska"
167+
msgstr "阿拉斯加州"
168+
169+
#: spider/nCoV/spiders/covidtracking.py:26
170+
msgid "AmericanSamoa"
171+
msgstr "美属萨摩亚"
172+
173+
#: spider/nCoV/spiders/covidtracking.py:27
174+
msgid "Arizona"
175+
msgstr "亚利桑那州"
176+
177+
#: spider/nCoV/spiders/covidtracking.py:28
178+
msgid "Arkansas"
179+
msgstr "阿肯色州"
180+
181+
#: spider/nCoV/spiders/covidtracking.py:29
182+
msgid "California"
183+
msgstr "加利福尼亚州"
184+
185+
#: spider/nCoV/spiders/covidtracking.py:30
186+
msgid "Colorado"
187+
msgstr "科罗拉多州"
188+
189+
#: spider/nCoV/spiders/covidtracking.py:31
190+
msgid "Connecticut"
191+
msgstr "康涅狄格州"
192+
193+
#: spider/nCoV/spiders/covidtracking.py:32
194+
msgid "Delaware"
195+
msgstr "特拉华州"
196+
197+
#: spider/nCoV/spiders/covidtracking.py:33
198+
msgid "DistrictOfColumbia"
199+
msgstr "哥伦比亚特区"
200+
201+
#: spider/nCoV/spiders/covidtracking.py:34
202+
msgid "Florida"
203+
msgstr "佛罗里达州"
204+
205+
#: spider/nCoV/spiders/covidtracking.py:35
206+
msgid "Georgia"
207+
msgstr "乔治亚州"
208+
209+
#: spider/nCoV/spiders/covidtracking.py:36
210+
msgid "Guam"
211+
msgstr "关岛"
212+
213+
#: spider/nCoV/spiders/covidtracking.py:37
214+
msgid "Hawaii"
215+
msgstr "夏威夷州"
216+
217+
#: spider/nCoV/spiders/covidtracking.py:38
218+
msgid "Idaho"
219+
msgstr "爱达荷州"
220+
221+
#: spider/nCoV/spiders/covidtracking.py:39
222+
msgid "Illinois"
223+
msgstr "伊利诺斯州"
224+
225+
#: spider/nCoV/spiders/covidtracking.py:40
226+
msgid "Indiana"
227+
msgstr "印第安纳州"
228+
229+
#: spider/nCoV/spiders/covidtracking.py:41
230+
msgid "Iowa"
231+
msgstr "爱荷华州"
232+
233+
#: spider/nCoV/spiders/covidtracking.py:42
234+
msgid "Kansas"
235+
msgstr "堪萨斯州"
236+
237+
#: spider/nCoV/spiders/covidtracking.py:43
238+
msgid "Kentucky"
239+
msgstr "肯塔基州"
240+
241+
#: spider/nCoV/spiders/covidtracking.py:44
242+
msgid "Louisiana"
243+
msgstr "路易斯安那州"
244+
245+
#: spider/nCoV/spiders/covidtracking.py:45
246+
msgid "Maine"
247+
msgstr "缅因州"
248+
249+
#: spider/nCoV/spiders/covidtracking.py:46
250+
msgid "Maryland"
251+
msgstr "马里兰州"
252+
253+
#: spider/nCoV/spiders/covidtracking.py:47
254+
msgid "Massachusetts"
255+
msgstr "马萨诸塞州"
256+
257+
#: spider/nCoV/spiders/covidtracking.py:48
258+
msgid "Michigan"
259+
msgstr "密歇根州"
260+
261+
#: spider/nCoV/spiders/covidtracking.py:49
262+
msgid "Minnesota"
263+
msgstr "明尼苏达州"
264+
265+
#: spider/nCoV/spiders/covidtracking.py:50
266+
msgid "Mississippi"
267+
msgstr "密西西比州"
268+
269+
#: spider/nCoV/spiders/covidtracking.py:51
270+
msgid "Missouri"
271+
msgstr "密苏里州"
272+
273+
#: spider/nCoV/spiders/covidtracking.py:52
274+
msgid "Montana"
275+
msgstr "蒙大纳州"
276+
277+
#: spider/nCoV/spiders/covidtracking.py:53
278+
msgid "Nebraska"
279+
msgstr "内布拉斯加州"
280+
281+
#: spider/nCoV/spiders/covidtracking.py:54
282+
msgid "Nevada"
283+
msgstr "内华达州"
284+
285+
#: spider/nCoV/spiders/covidtracking.py:55
286+
msgid "NewHampshire"
287+
msgstr "新罕布什尔州"
288+
289+
#: spider/nCoV/spiders/covidtracking.py:56
290+
msgid "NewJersey"
291+
msgstr "新泽西州"
292+
293+
#: spider/nCoV/spiders/covidtracking.py:57
294+
msgid "NewMexico"
295+
msgstr "新墨西哥州"
296+
297+
#: spider/nCoV/spiders/covidtracking.py:58
298+
msgid "NewYork"
299+
msgstr "纽约州"
300+
301+
#: spider/nCoV/spiders/covidtracking.py:59
302+
msgid "NorthCarolina"
303+
msgstr "北卡罗来纳州"
304+
305+
#: spider/nCoV/spiders/covidtracking.py:60
306+
msgid "NorthDakota"
307+
msgstr "北达科他州"
308+
309+
#: spider/nCoV/spiders/covidtracking.py:61
310+
msgid "NorthernMarianaIslands"
311+
msgstr "北马里亚纳群岛"
312+
313+
#: spider/nCoV/spiders/covidtracking.py:62
314+
msgid "Ohio"
315+
msgstr "俄亥俄州"
316+
317+
#: spider/nCoV/spiders/covidtracking.py:63
318+
msgid "Oklahoma"
319+
msgstr "俄克拉荷马州"
320+
321+
#: spider/nCoV/spiders/covidtracking.py:64
322+
msgid "Oregon"
323+
msgstr "俄勒冈州"
324+
325+
#: spider/nCoV/spiders/covidtracking.py:65
326+
msgid "Pennsylvania"
327+
msgstr "宾夕法尼亚州"
328+
329+
#: spider/nCoV/spiders/covidtracking.py:66
330+
msgid "PuertoRico"
331+
msgstr "波多黎各"
332+
333+
#: spider/nCoV/spiders/covidtracking.py:67
334+
msgid "RhodeIsland"
335+
msgstr "美国罗德岛州"
336+
337+
#: spider/nCoV/spiders/covidtracking.py:68
338+
msgid "SouthCarolina"
339+
msgstr "美国南卡罗来纳州"
340+
341+
#: spider/nCoV/spiders/covidtracking.py:69
342+
msgid "SouthDakota"
343+
msgstr "南达科塔"
344+
345+
#: spider/nCoV/spiders/covidtracking.py:70
346+
msgid "Tennessee"
347+
msgstr "田纳西州"
348+
349+
#: spider/nCoV/spiders/covidtracking.py:71
350+
msgid "Texas"
351+
msgstr "德克萨斯州"
352+
353+
#: spider/nCoV/spiders/covidtracking.py:72
354+
msgid "USVirginIslands"
355+
msgstr "美属维尔京群岛"
356+
357+
#: spider/nCoV/spiders/covidtracking.py:73
358+
msgid "Utah"
359+
msgstr "犹他州"
360+
361+
#: spider/nCoV/spiders/covidtracking.py:74
362+
msgid "Vermont"
363+
msgstr "佛蒙特州"
364+
365+
#: spider/nCoV/spiders/covidtracking.py:75
366+
msgid "Virginia"
367+
msgstr "弗吉尼亚州"
368+
369+
#: spider/nCoV/spiders/covidtracking.py:76
370+
msgid "Washington"
371+
msgstr "华盛顿州"
372+
373+
#: spider/nCoV/spiders/covidtracking.py:77
374+
msgid "WestVirginia"
375+
msgstr "西佛吉尼亚州"
376+
377+
#: spider/nCoV/spiders/covidtracking.py:78
378+
msgid "Wisconsin"
379+
msgstr "威斯康星州"
380+
381+
#: spider/nCoV/spiders/covidtracking.py:79
382+
msgid "Wyoming"
383+
msgstr "怀俄明州"

django_covid19/management/commands/crawl.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
sys.path.insert(0, os.path.join(app_dir, 'spider'))
77

88
from nCoV.spiders.dxy import DXYSpider
9+
from nCoV.spiders.covidtracking import CovidTrackingSpider
910
from scrapy.crawler import CrawlerProcess
1011
from scrapy.utils.project import get_project_settings
1112
from django.core.management.base import BaseCommand
@@ -17,15 +18,23 @@ def __init__(self):
1718
os.environ.setdefault('SCRAPY_SETTINGS_MODULE', settings_file_path)
1819
self.process = CrawlerProcess(get_project_settings())
1920
self.spider = DXYSpider
21+
self.covidtracking_spider = CovidTrackingSpider
2022

21-
def run_spiders(self):
22-
self.process.crawl(self.spider)
23+
def run_spiders(self, spider):
24+
if spider == 'covidtracking':
25+
self.process.crawl(self.covidtracking_spider)
26+
else:
27+
self.process.crawl(self.spider)
2328
self.process.start()
2429

2530
class Command(BaseCommand):
2631

2732
help = _('Crawl data from DingXiangYuan.')
2833

34+
def add_arguments(self, parser):
35+
parser.add_argument('spider', type=str, help='spider name')
36+
2937
def handle(self, *args, **options):
38+
spider = options['spider']
3039
scraper = Scraper()
31-
scraper.run_spiders()
40+
scraper.run_spiders(spider)

0 commit comments

Comments
 (0)