Download bank-holidays.json if the local copy is unreadable
This commit is contained in:
		
							parent
							
								
									7a5319aa83
								
							
						
					
					
						commit
						acbad39df7
					
				| 
						 | 
				
			
			@ -8,7 +8,7 @@ from time import time
 | 
			
		|||
import httpx
 | 
			
		||||
from dateutil.easter import easter
 | 
			
		||||
 | 
			
		||||
from .types import Holiday
 | 
			
		||||
from .types import Holiday, StrDict
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def bank_holiday_list(
 | 
			
		||||
| 
						 | 
				
			
			@ -17,13 +17,23 @@ async def bank_holiday_list(
 | 
			
		|||
    """Date and name of the next UK bank holiday."""
 | 
			
		||||
    url = "https://www.gov.uk/bank-holidays.json"
 | 
			
		||||
    filename = os.path.join(data_dir, "bank-holidays.json")
 | 
			
		||||
    mtime = os.path.getmtime(filename)
 | 
			
		||||
    if (time() - mtime) > 60 * 60 * 6:  # six hours
 | 
			
		||||
    use_cached = False
 | 
			
		||||
    events: list[StrDict]
 | 
			
		||||
    if os.path.exists(filename):
 | 
			
		||||
        mtime = os.path.getmtime(filename)
 | 
			
		||||
        if (time() - mtime) < 60 * 60 * 6:  # six hours
 | 
			
		||||
            use_cached = True
 | 
			
		||||
            try:
 | 
			
		||||
                events = json.load(open(filename))["england-and-wales"]["events"]
 | 
			
		||||
            except json.decoder.JSONDecodeError:
 | 
			
		||||
                use_cached = False
 | 
			
		||||
 | 
			
		||||
    if not use_cached:
 | 
			
		||||
        async with httpx.AsyncClient() as client:
 | 
			
		||||
            r = await client.get(url)
 | 
			
		||||
        open(filename, "w").write(r.text)
 | 
			
		||||
        events = json.load(open(filename))["england-and-wales"]["events"]
 | 
			
		||||
 | 
			
		||||
    events = json.load(open(filename))["england-and-wales"]["events"]
 | 
			
		||||
    hols: list[Holiday] = []
 | 
			
		||||
    for event in events:
 | 
			
		||||
        event_date = datetime.strptime(event["date"], "%Y-%m-%d").date()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue