Skip to content

Commit 9c2c58c

Browse files
committed
test: country counts
1 parent 09b4754 commit 9c2c58c

File tree

2 files changed

+296
-1
lines changed

2 files changed

+296
-1
lines changed

scratchattach/other/other_apis.py

Lines changed: 291 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,313 @@ class TotalSiteStats(TypedDict):
6060
COMMENT_COUNT: int
6161
PROJECT_COMMENT_COUNT: int
6262

63+
6364
def total_site_stats() -> TotalSiteStats:
6465
data = requests.get("https://scratch.mit.edu/statistics/data/daily/").json()
6566
data.pop("_TS")
6667
return data
6768

69+
6870
class MonthlySiteTraffic(TypedDict):
6971
pageviews: str
7072
users: str
7173
sessions: str
7274

75+
7376
def monthly_site_traffic() -> MonthlySiteTraffic:
7477
data = requests.get("https://scratch.mit.edu/statistics/data/monthly-ga/").json()
7578
data.pop("_TS")
7679
return data
7780

7881

79-
def country_counts():
82+
type CountryCounts = TypedDict("CountryCounts", {
83+
'0': int, # not sure what 0 is. maybe it's the 'other' category
84+
'AT': int,
85+
'Afghanistan': int,
86+
'Aland Islands': int,
87+
'Albania': int,
88+
'Algeria': int,
89+
'American Samoa': int,
90+
'Andorra': int,
91+
'Angola': int,
92+
'Anguilla': int,
93+
'Antigua and Barbuda': int,
94+
'Argentina': int,
95+
'Armenia': int,
96+
'Aruba': int,
97+
'Australia': int,
98+
'Austria': int,
99+
'Azerbaijan': int,
100+
'Bahamas': int,
101+
'Bahrain': int,
102+
'Bangladesh': int,
103+
'Barbados': int,
104+
'Belarus': int,
105+
'Belgium': int,
106+
'Belize': int,
107+
'Benin': int,
108+
'Bermuda': int,
109+
'Bhutan': int,
110+
'Bolivia': int,
111+
'Bonaire, Sint Eustatius and Saba': int,
112+
'Bosnia and Herzegovina': int,
113+
'Botswana': int,
114+
'Bouvet Island': int,
115+
'Brazil': int,
116+
'British Indian Ocean Territory': int,
117+
'Brunei': int,
118+
'Brunei Darussalam': int,
119+
'Bulgaria': int,
120+
'Burkina Faso': int,
121+
'Burundi': int,
122+
'CA': int,
123+
'Cambodia': int,
124+
'Cameroon': int,
125+
'Canada': int,
126+
'Cape Verde': int,
127+
'Cayman Islands': int,
128+
'Central African Republic': int,
129+
'Chad': int,
130+
'Chile': int,
131+
'China': int,
132+
'Christmas Island': int,
133+
'Cocos (Keeling) Islands': int,
134+
'Colombia': int,
135+
'Comoros': int,
136+
'Congo': int,
137+
'Congo, Dem. Rep. of The': int,
138+
'Congo, The Democratic Republic of The': int,
139+
'Cook Islands': int,
140+
'Costa Rica': int,
141+
"Cote D'ivoire": int,
142+
'Croatia': int,
143+
'Cuba': int,
144+
'Curacao': int,
145+
'Cyprus': int,
146+
'Czech Republic': int,
147+
'Denmark': int,
148+
'Djibouti': int,
149+
'Dominica': int,
150+
'Dominican Republic': int,
151+
'Ecuador': int,
152+
'Egypt': int,
153+
'El Salvador': int,
154+
'England': int,
155+
'Equatorial Guinea': int,
156+
'Eritrea': int,
157+
'Estonia': int,
158+
'Ethiopia': int,
159+
'Falkland Islands (Malvinas)': int,
160+
'Faroe Islands': int,
161+
'Fiji': int,
162+
'Finland': int,
163+
'France': int,
164+
'French Guiana': int,
165+
'French Polynesia': int,
166+
'French Southern Territories': int,
167+
'GB': int,
168+
'GG': int,
169+
'Gabon': int,
170+
'Gambia': int,
171+
'Georgia': int,
172+
'Germany': int,
173+
'Ghana': int,
174+
'Gibraltar': int,
175+
'Greece': int,
176+
'Greenland': int,
177+
'Grenada': int,
178+
'Guadeloupe': int,
179+
'Guam': int,
180+
'Guatemala': int,
181+
'Guernsey': int,
182+
'Guinea': int,
183+
'Guinea-Bissau': int,
184+
'Guyana': int,
185+
'Haiti': int,
186+
'Heard Island and Mcdonald Islands': int,
187+
'Holy See (Vatican City State)': int,
188+
'Honduras': int,
189+
'Hong Kong': int,
190+
'Hungary': int,
191+
'IT': int,
192+
'Iceland': int,
193+
'India': int,
194+
'Indonesia': int,
195+
'Iran': int,
196+
'Iran, Islamic Republic of': int,
197+
'Iraq': int,
198+
'Ireland': int,
199+
'Isle of Man': int,
200+
'Israel': int,
201+
'Italy': int,
202+
'Jamaica': int,
203+
'Japan': int,
204+
'Jersey': int,
205+
'Jordan': int,
206+
'Kazakhstan': int,
207+
'Kenya': int,
208+
'Kiribati': int,
209+
"Korea, Dem. People's Rep.": int,
210+
"Korea, Democratic People's Republic of": int,
211+
'Korea, Republic of': int,
212+
'Kosovo': int,
213+
'Kuwait': int,
214+
'Kyrgyzstan': int,
215+
'Laos': int,
216+
'Latvia': int,
217+
'Lebanon': int,
218+
'Lesotho': int,
219+
'Liberia': int,
220+
'Libya': int,
221+
'Libyan Arab Jamahiriya': int,
222+
'Liechtenstein': int,
223+
'Lithuania': int,
224+
'Location not given': int,
225+
'Luxembourg': int,
226+
'Macao': int,
227+
'Macedonia': int,
228+
'Macedonia, The Former Yugoslav Republic of': int,
229+
'Madagascar': int,
230+
'Malawi': int,
231+
'Malaysia': int,
232+
'Maldives': int,
233+
'Mali': int,
234+
'Malta': int,
235+
'Marshall Islands': int,
236+
'Martinique': int,
237+
'Mauritania': int,
238+
'Mauritius': int,
239+
'Mayotte': int,
240+
'Mexico': int,
241+
'Micronesia, Federated States of': int,
242+
'Moldova': int,
243+
'Moldova, Republic of': int,
244+
'Monaco': int,
245+
'Mongolia': int,
246+
'Montenegro': int,
247+
'Montserrat': int,
248+
'Morocco': int,
249+
'Mozambique': int,
250+
'Myanmar': int,
251+
'NO': int,
252+
'Namibia': int,
253+
'Nauru': int,
254+
'Nepal': int,
255+
'Netherlands': int,
256+
'Netherlands Antilles': int,
257+
'New Caledonia': int,
258+
'New Zealand': int,
259+
'Nicaragua': int,
260+
'Niger': int,
261+
'Nigeria': int,
262+
'Niue': int,
263+
'Norfolk Island': int,
264+
'North Korea': int,
265+
'Northern Mariana Islands': int,
266+
'Norway': int,
267+
'Oman': int,
268+
'Pakistan': int,
269+
'Palau': int,
270+
'Palestine': int,
271+
'Palestine, State of': int,
272+
'Palestinian Territory, Occupied': int,
273+
'Panama': int,
274+
'Papua New Guinea': int,
275+
'Paraguay': int,
276+
'Peru': int,
277+
'Philippines': int,
278+
'Pitcairn': int,
279+
'Poland': int,
280+
'Portugal': int,
281+
'Puerto Rico': int,
282+
'Qatar': int,
283+
'Reunion': int,
284+
'Romania': int,
285+
'Russia': int,
286+
'Russian Federation': int,
287+
'Rwanda': int,
288+
'ST': int,
289+
'Saint Barthelemy': int,
290+
'Saint Helena': int,
291+
'Saint Kitts and Nevis': int,
292+
'Saint Lucia': int,
293+
'Saint Martin': int,
294+
'Saint Pierre and Miquelon': int,
295+
'Saint Vincent and The Grenadines': int,
296+
'Samoa': int,
297+
'San Marino': int,
298+
'Sao Tome and Principe': int,
299+
'Saudi Arabia': int,
300+
'Senegal': int,
301+
'Serbia': int,
302+
'Serbia and Montenegro': int,
303+
'Seychelles': int,
304+
'Sierra Leone': int,
305+
'Singapore': int,
306+
'Sint Maarten': int,
307+
'Slovakia': int,
308+
'Slovenia': int,
309+
'Solomon Islands': int,
310+
'Somalia': int,
311+
'Somewhere': int,
312+
'South Africa': int,
313+
'South Georgia and the South Sandwich Islands': int,
314+
'South Korea': int,
315+
'South Sudan': int,
316+
'Spain': int,
317+
'Sri Lanka': int,
318+
'St. Vincent': int,
319+
'Sudan': int,
320+
'Suriname': int,
321+
'Svalbard and Jan Mayen': int,
322+
'Swaziland': int,
323+
'Sweden': int,
324+
'Switzerland': int,
325+
'Syria': int,
326+
'Syrian Arab Republic': int,
327+
'TV': int,
328+
'Taiwan': int,
329+
'Taiwan, Province of China': int,
330+
'Tajikistan': int,
331+
'Tanzania': int,
332+
'Tanzania, United Republic of': int,
333+
'Thailand': int,
334+
'Timor-leste': int,
335+
'Togo': int,
336+
'Tokelau': int,
337+
'Tonga': int,
338+
'Trinidad and Tobago': int,
339+
'Tunisia': int,
340+
'Turkey': int,
341+
'Turkmenistan': int,
342+
'Turks and Caicos Islands': int,
343+
'Tuvalu': int,
344+
'US': int,
345+
'US Minor': int,
346+
'Uganda': int,
347+
'Ukraine': int,
348+
'United Arab Emirates': int,
349+
'United Kingdom': int,
350+
'United States': int,
351+
'United States Minor Outlying Islands': int,
352+
'Uruguay': int,
353+
'Uzbekistan': int,
354+
'Vanuatu': int,
355+
'Vatican City': int,
356+
'Venezuela': int,
357+
'Viet Nam': int,
358+
'Vietnam': int,
359+
'Virgin Islands, British': int,
360+
'Virgin Islands, U.S.': int,
361+
'Wallis and Futuna': int,
362+
'Western Sahara': int,
363+
'Yemen': int,
364+
'Zambia': int,
365+
'Zimbabwe': int
366+
})
367+
368+
369+
def country_counts() -> CountryCounts:
80370
return requests.get("https://scratch.mit.edu/statistics/data/monthly/").json()["country_distribution"]
81371

82372

tests/test_other_apis.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,10 @@ def test_featured_data(name, data: list[dict[str, str | int]]):
5252
assert int(site_traffic["users"]) > 10000
5353
assert int(site_traffic["sessions"]) > 10000
5454

55+
country_counts = sa.country_counts()
56+
for name, count in country_counts.items():
57+
assert count > 0, f"country_counts[{name!r}] = {count}"
58+
59+
5560
if __name__ == "__main__":
5661
test_activity()

0 commit comments

Comments
 (0)