Created
January 17, 2013 11:10
-
-
Save rmehta/4555248 to your computer and use it in GitHub Desktop.
Script to scrape country, currency, timezone info from various sources
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# all country info | |
from __future__ import unicode_literals | |
time_zones = { | |
'Afghanistan': ['Asia/Kabul'], | |
'Albania': ['Europe/Tirane'], | |
'Algeria': ['Africa/Algiers'], | |
'Andorra': ['Europe/Andorra'], | |
'Angola': ['Africa/Luanda'], | |
'Antigua and Barbuda': ['America/Antigua'], | |
'Argentina': ['America/Argentina/Buenos_Aires', | |
'America/Argentina/Cordoba', | |
'America/Argentina/Jujuy', | |
'America/Argentina/Tucuman', | |
'America/Argentina/Catamarca', | |
'America/Argentina/La_Rioja', | |
'America/Argentina/San_Juan', | |
'America/Argentina/Mendoza', | |
'America/Argentina/Rio_Gallegos', | |
'America/Argentina/Ushuaia'], | |
'Armenia': ['Asia/Yerevan'], | |
'Australia': ['Australia/Lord_Howe', | |
'Australia/Hobart', | |
'Australia/Currie', | |
'Australia/Melbourne', | |
'Australia/Sydney', | |
'Australia/Broken_Hill', | |
'Australia/Brisbane', | |
'Australia/Lindeman', | |
'Australia/Adelaide', | |
'Australia/Darwin', | |
'Australia/Perth'], | |
'Austria': ['Europe/Vienna'], | |
'Azerbaijan': ['Asia/Baku'], | |
'Bahamas': ['America/Nassau'], | |
'Bahrain': ['Asia/Bahrain'], | |
'Bangladesh': ['Asia/Dhaka'], | |
'Barbados': ['America/Barbados'], | |
'Belarus': ['Europe/Minsk'], | |
'Belgium': ['Europe/Brussels'], | |
'Belize': ['America/Belize'], | |
'Benin': ['Africa/Porto-Novo'], | |
'Bhutan': ['Asia/Thimphu'], | |
'Bolivia': ['America/La_Paz'], | |
'Bosnia and Herzegovina': ['Europe/Sarajevo'], | |
'Botswana': ['Africa/Gaborone'], | |
'Brazil': ['America/Noronha', | |
'America/Belem', | |
'America/Fortaleza', | |
'America/Recife', | |
'America/Araguaina', | |
'America/Maceio', | |
'America/Bahia', | |
'America/Sao_Paulo', | |
'America/Campo_Grande', | |
'America/Cuiaba', | |
'America/Porto_Velho', | |
'America/Boa_Vista', | |
'America/Manaus', | |
'America/Eirunepe', | |
'America/Rio_Branco'], | |
'Brunei Darussalam': ['Asia/Brunei'], | |
'Bulgaria': ['Europe/Sofia'], | |
'Burkina Faso': ['Africa/Ouagadougou'], | |
'Burundi': ['Africa/Bujumbura'], | |
'Cambodia': ['Asia/Phnom_Penh'], | |
'Cameroon': ['Africa/Douala'], | |
'Canada': ['America/St_Johns', | |
'America/Halifax', | |
'America/Glace_Bay', | |
'America/Moncton', | |
'America/Goose_Bay', | |
'America/Blanc-Sablon', | |
'America/Montreal', | |
'America/Toronto', | |
'America/Nipigon', | |
'America/Thunder_Bay', | |
'America/Pangnirtung', | |
'America/Iqaluit', | |
'America/Atikokan', | |
'America/Rankin_Inlet', | |
'America/Winnipeg', | |
'America/Rainy_River', | |
'America/Cambridge_Bay', | |
'America/Regina', | |
'America/Swift_Current', | |
'America/Edmonton', | |
'America/Yellowknife', | |
'America/Inuvik', | |
'America/Dawson_Creek', | |
'America/Vancouver', | |
'America/Whitehorse', | |
'America/Dawson'], | |
'Cape Verde': ['Atlantic/Cape_Verde'], | |
'Central African Republic': ['Africa/Bangui'], | |
'Chad': ['Africa/Ndjamena'], | |
'China': ['Asia/Shanghai', | |
'Asia/Harbin', | |
'Asia/Chongqing', | |
'Asia/Urumqi', | |
'Asia/Kashgar'], | |
'Chile': ['America/Santiago', 'Pacific/Easter'], | |
'Colombia': ['America/Bogota'], | |
'Comoros': ['Indian/Comoro'], | |
'Costa Rica': ['America/Costa_Rica'], | |
'Croatia': ['Europe/Zagreb'], | |
'Cuba': ['America/Havana'], | |
'Cyprus': ['Asia/Nicosia'], | |
'Czech Republic': ['Europe/Prague'], | |
"C\xc3\xb4te d'Ivoire": ['Africa/Abidjan'], | |
'Democratic Republic of the Congo': ['Africa/Kinshasa', 'Africa/Lubumbashi'], | |
'Denmark': ['Europe/Copenhagen'], | |
'Djibouti': ['Africa/Djibouti'], | |
'Dominica': ['America/Dominica'], | |
'Dominican Republic': ['America/Santo_Domingo'], | |
'East Timor': ['Asia/Dili'], | |
'Ecuador': ['America/Guayaquil', 'Pacific/Galapagos'], | |
'Egypt': ['Africa/Cairo'], | |
'El Salvador': ['America/El_Salvador'], | |
'Equatorial Guinea': ['Africa/Malabo'], | |
'Eritrea': ['Africa/Asmera'], | |
'Estonia': ['Europe/Tallinn'], | |
'Ethiopia': ['Africa/Addis_Ababa'], | |
'Federated States of Micronesia': ['Pacific/Truk', | |
'Pacific/Ponape', | |
'Pacific/Kosrae'], | |
'Fiji': ['Pacific/Fiji'], | |
'Finland': ['Europe/Helsinki'], | |
'France': ['Europe/Paris'], | |
'Gabon': ['Africa/Libreville'], | |
'Georgia': ['Asia/Tbilisi'], | |
'Germany': ['Europe/Berlin'], | |
'Ghana': ['Africa/Accra'], | |
'Greece': ['Europe/Athens'], | |
'Grenada': ['America/Grenada'], | |
'Guatemala': ['America/Guatemala'], | |
'Guinea': ['Africa/Conakry'], | |
'Guinea-Bissau': ['Africa/Bissau'], | |
'Guyana': ['America/Guyana'], | |
'Haiti': ['America/Guatemala'], | |
'Honduras': ['America/Tegucigalpa'], | |
'Hong Kong': ['Asia/Hong_Kong'], | |
'Hungary': ['Europe/Budapest'], | |
'Iceland': ['Atlantic/Reykjavik'], | |
'India': ['Asia/Calcutta'], | |
'Indonesia': ['Asia/Jakarta', | |
'Asia/Pontianak', | |
'Asia/Makassar', | |
'Asia/Jayapura'], | |
'Iran': ['Asia/Tehran'], | |
'Iraq': ['Asia/Baghdad'], | |
'Israel': ['Asia/Jerusalem'], | |
'Italy': ['Europe/Rome'], | |
'Jamaica': ['America/Jamaica'], | |
'Japan': ['Asia/Tokyo'], | |
'Jordan': ['Asia/Amman'], | |
'Kazakhstan': ['Asia/Almaty', | |
'Asia/Qyzylorda', | |
'Asia/Aqtobe', | |
'Asia/Aqtau', | |
'Asia/Oral'], | |
'Kenya': ['Africa/Nairobi'], | |
'Kingdom of the Netherlands': ['Europe/Amsterdam'], | |
'Kiribati': ['Pacific/Tarawa', 'Pacific/Enderbury', 'Pacific/Kiritimati'], | |
'Kuwait': ['Asia/Kuwait'], | |
'Kyrgyzstan': ['Asia/Bishkek'], | |
'Laos': ['Asia/Vientiane'], | |
'Latvia': ['Europe/Riga'], | |
'Lebanon': ['Asia/Beirut'], | |
'Lesotho': ['Africa/Maseru'], | |
'Liberia': ['Africa/Monrovia'], | |
'Libya': ['Africa/Tripoli'], | |
'Liechtenstein': ['Europe/Vaduz'], | |
'Lithuania': ['Europe/Vilnius'], | |
'Luxembourg': ['Europe/Luxembourg'], | |
'Macedonia': ['Europe/Skopje'], | |
'Madagascar': ['Indian/Antananarivo'], | |
'Malawi': ['Africa/Blantyre'], | |
'Malaysia': ['Asia/Kuala_Lumpur', 'Asia/Kuching'], | |
'Maldives': ['Indian/Maldives'], | |
'Mali': ['Africa/Bamako'], | |
'Malta': ['Europe/Malta'], | |
'Marshall Islands': ['Pacific/Majuro', 'Pacific/Kwajalein'], | |
'Mauritania': ['Africa/Nouakchott'], | |
'Mauritius': ['Indian/Mauritius'], | |
'Mexico': ['America/Mexico_City', | |
'America/Cancun', | |
'America/Merida', | |
'America/Monterrey', | |
'America/Mazatlan', | |
'America/Chihuahua', | |
'America/Hermosillo', | |
'America/Tijuana'], | |
'Moldova': ['Europe/Chisinau'], | |
'Monaco': ['Europe/Monaco'], | |
'Mongolia': ['Asia/Ulaanbaatar', 'Asia/Hovd', 'Asia/Choibalsan'], | |
'Montenegro': ['Europe/Podgorica'], | |
'Morocco': ['Africa/Casablanca'], | |
'Mozambique': ['Africa/Maputo'], | |
'Myanmar': ['Asia/Rangoon'], | |
'Namibia': ['Africa/Windhoek'], | |
'Nauru': ['Pacific/Nauru'], | |
'Nepal': ['Asia/Katmandu'], | |
'New Zealand': ['Pacific/Auckland', 'Pacific/Chatham'], | |
'Nicaragua': ['America/Managua'], | |
'Niger': ['Africa/Niamey'], | |
'Nigeria': ['Africa/Lagos'], | |
'North Korea': ['Asia/Pyongyang'], | |
'Norway': ['Europe/Oslo'], | |
'Oman': ['Asia/Muscat'], | |
'Pakistan': ['Asia/Karachi'], | |
'Palau': ['Pacific/Palau'], | |
'Panama': ['America/Panama'], | |
'Papua New Guinea': ['Pacific/Port_Moresby'], | |
'Paraguay': ['America/Asuncion'], | |
'Peru': ['America/Lima'], | |
'Philippines': ['Asia/Manila'], | |
'Poland': ['Europe/Warsaw'], | |
'Portugal': ['Europe/Lisbon', 'Atlantic/Madeira', 'Atlantic/Azores'], | |
'Qatar': ['Asia/Qatar'], | |
'Republic of Ireland': ['Europe/Dublin'], | |
'Republic of the Congo': ['Africa/Brazzaville'], | |
'Romania': ['Europe/Bucharest'], | |
'Russia': ['Europe/Kaliningrad', | |
'Europe/Moscow', | |
'Europe/Volgograd', | |
'Europe/Samara', | |
'Asia/Yekaterinburg', | |
'Asia/Omsk', | |
'Asia/Novosibirsk', | |
'Asia/Krasnoyarsk', | |
'Asia/Irkutsk', | |
'Asia/Yakutsk', | |
'Asia/Vladivostok', | |
'Asia/Sakhalin', | |
'Asia/Magadan', | |
'Asia/Kamchatka', | |
'Asia/Anadyr'], | |
'Rwanda': ['Africa/Kigali'], | |
'Saint Kitts and Nevis': ['America/St_Kitts'], | |
'Saint Lucia': ['America/St_Lucia'], | |
'Saint Vincent and the Grenadines': ['America/St_Vincent'], | |
'Samoa': ['Pacific/Apia'], | |
'San Marino': ['Europe/San_Marino'], | |
'Saudi Arabia': ['Asia/Riyadh'], | |
'Senegal': ['Africa/Dakar'], | |
'Serbia': ['Europe/Belgrade'], | |
'Seychelles': ['Indian/Mahe'], | |
'Sierra Leone': ['Africa/Freetown'], | |
'Singapore': ['Asia/Singapore'], | |
'Slovakia': ['Europe/Bratislava'], | |
'Slovenia': ['Europe/Ljubljana'], | |
'Solomon Islands': ['Pacific/Guadalcanal'], | |
'Somalia': ['Africa/Mogadishu'], | |
'South Africa': ['Africa/Johannesburg'], | |
'South Korea': ['Asia/Seoul'], | |
'Spain': ['Europe/Madrid', 'Africa/Ceuta', 'Atlantic/Canary'], | |
'Sri Lanka': ['Asia/Colombo'], | |
'Sudan': ['Africa/Khartoum'], | |
'Suriname': ['America/Paramaribo'], | |
'Swaziland': ['Africa/Mbabane'], | |
'Sweden': ['Europe/Stockholm'], | |
'Switzerland': ['Europe/Zurich'], | |
'Syria': ['Asia/Damascus'], | |
'S\xc3\xa3o Tom\xc3\xa9 and Pr\xc3\xadncipe': ['Africa/Sao_Tome'], | |
'Tajikistan': ['Asia/Dushanbe'], | |
'Tanzania': ['Africa/Dar_es_Salaam'], | |
'Thailand': ['Asia/Bangkok'], | |
'The Gambia': ['Africa/Banjul'], | |
'Togo': ['Africa/Lome'], | |
'Tonga': ['Pacific/Tongatapu'], | |
'Trinidad and Tobago': ['America/Port_of_Spain'], | |
'Tunisia': ['Africa/Tunis'], | |
'Turkey': ['Europe/Istanbul'], | |
'Turkmenistan': ['Asia/Ashgabat'], | |
'Tuvalu': ['Pacific/Funafuti'], | |
'Uganda': ['Africa/Kampala'], | |
'Ukraine': ['Europe/Kiev', | |
'Europe/Uzhgorod', | |
'Europe/Zaporozhye', | |
'Europe/Simferopol'], | |
'United Arab Emirates': ['Asia/Dubai'], | |
'United Kingdom': ['Europe/London'], | |
'United States': ['America/New_York', | |
'America/Detroit', | |
'America/Kentucky/Louisville', | |
'America/Kentucky/Monticello', | |
'America/Indiana/Indianapolis', | |
'America/Indiana/Marengo', | |
'America/Indiana/Knox', | |
'America/Indiana/Vevay', | |
'America/Chicago', | |
'America/Indiana/Vincennes', | |
'America/Indiana/Petersburg', | |
'America/Menominee', | |
'America/North_Dakota/Center', | |
'America/North_Dakota/New_Salem', | |
'America/Denver', | |
'America/Boise', | |
'America/Shiprock', | |
'America/Phoenix', | |
'America/Los_Angeles', | |
'America/Anchorage', | |
'America/Juneau', | |
'America/Yakutat', | |
'America/Nome', | |
'America/Adak', | |
'Pacific/Honolulu'], | |
'Uruguay': ['America/Montevideo'], | |
'Uzbekistan': ['Asia/Samarkand', 'Asia/Tashkent'], | |
'Vanuatu': ['Pacific/Efate'], | |
'Vatican City': ['Europe/Vatican'], | |
'Venezuela': ['America/Caracas'], | |
'Vietnam': ['Asia/Saigon'], | |
'Yemen': ['Asia/Aden'], | |
'Zambia': ['Africa/Lusaka'], | |
'Zimbabwe': ['Africa/Harare'], | |
} | |
def make(): | |
import pycountry | |
import pytz | |
from webnotes.utils.datautils import read_csv_content | |
from webnotes.utils import cint | |
import json | |
data = {} | |
for c in pycountry.countries: | |
data[c.name] = {"numeric":c.numeric} | |
for c in pycountry.currencies: | |
for co in data: | |
if data[co].get("numeric") == getattr(c, "numeric", None): | |
data[co]["currency"] = c.letter | |
data[co]["currency_name"] = c.name | |
for c in data: | |
if "numeric" in data[c]: | |
del data[c]["numeric"] | |
keys = data.keys() | |
keys.sort() | |
# dd mm yy | |
for c in ("Belize", "United States", "Canada", "Philippines","Palau"): | |
data[c]["date_format"] = "mm-dd-yyyy" | |
for c in ("China", "Hungary", "Lithuania", "Mongolia", "South Africa", "Taiwan, Province of China"): | |
data[c]["date_format"] = "yyyy-mm-dd" | |
# Time Zones | |
for c in data: | |
if c in time_zones: | |
data[c]["timezones"] = time_zones[c] | |
with open("/Users/rmehta/Desktop/currencies.csv", "r") as csvfile: | |
csvdata = read_csv_content(csvfile.read()) | |
for row in csvdata: | |
if row[1] in data: | |
data[row[1]]["currency_symbol"] = row[3] | |
data[row[1]]["currency_fraction"] = row[5] | |
data[row[1]]["currency_fraction_units"] = cint(row[6].replace(",","")) | |
with open("local_info.json", "w") as local_info: | |
local_info.write(json.dumps(data, indent=1)) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment