-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate_country_pages.py
89 lines (74 loc) · 3.36 KB
/
generate_country_pages.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
from collections import Counter
from jinja2 import Environment, FileSystemLoader
import utils.zone_helpers
import utils.helpers
import handle_channel_data
from slugify import slugify
def main():
dir_path_countries = 'templates/countries'
utils.helpers.empty_and_create_dir(dir_path_countries)
dir_path_countries_es = 'templates/countries/es'
utils.helpers.empty_and_create_dir(dir_path_countries_es)
dir_path_states = 'templates/states'
utils.helpers.empty_and_create_dir(dir_path_states)
country_data = utils.MadBoulderDatabase.getCountriesData()
playlists = utils.MadBoulderDatabase.getPlaylistsData()
areasData = utils.MadBoulderDatabase.getAreasData()
template_loader = FileSystemLoader(searchpath='.')
template_env = Environment(loader=template_loader)
for country_code, country in country_data.items():
print("generating country: " + country_code)
country_name = country.get("name", [""])[0]
areas = utils.zone_helpers.get_areas_from_country(country_code, areasData)
states=country.get("states", {})
overview=country['overview'][0]
area_state_codes = [area.get("state", '') for area in areas.values()]
state_code_counts = Counter(area_state_codes)
for state_code, state in states.items():
if 'count' in state:
state['count'] += state_code_counts[state_code]
else:
state['count'] = state_code_counts[state_code]
template = template_env.get_template(
'templates/templates/country_page_template.html')
output = template.render(
country_code=country_code,
country_name=country_name,
states=states,
areas=areas,
playlists=playlists,
overview=overview
)
with open(f'templates/countries/{slugify(country_name)}.html', 'w', encoding='utf-8') as template:
template.write(output)
country_name_es = country.get("name", [""])[1]
overview_es=country['overview'][1]
template = template_env.get_template(
'templates/templates/es/country_page_template.html')
output = template.render(
country_code=country_code,
country_name=country_name_es,
states=states,
areas=areas,
playlists=playlists,
overview=overview_es
)
with open(f'templates/countries/es/{slugify(country_name)}.html', 'w', encoding='utf-8') as template:
template.write(output)
for state_code, state in states.items():
state_name = state.get("name", [""])[0]
print("generating state: " + state_code)
state_areas = utils.zone_helpers.get_areas_from_state(state_code, areasData)
state_template = template_env.get_template('templates/templates/state_page_template.html')
state_output = state_template.render(
country_code=country_code,
country_name=country_name,
state_code=state_code,
state_name=state_name,
areas=state_areas,
playlists=playlists
)
with open(f'templates/states/{state_code}.html', 'w', encoding='utf-8') as state_template:
state_template.write(state_output)
if __name__ == '__main__':
main()