mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-18 20:39:36 +02:00
87 lines
No EOL
3.1 KiB
Python
87 lines
No EOL
3.1 KiB
Python
import requests
|
|
import json
|
|
import os
|
|
|
|
# The version of the CDN, this should be updated when the CDN data is updated so the client can check if it has the latest version
|
|
ADVENTURELOG_CDN_VERSION = 'v0.0.1'
|
|
|
|
# https://github.com/dr5hn/countries-states-cities-database/tags
|
|
COUNTRY_REGION_JSON_VERSION = 'v2.5' # Test on past and latest versions to ensure that the data schema is consistent before updating
|
|
|
|
def makeDataDir():
|
|
"""
|
|
Creates the data directory if it doesn't exist
|
|
"""
|
|
path = os.path.join(os.path.dirname(__file__), 'data')
|
|
if not os.path.exists(path):
|
|
os.makedirs(path)
|
|
|
|
def saveCdnVersion():
|
|
"""
|
|
Saves the CDN version to a JSON file so the client can check if it has the latest version
|
|
"""
|
|
path = os.path.join(os.path.dirname(__file__), 'data', 'version.json')
|
|
with open(path, 'w') as f:
|
|
json.dump({'version': ADVENTURELOG_CDN_VERSION}, f)
|
|
print('CDN Version saved')
|
|
|
|
def downloadCountriesStateCities():
|
|
"""
|
|
Downloads the countries, states and cities data from the countries-states-cities-database repository
|
|
"""
|
|
res = requests.get(f'https://raw.githubusercontent.com/dr5hn/countries-states-cities-database/{COUNTRY_REGION_JSON_VERSION}/json/countries%2Bstates%2Bcities.json')
|
|
|
|
path = os.path.join(os.path.dirname(__file__), 'data', f'countries_states_cities.json')
|
|
|
|
with open(path, 'w') as f:
|
|
f.write(res.text)
|
|
print('Countries, states and cities data downloaded successfully')
|
|
|
|
def saveCountryFlag(country_code, name):
|
|
"""
|
|
Downloads the flag of a country and saves it in the data/flags directory
|
|
"""
|
|
# For standards, use the lowercase country_code
|
|
country_code = country_code.lower()
|
|
# Save the flag in the data/flags directory
|
|
flags_dir = os.path.join(os.path.dirname(__file__), 'data', 'flags')
|
|
|
|
# Check if the flags directory exists, if not, create it
|
|
if not os.path.exists(flags_dir):
|
|
os.makedirs(flags_dir)
|
|
|
|
# Check if the flag already exists in the media folder
|
|
flag_path = os.path.join(flags_dir, f'{country_code}.png')
|
|
if os.path.exists(flag_path):
|
|
# remove the flag if it already exists
|
|
os.remove(flag_path)
|
|
print(f'Flag for {country_code} ({name}) removed')
|
|
|
|
res = requests.get(f'https://flagcdn.com/h240/{country_code}.png'.lower())
|
|
if res.status_code == 200:
|
|
with open(flag_path, 'wb') as f:
|
|
f.write(res.content)
|
|
print(f'Flag for {country_code} downloaded')
|
|
else:
|
|
print(f'Error downloading flag for {country_code} ({name})')
|
|
|
|
def saveCountryFlags():
|
|
"""
|
|
Downloads the flags of all countries and saves them in the data/flags directory
|
|
"""
|
|
# Load the countries data
|
|
with open(os.path.join(os.path.dirname(__file__), 'data', f'countries_states_cities.json')) as f:
|
|
data = json.load(f)
|
|
|
|
for country in data:
|
|
country_code = country['iso2']
|
|
name = country['name']
|
|
saveCountryFlag(country_code, name)
|
|
|
|
# Run the functions
|
|
print('Starting CDN update')
|
|
makeDataDir()
|
|
saveCdnVersion()
|
|
downloadCountriesStateCities()
|
|
saveCountryFlags()
|
|
print('CDN update complete') |