Create a Github Workflow to keep currencies in sync from API

This commit is contained in:
Katos
2024-07-14 15:52:25 +01:00
committed by GitHub
parent 625730f37c
commit 967e574ea8
2 changed files with 74 additions and 0 deletions

37
.github/scripts/update_currencies.py vendored Normal file
View File

@@ -0,0 +1,37 @@
import requests
import json
import os
def fetch_currencies():
response = requests.get('https://restcountries.com/v3.1/all')
response.raise_for_status()
countries = response.json()
currencies_list = []
for country in countries:
country_name = country.get('name', {}).get('common')
country_currencies = country.get('currencies', {})
for currency_code, currency_info in country_currencies.items():
symbol = currency_info.get('symbol', '')
# Directly use the symbol as it is
currencies_list.append({
'code': currency_code,
'local': country_name,
'symbol': symbol,
'name': currency_info.get('name')
})
return currencies_list
def save_currencies(currencies, file_path):
os.makedirs(os.path.dirname(file_path), exist_ok=True)
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(currencies, f, ensure_ascii=False, indent=4)
def main():
currencies = fetch_currencies()
save_path = 'backend/internal/core/currencies/currencies.json'
save_currencies(currencies, save_path)
if __name__ == "__main__":
main()

37
.github/workflows/update-currencies.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: Update Currencies
on:
push:
branches:
- main
workflow_dispatch:
jobs:
update-currencies:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install requests
- name: Fetch and update currencies
run: python .github/scripts/update_currencies.py
- name: Commit and push changes
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add backend/internal/core/currencies/currencies.json
git commit -m "Update currencies JSON"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}