Skip to content

Commit c5b30a1

Browse files
authored
Merge pull request #68 from ipinfo/umar/country-flag
added country_flag
2 parents 544d6b7 + cd4367b commit c5b30a1

File tree

7 files changed

+290
-12
lines changed

7 files changed

+290
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ Request behavior can be modified by setting the `request_options` keyword argume
232232

233233
### Internationalization
234234

235-
When looking up an IP address, the response object includes a `details.country_name` and `details.isEU` attributes which includes the country based on American English. It is possible to return the country name in other languages by setting the `countries_file` and remove or add EU countries by setting `eu_countries_file` keyword argument when creating the `IPinfo` object.
235+
When looking up an IP address, the response object includes a `details.country_name`, `details.isEU` and `details.country_flag` attributes which includes the country based on American English. It is possible to return the country name in other languages by setting the `countries_file`, remove or add EU countries by setting the keyword argument `eu_countries_file` or change the country flag emoji or unicode by setting the keyword argument `countries_flags_file` when creating the `IPinfo` object.
236236

237237
The file must be a `.json` file with the following structure:
238238

ipinfo/flags.json

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
{
2+
"AD": {"emoji": "🇦🇩","unicode": "U+1F1E6 U+1F1E9"},
3+
"AE": {"emoji": "🇦🇪","unicode": "U+1F1E6 U+1F1EA"},
4+
"AF": {"emoji": "🇦🇫","unicode": "U+1F1E6 U+1F1EB"},
5+
"AG": {"emoji": "🇦🇬","unicode": "U+1F1E6 U+1F1EC"},
6+
"AI": {"emoji": "🇦🇮","unicode": "U+1F1E6 U+1F1EE"},
7+
"AL": {"emoji": "🇦🇱","unicode": "U+1F1E6 U+1F1F1"},
8+
"AM": {"emoji": "🇦🇲","unicode": "U+1F1E6 U+1F1F2"},
9+
"AO": {"emoji": "🇦🇴","unicode": "U+1F1E6 U+1F1F4"},
10+
"AQ": {"emoji": "🇦🇶","unicode": "U+1F1E6 U+1F1F6"},
11+
"AR": {"emoji": "🇦🇷","unicode": "U+1F1E6 U+1F1F7"},
12+
"AS": {"emoji": "🇦🇸","unicode": "U+1F1E6 U+1F1F8"},
13+
"AT": {"emoji": "🇦🇹","unicode": "U+1F1E6 U+1F1F9"},
14+
"AU": {"emoji": "🇦🇺","unicode": "U+1F1E6 U+1F1FA"},
15+
"AW": {"emoji": "🇦🇼","unicode": "U+1F1E6 U+1F1FC"},
16+
"AX": {"emoji": "🇦🇽","unicode": "U+1F1E6 U+1F1FD"},
17+
"AZ": {"emoji": "🇦🇿","unicode": "U+1F1E6 U+1F1FF"},
18+
"BA": {"emoji": "🇧🇦","unicode": "U+1F1E7 U+1F1E6"},
19+
"BB": {"emoji": "🇧🇧","unicode": "U+1F1E7 U+1F1E7"},
20+
"BD": {"emoji": "🇧🇩","unicode": "U+1F1E7 U+1F1E9"},
21+
"BE": {"emoji": "🇧🇪","unicode": "U+1F1E7 U+1F1EA"},
22+
"BF": {"emoji": "🇧🇫","unicode": "U+1F1E7 U+1F1EB"},
23+
"BG": {"emoji": "🇧🇬","unicode": "U+1F1E7 U+1F1EC"},
24+
"BH": {"emoji": "🇧🇭","unicode": "U+1F1E7 U+1F1ED"},
25+
"BI": {"emoji": "🇧🇮","unicode": "U+1F1E7 U+1F1EE"},
26+
"BJ": {"emoji": "🇧🇯","unicode": "U+1F1E7 U+1F1EF"},
27+
"BL": {"emoji": "🇧🇱","unicode": "U+1F1E7 U+1F1F1"},
28+
"BM": {"emoji": "🇧🇲","unicode": "U+1F1E7 U+1F1F2"},
29+
"BN": {"emoji": "🇧🇳","unicode": "U+1F1E7 U+1F1F3"},
30+
"BO": {"emoji": "🇧🇴","unicode": "U+1F1E7 U+1F1F4"},
31+
"BQ": {"emoji": "🇧🇶","unicode": "U+1F1E7 U+1F1F6"},
32+
"BR": {"emoji": "🇧🇷","unicode": "U+1F1E7 U+1F1F7"},
33+
"BS": {"emoji": "🇧🇸","unicode": "U+1F1E7 U+1F1F8"},
34+
"BT": {"emoji": "🇧🇹","unicode": "U+1F1E7 U+1F1F9"},
35+
"BV": {"emoji": "🇧🇻","unicode": "U+1F1E7 U+1F1FB"},
36+
"BW": {"emoji": "🇧🇼","unicode": "U+1F1E7 U+1F1FC"},
37+
"BY": {"emoji": "🇧🇾","unicode": "U+1F1E7 U+1F1FE"},
38+
"BZ": {"emoji": "🇧🇿","unicode": "U+1F1E7 U+1F1FF"},
39+
"CA": {"emoji": "🇨🇦","unicode": "U+1F1E8 U+1F1E6"},
40+
"CC": {"emoji": "🇨🇨","unicode": "U+1F1E8 U+1F1E8"},
41+
"CD": {"emoji": "🇨🇩","unicode": "U+1F1E8 U+1F1E9"},
42+
"CF": {"emoji": "🇨🇫","unicode": "U+1F1E8 U+1F1EB"},
43+
"CG": {"emoji": "🇨🇬","unicode": "U+1F1E8 U+1F1EC"},
44+
"CH": {"emoji": "🇨🇭","unicode": "U+1F1E8 U+1F1ED"},
45+
"CI": {"emoji": "🇨🇮","unicode": "U+1F1E8 U+1F1EE"},
46+
"CK": {"emoji": "🇨🇰","unicode": "U+1F1E8 U+1F1F0"},
47+
"CL": {"emoji": "🇨🇱","unicode": "U+1F1E8 U+1F1F1"},
48+
"CM": {"emoji": "🇨🇲","unicode": "U+1F1E8 U+1F1F2"},
49+
"CN": {"emoji": "🇨🇳","unicode": "U+1F1E8 U+1F1F3"},
50+
"CO": {"emoji": "🇨🇴","unicode": "U+1F1E8 U+1F1F4"},
51+
"CR": {"emoji": "🇨🇷","unicode": "U+1F1E8 U+1F1F7"},
52+
"CU": {"emoji": "🇨🇺","unicode": "U+1F1E8 U+1F1FA"},
53+
"CV": {"emoji": "🇨🇻","unicode": "U+1F1E8 U+1F1FB"},
54+
"CW": {"emoji": "🇨🇼","unicode": "U+1F1E8 U+1F1FC"},
55+
"CX": {"emoji": "🇨🇽","unicode": "U+1F1E8 U+1F1FD"},
56+
"CY": {"emoji": "🇨🇾","unicode": "U+1F1E8 U+1F1FE"},
57+
"CZ": {"emoji": "🇨🇿","unicode": "U+1F1E8 U+1F1FF"},
58+
"DE": {"emoji": "🇩🇪","unicode": "U+1F1E9 U+1F1EA"},
59+
"DJ": {"emoji": "🇩🇯","unicode": "U+1F1E9 U+1F1EF"},
60+
"DK": {"emoji": "🇩🇰","unicode": "U+1F1E9 U+1F1F0"},
61+
"DM": {"emoji": "🇩🇲","unicode": "U+1F1E9 U+1F1F2"},
62+
"DO": {"emoji": "🇩🇴","unicode": "U+1F1E9 U+1F1F4"},
63+
"DZ": {"emoji": "🇩🇿","unicode": "U+1F1E9 U+1F1FF"},
64+
"EC": {"emoji": "🇪🇨","unicode": "U+1F1EA U+1F1E8"},
65+
"EE": {"emoji": "🇪🇪","unicode": "U+1F1EA U+1F1EA"},
66+
"EG": {"emoji": "🇪🇬","unicode": "U+1F1EA U+1F1EC"},
67+
"EH": {"emoji": "🇪🇭","unicode": "U+1F1EA U+1F1ED"},
68+
"ER": {"emoji": "🇪🇷","unicode": "U+1F1EA U+1F1F7"},
69+
"ES": {"emoji": "🇪🇸","unicode": "U+1F1EA U+1F1F8"},
70+
"ET": {"emoji": "🇪🇹","unicode": "U+1F1EA U+1F1F9"},
71+
"FI": {"emoji": "🇫🇮","unicode": "U+1F1EB U+1F1EE"},
72+
"FJ": {"emoji": "🇫🇯","unicode": "U+1F1EB U+1F1EF"},
73+
"FK": {"emoji": "🇫🇰","unicode": "U+1F1EB U+1F1F0"},
74+
"FM": {"emoji": "🇫🇲","unicode": "U+1F1EB U+1F1F2"},
75+
"FO": {"emoji": "🇫🇴","unicode": "U+1F1EB U+1F1F4"},
76+
"FR": {"emoji": "🇫🇷","unicode": "U+1F1EB U+1F1F7"},
77+
"GA": {"emoji": "🇬🇦","unicode": "U+1F1EC U+1F1E6"},
78+
"GB": {"emoji": "🇬🇧","unicode": "U+1F1EC U+1F1E7"},
79+
"GD": {"emoji": "🇬🇩","unicode": "U+1F1EC U+1F1E9"},
80+
"GE": {"emoji": "🇬🇪","unicode": "U+1F1EC U+1F1EA"},
81+
"GF": {"emoji": "🇬🇫","unicode": "U+1F1EC U+1F1EB"},
82+
"GG": {"emoji": "🇬🇬","unicode": "U+1F1EC U+1F1EC"},
83+
"GH": {"emoji": "🇬🇭","unicode": "U+1F1EC U+1F1ED"},
84+
"GI": {"emoji": "🇬🇮","unicode": "U+1F1EC U+1F1EE"},
85+
"GL": {"emoji": "🇬🇱","unicode": "U+1F1EC U+1F1F1"},
86+
"GM": {"emoji": "🇬🇲","unicode": "U+1F1EC U+1F1F2"},
87+
"GN": {"emoji": "🇬🇳","unicode": "U+1F1EC U+1F1F3"},
88+
"GP": {"emoji": "🇬🇵","unicode": "U+1F1EC U+1F1F5"},
89+
"GQ": {"emoji": "🇬🇶","unicode": "U+1F1EC U+1F1F6"},
90+
"GR": {"emoji": "🇬🇷","unicode": "U+1F1EC U+1F1F7"},
91+
"GS": {"emoji": "🇬🇸","unicode": "U+1F1EC U+1F1F8"},
92+
"GT": {"emoji": "🇬🇹","unicode": "U+1F1EC U+1F1F9"},
93+
"GU": {"emoji": "🇬🇺","unicode": "U+1F1EC U+1F1FA"},
94+
"GW": {"emoji": "🇬🇼","unicode": "U+1F1EC U+1F1FC"},
95+
"GY": {"emoji": "🇬🇾","unicode": "U+1F1EC U+1F1FE"},
96+
"HK": {"emoji": "🇭🇰","unicode": "U+1F1ED U+1F1F0"},
97+
"HM": {"emoji": "🇭🇲","unicode": "U+1F1ED U+1F1F2"},
98+
"HN": {"emoji": "🇭🇳","unicode": "U+1F1ED U+1F1F3"},
99+
"HR": {"emoji": "🇭🇷","unicode": "U+1F1ED U+1F1F7"},
100+
"HT": {"emoji": "🇭🇹","unicode": "U+1F1ED U+1F1F9"},
101+
"HU": {"emoji": "🇭🇺","unicode": "U+1F1ED U+1F1FA"},
102+
"ID": {"emoji": "🇮🇩","unicode": "U+1F1EE U+1F1E9"},
103+
"IE": {"emoji": "🇮🇪","unicode": "U+1F1EE U+1F1EA"},
104+
"IL": {"emoji": "🇮🇱","unicode": "U+1F1EE U+1F1F1"},
105+
"IM": {"emoji": "🇮🇲","unicode": "U+1F1EE U+1F1F2"},
106+
"IN": {"emoji": "🇮🇳","unicode": "U+1F1EE U+1F1F3"},
107+
"IO": {"emoji": "🇮🇴","unicode": "U+1F1EE U+1F1F4"},
108+
"IQ": {"emoji": "🇮🇶","unicode": "U+1F1EE U+1F1F6"},
109+
"IR": {"emoji": "🇮🇷","unicode": "U+1F1EE U+1F1F7"},
110+
"IS": {"emoji": "🇮🇸","unicode": "U+1F1EE U+1F1F8"},
111+
"IT": {"emoji": "🇮🇹","unicode": "U+1F1EE U+1F1F9"},
112+
"JE": {"emoji": "🇯🇪","unicode": "U+1F1EF U+1F1EA"},
113+
"JM": {"emoji": "🇯🇲","unicode": "U+1F1EF U+1F1F2"},
114+
"JO": {"emoji": "🇯🇴","unicode": "U+1F1EF U+1F1F4"},
115+
"JP": {"emoji": "🇯🇵","unicode": "U+1F1EF U+1F1F5"},
116+
"KE": {"emoji": "🇰🇪","unicode": "U+1F1F0 U+1F1EA"},
117+
"KG": {"emoji": "🇰🇬","unicode": "U+1F1F0 U+1F1EC"},
118+
"KH": {"emoji": "🇰🇭","unicode": "U+1F1F0 U+1F1ED"},
119+
"KI": {"emoji": "🇰🇮","unicode": "U+1F1F0 U+1F1EE"},
120+
"KM": {"emoji": "🇰🇲","unicode": "U+1F1F0 U+1F1F2"},
121+
"KN": {"emoji": "🇰🇳","unicode": "U+1F1F0 U+1F1F3"},
122+
"KP": {"emoji": "🇰🇵","unicode": "U+1F1F0 U+1F1F5"},
123+
"KR": {"emoji": "🇰🇷","unicode": "U+1F1F0 U+1F1F7"},
124+
"KW": {"emoji": "🇰🇼","unicode": "U+1F1F0 U+1F1FC"},
125+
"KY": {"emoji": "🇰🇾","unicode": "U+1F1F0 U+1F1FE"},
126+
"KZ": {"emoji": "🇰🇿","unicode": "U+1F1F0 U+1F1FF"},
127+
"LA": {"emoji": "🇱🇦","unicode": "U+1F1F1 U+1F1E6"},
128+
"LB": {"emoji": "🇱🇧","unicode": "U+1F1F1 U+1F1E7"},
129+
"LC": {"emoji": "🇱🇨","unicode": "U+1F1F1 U+1F1E8"},
130+
"LI": {"emoji": "🇱🇮","unicode": "U+1F1F1 U+1F1EE"},
131+
"LK": {"emoji": "🇱🇰","unicode": "U+1F1F1 U+1F1F0"},
132+
"LR": {"emoji": "🇱🇷","unicode": "U+1F1F1 U+1F1F7"},
133+
"LS": {"emoji": "🇱🇸","unicode": "U+1F1F1 U+1F1F8"},
134+
"LT": {"emoji": "🇱🇹","unicode": "U+1F1F1 U+1F1F9"},
135+
"LU": {"emoji": "🇱🇺","unicode": "U+1F1F1 U+1F1FA"},
136+
"LV": {"emoji": "🇱🇻","unicode": "U+1F1F1 U+1F1FB"},
137+
"LY": {"emoji": "🇱🇾","unicode": "U+1F1F1 U+1F1FE"},
138+
"MA": {"emoji": "🇲🇦","unicode": "U+1F1F2 U+1F1E6"},
139+
"MC": {"emoji": "🇲🇨","unicode": "U+1F1F2 U+1F1E8"},
140+
"MD": {"emoji": "🇲🇩","unicode": "U+1F1F2 U+1F1E9"},
141+
"ME": {"emoji": "🇲🇪","unicode": "U+1F1F2 U+1F1EA"},
142+
"MF": {"emoji": "🇲🇫","unicode": "U+1F1F2 U+1F1EB"},
143+
"MG": {"emoji": "🇲🇬","unicode": "U+1F1F2 U+1F1EC"},
144+
"MH": {"emoji": "🇲🇭","unicode": "U+1F1F2 U+1F1ED"},
145+
"MK": {"emoji": "🇲🇰","unicode": "U+1F1F2 U+1F1F0"},
146+
"ML": {"emoji": "🇲🇱","unicode": "U+1F1F2 U+1F1F1"},
147+
"MM": {"emoji": "🇲🇲","unicode": "U+1F1F2 U+1F1F2"},
148+
"MN": {"emoji": "🇲🇳","unicode": "U+1F1F2 U+1F1F3"},
149+
"MO": {"emoji": "🇲🇴","unicode": "U+1F1F2 U+1F1F4"},
150+
"MP": {"emoji": "🇲🇵","unicode": "U+1F1F2 U+1F1F5"},
151+
"MQ": {"emoji": "🇲🇶","unicode": "U+1F1F2 U+1F1F6"},
152+
"MR": {"emoji": "🇲🇷","unicode": "U+1F1F2 U+1F1F7"},
153+
"MS": {"emoji": "🇲🇸","unicode": "U+1F1F2 U+1F1F8"},
154+
"MT": {"emoji": "🇲🇹","unicode": "U+1F1F2 U+1F1F9"},
155+
"MU": {"emoji": "🇲🇺","unicode": "U+1F1F2 U+1F1FA"},
156+
"MV": {"emoji": "🇲🇻","unicode": "U+1F1F2 U+1F1FB"},
157+
"MW": {"emoji": "🇲🇼","unicode": "U+1F1F2 U+1F1FC"},
158+
"MX": {"emoji": "🇲🇽","unicode": "U+1F1F2 U+1F1FD"},
159+
"MY": {"emoji": "🇲🇾","unicode": "U+1F1F2 U+1F1FE"},
160+
"MZ": {"emoji": "🇲🇿","unicode": "U+1F1F2 U+1F1FF"},
161+
"NA": {"emoji": "🇳🇦","unicode": "U+1F1F3 U+1F1E6"},
162+
"NC": {"emoji": "🇳🇨","unicode": "U+1F1F3 U+1F1E8"},
163+
"NE": {"emoji": "🇳🇪","unicode": "U+1F1F3 U+1F1EA"},
164+
"NF": {"emoji": "🇳🇫","unicode": "U+1F1F3 U+1F1EB"},
165+
"NG": {"emoji": "🇳🇬","unicode": "U+1F1F3 U+1F1EC"},
166+
"NI": {"emoji": "🇳🇮","unicode": "U+1F1F3 U+1F1EE"},
167+
"NL": {"emoji": "🇳🇱","unicode": "U+1F1F3 U+1F1F1"},
168+
"NO": {"emoji": "🇳🇴","unicode": "U+1F1F3 U+1F1F4"},
169+
"NP": {"emoji": "🇳🇵","unicode": "U+1F1F3 U+1F1F5"},
170+
"NR": {"emoji": "🇳🇷","unicode": "U+1F1F3 U+1F1F7"},
171+
"NU": {"emoji": "🇳🇺","unicode": "U+1F1F3 U+1F1FA"},
172+
"NZ": {"emoji": "🇳🇿","unicode": "U+1F1F3 U+1F1FF"},
173+
"OM": {"emoji": "🇴🇲","unicode": "U+1F1F4 U+1F1F2"},
174+
"PA": {"emoji": "🇵🇦","unicode": "U+1F1F5 U+1F1E6"},
175+
"PE": {"emoji": "🇵🇪","unicode": "U+1F1F5 U+1F1EA"},
176+
"PF": {"emoji": "🇵🇫","unicode": "U+1F1F5 U+1F1EB"},
177+
"PG": {"emoji": "🇵🇬","unicode": "U+1F1F5 U+1F1EC"},
178+
"PH": {"emoji": "🇵🇭","unicode": "U+1F1F5 U+1F1ED"},
179+
"PK": {"emoji": "🇵🇰","unicode": "U+1F1F5 U+1F1F0"},
180+
"PL": {"emoji": "🇵🇱","unicode": "U+1F1F5 U+1F1F1"},
181+
"PM": {"emoji": "🇵🇲","unicode": "U+1F1F5 U+1F1F2"},
182+
"PN": {"emoji": "🇵🇳","unicode": "U+1F1F5 U+1F1F3"},
183+
"PR": {"emoji": "🇵🇷","unicode": "U+1F1F5 U+1F1F7"},
184+
"PS": {"emoji": "🇵🇸","unicode": "U+1F1F5 U+1F1F8"},
185+
"PT": {"emoji": "🇵🇹","unicode": "U+1F1F5 U+1F1F9"},
186+
"PW": {"emoji": "🇵🇼","unicode": "U+1F1F5 U+1F1FC"},
187+
"PY": {"emoji": "🇵🇾","unicode": "U+1F1F5 U+1F1FE"},
188+
"QA": {"emoji": "🇶🇦","unicode": "U+1F1F6 U+1F1E6"},
189+
"RE": {"emoji": "🇷🇪","unicode": "U+1F1F7 U+1F1EA"},
190+
"RO": {"emoji": "🇷🇴","unicode": "U+1F1F7 U+1F1F4"},
191+
"RS": {"emoji": "🇷🇸","unicode": "U+1F1F7 U+1F1F8"},
192+
"RU": {"emoji": "🇷🇺","unicode": "U+1F1F7 U+1F1FA"},
193+
"RW": {"emoji": "🇷🇼","unicode": "U+1F1F7 U+1F1FC"},
194+
"SA": {"emoji": "🇸🇦","unicode": "U+1F1F8 U+1F1E6"},
195+
"SB": {"emoji": "🇸🇧","unicode": "U+1F1F8 U+1F1E7"},
196+
"SC": {"emoji": "🇸🇨","unicode": "U+1F1F8 U+1F1E8"},
197+
"SD": {"emoji": "🇸🇩","unicode": "U+1F1F8 U+1F1E9"},
198+
"SE": {"emoji": "🇸🇪","unicode": "U+1F1F8 U+1F1EA"},
199+
"SG": {"emoji": "🇸🇬","unicode": "U+1F1F8 U+1F1EC"},
200+
"SH": {"emoji": "🇸🇭","unicode": "U+1F1F8 U+1F1ED"},
201+
"SI": {"emoji": "🇸🇮","unicode": "U+1F1F8 U+1F1EE"},
202+
"SJ": {"emoji": "🇸🇯","unicode": "U+1F1F8 U+1F1EF"},
203+
"SK": {"emoji": "🇸🇰","unicode": "U+1F1F8 U+1F1F0"},
204+
"SL": {"emoji": "🇸🇱","unicode": "U+1F1F8 U+1F1F1"},
205+
"SM": {"emoji": "🇸🇲","unicode": "U+1F1F8 U+1F1F2"},
206+
"SN": {"emoji": "🇸🇳","unicode": "U+1F1F8 U+1F1F3"},
207+
"SO": {"emoji": "🇸🇴","unicode": "U+1F1F8 U+1F1F4"},
208+
"SR": {"emoji": "🇸🇷","unicode": "U+1F1F8 U+1F1F7"},
209+
"SS": {"emoji": "🇸🇸","unicode": "U+1F1F8 U+1F1F8"},
210+
"ST": {"emoji": "🇸🇹","unicode": "U+1F1F8 U+1F1F9"},
211+
"SV": {"emoji": "🇸🇻","unicode": "U+1F1F8 U+1F1FB"},
212+
"SX": {"emoji": "🇸🇽","unicode": "U+1F1F8 U+1F1FD"},
213+
"SY": {"emoji": "🇸🇾","unicode": "U+1F1F8 U+1F1FE"},
214+
"SZ": {"emoji": "🇸🇿","unicode": "U+1F1F8 U+1F1FF"},
215+
"TC": {"emoji": "🇹🇨","unicode": "U+1F1F9 U+1F1E8"},
216+
"TD": {"emoji": "🇹🇩","unicode": "U+1F1F9 U+1F1E9"},
217+
"TF": {"emoji": "🇹🇫","unicode": "U+1F1F9 U+1F1EB"},
218+
"TG": {"emoji": "🇹🇬","unicode": "U+1F1F9 U+1F1EC"},
219+
"TH": {"emoji": "🇹🇭","unicode": "U+1F1F9 U+1F1ED"},
220+
"TJ": {"emoji": "🇹🇯","unicode": "U+1F1F9 U+1F1EF"},
221+
"TK": {"emoji": "🇹🇰","unicode": "U+1F1F9 U+1F1F0"},
222+
"TL": {"emoji": "🇹🇱","unicode": "U+1F1F9 U+1F1F1"},
223+
"TM": {"emoji": "🇹🇲","unicode": "U+1F1F9 U+1F1F2"},
224+
"TN": {"emoji": "🇹🇳","unicode": "U+1F1F9 U+1F1F3"},
225+
"TO": {"emoji": "🇹🇴","unicode": "U+1F1F9 U+1F1F4"},
226+
"TR": {"emoji": "🇹🇷","unicode": "U+1F1F9 U+1F1F7"},
227+
"TT": {"emoji": "🇹🇹","unicode": "U+1F1F9 U+1F1F9"},
228+
"TV": {"emoji": "🇹🇻","unicode": "U+1F1F9 U+1F1FB"},
229+
"TW": {"emoji": "🇹🇼","unicode": "U+1F1F9 U+1F1FC"},
230+
"TZ": {"emoji": "🇹🇿","unicode": "U+1F1F9 U+1F1FF"},
231+
"UA": {"emoji": "🇺🇦","unicode": "U+1F1FA U+1F1E6"},
232+
"UG": {"emoji": "🇺🇬","unicode": "U+1F1FA U+1F1EC"},
233+
"UM": {"emoji": "🇺🇲","unicode": "U+1F1FA U+1F1F2"},
234+
"US": {"emoji": "🇺🇸","unicode": "U+1F1FA U+1F1F8"},
235+
"UY": {"emoji": "🇺🇾","unicode": "U+1F1FA U+1F1FE"},
236+
"UZ": {"emoji": "🇺🇿","unicode": "U+1F1FA U+1F1FF"},
237+
"VA": {"emoji": "🇻🇦","unicode": "U+1F1FB U+1F1E6"},
238+
"VC": {"emoji": "🇻🇨","unicode": "U+1F1FB U+1F1E8"},
239+
"VE": {"emoji": "🇻🇪","unicode": "U+1F1FB U+1F1EA"},
240+
"VG": {"emoji": "🇻🇬","unicode": "U+1F1FB U+1F1EC"},
241+
"VI": {"emoji": "🇻🇮","unicode": "U+1F1FB U+1F1EE"},
242+
"VN": {"emoji": "🇻🇳","unicode": "U+1F1FB U+1F1F3"},
243+
"VU": {"emoji": "🇻🇺","unicode": "U+1F1FB U+1F1FA"},
244+
"WF": {"emoji": "🇼🇫","unicode": "U+1F1FC U+1F1EB"},
245+
"WS": {"emoji": "🇼🇸","unicode": "U+1F1FC U+1F1F8"},
246+
"XK": {"emoji": "🇽🇰","unicode": "U+1F1FD U+1F1F0"},
247+
"YE": {"emoji": "🇾🇪","unicode": "U+1F1FE U+1F1EA"},
248+
"YT": {"emoji": "🇾🇹","unicode": "U+1F1FE U+1F1F9"},
249+
"ZA": {"emoji": "🇿🇦","unicode": "U+1F1FF U+1F1E6"},
250+
"ZM": {"emoji": "🇿🇲","unicode": "U+1F1FF U+1F1F2"},
251+
"ZW": {"emoji": "🇿🇼","unicode": "U+1F1FF U+1F1FC"}
252+
}

ipinfo/handler.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
API_URL,
1818
COUNTRY_FILE_DEFAULT,
1919
COUNTRY_EU_FILE_DEFAULT,
20+
COUNTRY_FLAG_FILE_DEFAULT,
2021
BATCH_MAX_SIZE,
2122
CACHE_MAXSIZE,
2223
CACHE_TTL,
@@ -54,6 +55,13 @@ def __init__(self, access_token=None, **kwargs):
5455
else COUNTRY_EU_FILE_DEFAULT
5556
)
5657

58+
# load countries flags file
59+
self.countries_flags = handler_utils.read_json_file(
60+
kwargs.get("countries_flags_file")
61+
if kwargs.get("countries_flags_file")
62+
else COUNTRY_FLAG_FILE_DEFAULT
63+
)
64+
5765
# setup req opts
5866
self.request_options = kwargs.get("request_options", {})
5967
if "timeout" not in self.request_options:
@@ -110,7 +118,7 @@ def getDetails(self, ip_address=None, timeout=None):
110118

111119
# format & cache
112120
handler_utils.format_details(
113-
details, self.countries, self.eu_countries
121+
details, self.countries, self.eu_countries, self.countries_flags
114122
)
115123
self.cache[cache_key(ip_address)] = details
116124

@@ -231,7 +239,7 @@ def getBatchDetails(
231239
for detail in result.values():
232240
if isinstance(detail, dict):
233241
handler_utils.format_details(
234-
detail, self.countries, self.eu_countries
242+
detail, self.countries, self.eu_countries, self.countries_flags
235243
)
236244

237245
return result

ipinfo/handler_async.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
API_URL,
1919
COUNTRY_EU_FILE_DEFAULT,
2020
COUNTRY_FILE_DEFAULT,
21+
COUNTRY_FLAG_FILE_DEFAULT,
2122
BATCH_MAX_SIZE,
2223
CACHE_MAXSIZE,
2324
CACHE_TTL,
@@ -55,6 +56,13 @@ def __init__(self, access_token=None, **kwargs):
5556
else COUNTRY_EU_FILE_DEFAULT
5657
)
5758

59+
# load countries flags file
60+
self.countries_flags = handler_utils.read_json_file(
61+
kwargs.get("countries_flags_file")
62+
if kwargs.get("countries_flags_file")
63+
else COUNTRY_FLAG_FILE_DEFAULT
64+
)
65+
5866
# setup req opts
5967
self.request_options = kwargs.get("request_options", {})
6068
if "timeout" not in self.request_options:
@@ -133,7 +141,7 @@ async def getDetails(self, ip_address=None, timeout=None):
133141

134142
# format & cache
135143
handler_utils.format_details(
136-
details, self.countries, self.eu_countries
144+
details, self.countries, self.eu_countries, self.countries_flags
137145
)
138146
self.cache[cache_key(ip_address)] = details
139147

@@ -288,7 +296,7 @@ async def _do_batch_req(
288296
for ip_address, details in json_resp.items():
289297
if isinstance(details, dict):
290298
handler_utils.format_details(
291-
details, self.countries, self.eu_countries
299+
details, self.countries, self.eu_countries, self.countries_flags
292300
)
293301
self.cache[cache_key(ip_address)] = details
294302

ipinfo/handler_utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import json
66
import os
77
import sys
8+
import copy
89

910
from .version import SDK_VERSION
1011

@@ -17,6 +18,8 @@
1718

1819
COUNTRY_EU_FILE_DEFAULT = "eu.json"
1920

21+
COUNTRY_FLAG_FILE_DEFAULT = "flags.json"
22+
2023
# The max amount of IPs allowed by the API per batch request.
2124
BATCH_MAX_SIZE = 1000
2225

@@ -52,12 +55,13 @@ def get_headers(access_token):
5255
return headers
5356

5457

55-
def format_details(details, countries, eu_countries):
58+
def format_details(details, countries, eu_countries, countries_flags):
5659
"""
5760
Format details given a countries object.
5861
"""
5962
details["country_name"] = countries.get(details.get("country"))
6063
details["isEU"] = details.get("country") in eu_countries
64+
details["country_flag"] = copy.deepcopy(countries_flags.get(details.get("country")))
6165
details["latitude"], details["longitude"] = read_coords(details.get("loc"))
6266

6367

0 commit comments

Comments
 (0)