-
Notifications
You must be signed in to change notification settings - Fork 0
/
scmr_jian_intl.py
executable file
·96 lines (83 loc) · 10.6 KB
/
scmr_jian_intl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
import json
import csv
import io, sys
import requests
import datetime
import os
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
OPENSEARCH_DASHBOARDS = os.environ["OPENSEARCH_DASHBOARDS"]
def date(year, mounth, day):
return datetime.datetime(
year, mounth, day, tzinfo=datetime.timezone(datetime.timedelta(hours=9), "JST")
).isoformat()
def substitute():
current = datetime.datetime.now()
gte = date(current.year, current.month - 1, 1)
lt = date(current.year, current.month, 1)
with open("./scmr_jian_intl.json", "r") as fp:
dict = json.load(fp)
for q1 in dict["query"]["bool"]["must"]:
if "range" in q1:
q1["range"]["date_jst"]["gte"] = gte
q1["range"]["date_jst"]["lt"] = lt
return json.dumps(dict, indent=2)
def request_opensearch():
data = substitute()
headers = {"content-type": "application/json"}
res = requests.get(OPENSEARCH_DASHBOARDS + "/_search", data=data, headers=headers)
return res.text
def create_csv(file_name):
jl = request_opensearch()
# pprint.pprint(jl)
countries = [
'ウズベキスタン', 'カザフスタン', 'キルギス', 'タジキスタン', 'トルクメニスタン', 'マカオ', 'モンゴル', '香港', '韓国', '中国', '台湾', '北朝鮮', '日本', 'インドネシア', 'カンボジア', 'シンガポール', 'タイ', 'フィリピン', 'ブルネイ', 'ベトナム', 'マレーシア', 'ミャンマー', 'ラオス', '東ティモール', 'インド', 'スリランカ', 'ネパール', 'パキスタン', 'バングラデシュ', 'ブータン', '米領サモア', 'ウォリス・フツナ', 'オーストラリア', 'キリバス', 'グアム', 'クック諸島', 'クリスマス島', 'サモア', 'ソロモン', 'ツバル', 'トケラウ', 'トンガ', 'ナウル', 'ニウエ', 'ニューカレドニア', 'ニュージーランド', 'ノーフォーク島', 'バヌアツ', 'パプアニューギニア', 'パラオ', 'ピトケアン', 'フィジー', '仏領ポリネシア', 'マーシャル', 'ミクロネシア', '合衆国領有小離島', '北マリアナ諸島', 'アメリカ', 'メーン州', 'ニューハンプシャー州', 'バーモント州', 'マサチューセッツ州', 'ロードアイランド州', 'コネチカット州', 'ニューヨーク州', 'ニュージャージー州', 'ペンシルベニア州', 'ミシガン州', 'オハイオ州', 'インディアナ州', 'ウィスコンシン州', 'イリノイ州', 'ミネソタ州', 'アイオワ州', 'ミズーリ州', 'ノースダコタ州', 'サウスダコタ州', 'ネブラスカ州', 'カンザス州', 'デラウェア州', 'メリーランド州', 'ワシントンDC', 'ウエストバージニア州', 'バージニア州', 'ケンタッキー州', 'ノースカロライナ州', 'サウスカロライナ州', 'ジョージア州', 'フロリダ州', 'テネシー州', 'アラバマ州', 'ミシシッピ州', 'アーカンソー州', 'ルイジアナ州', 'オクラホマ州', 'テキサス州', 'モンタナ州', 'ワイオミング州', 'コロラド州', 'ニューメキシコ州', 'アイダホ州', 'ユタ州', 'アリゾナ州', 'ワシントン州', 'オレゴン州', 'ネバダ州', 'カリフォルニア州', 'アラスカ州', 'ハワイ州', 'カナダ', 'サンピエール島とミクロン島', '米領ヴァージン諸島', 'アルバ', 'アンギラ', 'アンティグア・バーブーダ', '英領ヴァージン諸島', 'エルサルバドル', 'キューバ', 'キュラソー', 'グアテマラ', 'グアドループ', 'グレナダ', 'ケイマン諸島', 'コスタリカ', 'サン・バルテルミー', '仏領サン・マルタン', 'ジャマイカ', '蘭領シント・マールテン', 'セントクリストファー・ネイビス', 'セントビンセントとグレナディーン諸島', 'セントルシア', 'タークス・カイコス諸島', 'ドミニカ共和国', 'ドミニカ国', 'トリニダード・トバゴ', 'ニカラグア', 'ハイチ', 'パナマ', 'バハマ', 'バミューダ', 'バルバドス', 'プエルトリコ', 'ベリーズ', 'ボネール、シント・ユースタティウスとサバ', 'ホンジュラス', 'マルティニーク', 'メキシコ', 'モントセラト', 'アルゼンチン', 'ウルグアイ', 'エクアドル', 'ガイアナ', 'コロンビア', 'サウスジョージア・サウスサンドウィッチ諸島', 'スリナム', 'チリ', 'パラグアイ', 'フォークランド諸島', 'ブラジル', '仏領ギアナ', 'ベネズエラ', 'ペルー', 'ボリビア', 'アイルランド', 'アンドラ', 'イギリス', 'イタリア', 'オランダ', 'ガーンジー', 'ギリシャ', 'サンマリノ', 'ジブラルタル', 'ジャージー', 'スイス', 'スペイン', 'ドイツ', 'バチカン', 'フランス', 'ベルギー', 'ポルトガル', 'マン島', 'モナコ', 'リヒテンシュタイン', 'ルクセンブルク', 'キプロス', 'マルタ', 'アフガニスタン', 'アラブ首長国連邦', 'イエメン', 'イスラエル', 'イラク', 'イラン', 'オマーン', 'カタール', 'クウェート', 'サウジアラビア', 'シリア', 'トルコ', 'バーレーン', 'パレスチナ', 'ヨルダン', 'レバノン', 'アゼルバイジャン', 'アルバニア', 'アルメニア', 'ウクライナ', 'エストニア', 'オーストリア', 'クロアチア', 'ジョージア', 'スロバキア', 'スロベニア', 'セルビア', 'チェコ', 'ハンガリー', 'ブルガリア', 'ベラルーシ', 'ポーランド', 'ボスニア・ヘルツェゴビナ', 'モルドバ', 'モンテネグロ', 'ラトビア', 'リトアニア', 'ルーマニア', '北マケドニア', 'アイスランド', 'オーランド諸島', 'グリーンランド', 'スヴァールバル諸島とヤンマイエン島', 'スウェーデン', 'デンマーク', 'ノルウェー', 'フィンランド', 'フェロー諸島', 'ガーナ', 'カーボベルデ', 'ガンビア', 'ギニア', 'ギニアビサウ', 'コートジボワール', 'シエラレオネ', 'セネガル', 'セントヘレナ・アセンションとトリスタンダクーニャ', 'トーゴ', 'ブルキナファソ', 'ベナン', 'マリ', 'モーリタニア', 'リベリア', '西サハラ', 'ウガンダ', 'ガボン', 'カメルーン', 'コンゴ(共)', 'コンゴ(民)', 'サントメ・プリンシペ', 'チャド', 'ナイジェリア', 'ニジェール', 'ブルンジ', 'ルワンダ', '赤道ギニア', '中央アフリカ', 'エチオピア', 'エリトリア', 'ケニア', 'ジブチ', 'スーダン', 'ソマリア', 'タンザニア', '南スーダン', 'アンゴラ', 'エスワティニ', 'ザンビア', 'ジンバブエ', 'ナミビア', 'ボツワナ', 'マラウイ', 'モーリシャス', 'モザンビーク', 'レソト', '南アフリカ', 'アルジェリア', 'エジプト', 'チュニジア', 'モロッコ', 'リビア', '英領インド洋地域', 'ココス諸島', 'コモロ', 'セーシェル', 'ハード島とマクドナルド諸島', '仏領南方・南極地域', 'マダガスカル', 'マヨット', 'モルディブ', 'レユニオン', 'ロシア', 'コソボ', 'ブーベ島', '南極'
]
tagnames1 = [
"気象災害全般","火災全般","事故全般","事件全般","生活基盤全般","その他全般"
]
tagnames2 = [
"自動車","鉄道","新幹線","飛行機・ヘリ","船舶","山林","駅","主要駅","沿線・路線","空港","高速道路","ビル・商業施設","工場・倉庫","発電所","河川","国道","気象・災害","気象災害全般","落雷","大雨","大雨被害","雨漏り","土砂災害","氾濫・洪水","浸水・冠水","崩落・倒壊","倒木","降雪","雪被害","雪崩","降雹","竜巻・つむじ風","強風・暴風","台風","台風被害","地震","地震被害","液状化","津波","噴火","降灰","濃霧","大気現象","自然現象","天文現象","季節現象","熱中症","花粉","高波・高潮","救助要請","避難情報","気象災害情報","火災全般","火事","爆発","発煙","報知器作動","消防出動","大規模火災","事故全般","炎上事故","横転事故","危険走行","落下物","故障","人身事故","居眠り","水難事故","事件全般","不審者","立てこもり","誘拐","盗難・窃盗","強盗","発砲","破損","異臭","危険物","不審物","不発弾","自殺","犯行予告","殺人","死体遺棄・発見","テロ","デモ","暴力行為","軍事・クーデター","警察出動","救急出動","生活基盤全般","停電","電力設備トラブル","ガス漏れ","断水・濁水","水道管破裂","道路異常","ガス爆発","システム・通信障害","渋滞・混雑","遅延・運休・停止","その他全般","不祥事","異物混入","動物出没","スポーツ・イベント","感染症","デマ情報","密集"
]
with open("/tmp/" + file_name['fn1'], "w", encoding="utf-8") as fp1:
with open("/tmp/" + file_name['fn2'], "w", encoding="utf-8") as fp2:
cw1 = csv.writer(fp1)
cw2 = csv.writer(fp2)
# 見出し行の作成
title1 = [""] + tagnames1
title2 = [""] + tagnames2
cw1.writerow(title1)
cw2.writerow(title2)
cols = []
for country in countries:
cols.append(country)
# cw.writerows(cols)
jl2 = json.loads(jl)
for b1 in jl2["aggregations"]["nexted_by_geo"]["group_by_geo_country"]["buckets"]:
# print(b1)
if not b1["key"] in countries:
continue
row1 = []
row2 = []
row1.append(b1["key"])
row2.append(b1["key"])
for tag in tagnames1:
count = 0
for b2 in b1["reverse"]["nested_by_tag"]["group_by_tag"]["buckets"]:
if b2["key"] == str(tag):
count = int(b2["doc_count"])
break
row1.append(count)
cw1.writerow(row1)
for tag in tagnames2:
count = 0
for b2 in b1["reverse"]["nested_by_tag"]["group_by_tag"]["buckets"]:
if b2["key"] == str(tag):
count = int(b2["doc_count"])
break
row2.append(count)
cw2.writerow(row2)
if __name__ == "__main__":
create_csv()