Skip to content

Instantly share code, notes, and snippets.

@44uk
Last active November 15, 2019 03:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 44uk/10e4f394478d6b9870bb7fb47c41f8e6 to your computer and use it in GitHub Desktop.
Save 44uk/10e4f394478d6b9870bb7fb47c41f8e6 to your computer and use it in GitHub Desktop.
openweathermap description languages mapping
---
scattered clouds:
en: scattered clouds
ja: 雲
few clouds:
en: few clouds
ja: 薄い雲
clear sky:
en: clear sky
ja: 晴天
moderate rain:
en: moderate rain
ja: 小雨
overcast clouds:
en: overcast clouds
ja: 厚い雲
shower rain:
en: shower rain
ja: にわか雨
haze:
en: haze
ja: 薄霧
mist:
en: mist
ja: 霧
broken clouds:
en: broken clouds
ja: 曇りがち
light rain:
en: light rain
ja: 小雨
light shower snow:
en: light shower snow
ja: 弱いにわか雪
shower sleet:
en: shower sleet
ja: にわかみぞれ
light intensity shower rain:
en: light intensity shower rain
ja: 弱いにわか雨
volcanic ash:
en: volcanic ash
ja: 火山灰
-- replace example
UPDATE
forecasts
SET
[desc] = replace(
[desc],
forecasts.[desc],
CASE forecasts.[desc]
WHEN '雲' THEN 'scattered clouds'
WHEN '薄い雲' THEN 'few clouds'
WHEN '晴天' THEN 'clear sky'
WHEN '小雨' THEN 'light rain'
WHEN '厚い雲' THEN 'overcast clouds'
WHEN 'にわか雨' THEN 'shower rain'
WHEN '薄霧' THEN 'haze'
WHEN '霧' THEN 'mist'
WHEN '曇りがち' THEN 'broken clouds'
WHEN '小雨' THEN 'light rain'
WHEN '弱いにわか雪' THEN 'light shower snow'
WHEN 'にわかみぞれ' THEN 'shower sleet'
WHEN '弱いにわか雨' THEN 'light intensity shower rain'
WHEN '火山灰' THEN 'volcanic ash'
WHEN '霧' THEN 'fog'
ELSE forecasts.[desc]
END
)
FROM
forecasts
require "net/http"
require "json"
require "yaml"
API_KEY = ARGV.first
FILENAME = "_mapping.yml"
CITIES = [
"Tokyo,JP",
"Sapporo,JP",
"Aomori,JP",
"Morioka,JP",
"Sendai,JP",
"Akita,JP",
"Yamagata,JP",
"Fukushima,JP",
"Mito,JP",
"Utsunomiya,JP",
"Maebashi,JP",
"Saitama,JP",
"Chiba,JP",
"Tokyo,JP",
"Yokohama,JP",
"Niigata,JP",
"Toyama,JP",
"Kanazawa,JP",
"Fukui,JP",
"Kofu,JP",
"Nagano,JP",
# "Gifu,JP",
"Shizuoka,JP",
"Nagoya,JP",
"Mie,JP",
"Otsu,JP",
"Kyoto,JP",
"Osaka,JP",
"Kobe,JP",
"Nara,JP",
"Wakayama,JP",
"Tottori,JP",
"Matsue,JP",
"Okayama,JP",
"Hiroshima,JP",
"Yamaguchi,JP",
"Tokushima,JP",
"Takamatsu,JP",
"Matsushima,JP",
# "Kouchi,JP",
"Fukuoka,JP",
"Saga,JP",
"Nagasaki,JP",
"Kumamoto,JP",
# "Oita,JP",
"Miyazaki,JP",
"Kagoshima,JP",
"Okinawa,JP",
# World Federation of Exchanges
"Shanghai,CN",
"Shanghai,CN",
"Hong Kong,CN",
"Shenzhen,CN",
"Paris,FR",
"Amsterdam,NL",
"Bruxelles,CA",
"Toronto,CA",
"Dublin,IE",
"Lisboa,PT",
"Milano,IT",
"Mumbai,IN",
"Frankfurt,DE",
"Zurich,CH",
"Seoul,KR",
"Stockholm,SE",
"Copenhagen,DK",
"Helsinki,FI",
"Reykjavik,IS",
"Tallinn,EE",
"Riga,LV",
"Vilnius,LT",
"Sydney,AU",
"Taipei,TW",
"Sao Paulo,BR",
"Johannesburg,ZA",
"Madrid,ES",
]
LANGS = [
"en", # first must be English
"ja",
# add here langs if you want more
]
mapping = YAML.load_file("./#{FILENAME}") rescue {}
base_params = { units: "metric", APPID: API_KEY }
CITIES.each do |city|
en_description = nil
LANGS.each do |lang|
if mapping[en_description] && mapping[en_description]["#{lang}"]
break
end
params = URI.encode_www_form(base_params.merge(q: city, lang: lang))
uri = URI.parse("http://api.openweathermap.org/data/2.5/weather?#{params}")
resp = Net::HTTP.get_response(uri)
result = JSON.parse(resp.body, symbolize_names: true)
if result[:cod] != 200
raise "#{city}: #{result[:message]}"
end
result[:weather].map do |w|
if lang == "en"
en_description = w[:description]
else
raise "EN description is not found." unless en_description
end
mapping[en_description] = {} unless mapping[en_description]
mapping[en_description]["#{lang}"] = w[:description]
end
end
en_description = nil
end
YAML.dump(mapping, File.open("./#{FILENAME}", "w"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment